このオッサンがすごい2025~o3-miniを利用した光学応答のPython実装

 【イントロ】
前回のアドベントカレンダー記事では、固体の光学応答を解析する際に利用されるクラマース・クローニッヒ変換(KK変換)をAIを用いて実装に取り組む記事を報告しました。
その際は、Anthoropic社の提供するチャット型AI、Claudeを利用することでコード生成を行いました。
生成においては、Claudeが出力したPythonコードをGoogle Colab上で実行し、エラーをClaudeに再質問することで、期待される振る舞いを出力するコードを作成しました。
つまり、コード実行にはある程度の修正対応が必要でした。

さて、2025年1月31日、OpenAI社が新型のAI、o3-miniをリリースしました。
「小規模で高速ながら、特に科学、数学、コーディングに強みを発揮」するとの触れ込みで、ますますAIの活躍の幅が広がる可能性を期待させてくれます。(Impress watch参考)

今回の記事では、このオッサンミニ、ではなくo3-miniを利用することで、よりよいPythonコードの作成体験が実現できるのではないかと考え、前回に引き続き、KK変換の実装に取り組みました。
結論、このオッサン・・・すごいです。

元気なおじさんの画像(いらすとや)

【方法】
o3-miniはChatGPTの無料ユーザーにも提供されていたため、その機能を利用しました。
以下のプロンプトでコード生成を指示しました
”””
あなたは物理学の専門家で、Pythonのプロフェッショナルです。波数と反射率のデータをクラマース・クローニッヒ変換し、光学伝導度を出力するPythonコードを書いてください。ただし、反射率はDrudeの式に基づく金属の場合を例としてください。
”””
ChatGPTの指示と応答

【結果】
プロンプトを送信すると、o3-miniにより推論が始まり、その次にKK変換の実行手順の解説とPythonコードの実装が始まります。そして出力されたPythonコードをGoogle Colabで実行すると・・・なんと!一発で動作しました。
なんということでしょう。これは驚き屋が湧き上がるのも納得です。
ドルーデモデルの誘電率から直接求めた光学伝導度と、KK変換を挟んで出力した光学伝導度の比較

ここで得られた結果を利用して、KK変換の振る舞い、そしてモデルのパラメータ依存性を可視化することを行いました。

【基本の説明】
一般に固体、特に金属の光学応答は、自由電子による応答を反映するドルーデモデルと、フォノンやバンド間遷移による応答を反映するローレンツモデルによりモデル化することができます。
反射率と光学伝導度に対して、それぞれのモデルは以下のような振る舞いを示します。光学伝導度に関しては特に断りがなければ実部の振る舞いを議論します。また、波数と周波数を区別せず説明している部分がありますが、相互に変換可能な単位のため、必要に応じて読み替えるものとします。揃えるの大変なので。
  • 反射率
    • ドルーデ成分:ゼロ波数に向かって反射率が1に向かって上昇する振る舞い。特にプラズマ周波数と呼ばれるエネルギー以下で反射率が急上昇する。これは、入射電磁波に応じる自由電子により電磁波が放出されるが、これ以上の周波数では自由電子が電磁波の振動に追随できず、電磁波を反射できないと解釈できる。
    • ローレンツ成分:有限周波数にピークを持つ構造。バンド間遷移やフォノン振動に対応するエネルギーで電磁波が反射されると解釈できる
  • 光学伝導度
    • ドルーデ成分:ゼロ波数に向かってピークをもつ構造
    • ローレンツ成分:有限周波数にピークをもつ構造



【KK変換の振る舞い】
よくある実験としては、フーリエ変換型赤外分光法(FT-IR)で得られた光学反射率の波数依存性をKK変換して光学伝導度を求めることが行われます。
KK変換の難しい点は、その計算中に発散のある主値積分が含まれる点と、積分範囲として0から無限大までの波数成分が必要な点です。
実験で得られる光学反射率は有限成分までに限られるため、可能な限り高エネルギーまで測定を行い、更にそれ以上の波数成分は外挿して補間する処理が必要となります。
ここで気になるのは、以下の2点です。
①高波数成分が少ないとどうなるのか
②波数の分解能の影響はどの程度あるか

まず、①の点について比較を行いました。
測定点数を5万に固定し、積分範囲を1から10万cm-1までにした場合と、1から50万cm-1にした場合で、KK変換の結果を比較しました。結果として、積分範囲を広く取らないと、KK変換後の光学伝導度の振る舞いがマイナスの値を示すという非物理的な結果になることが確認できました。KK変換のために高周波数側までのデータ必要となる所以がここにあります。


次に②の点について比較を行いました。
積分範囲を1から10万cm-1に固定し、測定点数を1万から2万に増やした場合で、KK変換の結果を比較しました。結果として、測定点数を増やしても非物理的な振る舞いを示すKK変換後の結果は変わらないことが確認できました。

上記比較から、KK変換の妥当性を確保するためには、測定分解能をむやみに上げるよりも、高周波数側(と低周波数側)のデータの取得が重要であると考えられます。

【モデルのパラメータ依存性】
このパートでは、モデルのパラメータ依存性、特にドルーデモデルの散乱率とプラズマ周波数依存性について可視化を行いました。
まず、散乱率の依存性です。散乱率を100から1000cm-1まで変化させた場合の振る舞いです。
散乱率は、文字通り電子の散乱される確率を意味しています。一般に金属の抵抗率は低温ほど小さくなります。これは低温では電子の格子による散乱が抑制され、さらに電子間の散乱の抑制されるため、低温ほど散乱率が小さくなることが期待されます。
以下図では、散乱率が小さくなるほど、反射率が高くなっており、低温ほど反射率が高くなることが確認できます。この反射率をKK変換したあとの光学伝導度も、散乱率が小さいゼロ波数のピークの幅が狭くなりゼロ波数の伝導度が高くなっており、抵抗率の振る舞いと一致しています(ゼロ波数の光学伝導度、つまり直流伝導度の逆数が抵抗率のため)。

次にプラズマ周波数の依存性です。プラズマ周波数(の自乗)は自由電子のキャリア密度に比例し、有効質量に反比例します。軽い電子ほど電磁波の振動に追随しやすいのでプラズマ周波数は高くなりそうなので、直感にも一致しています。尻軽ですね、電子ちゃん。
実際プラズマ周波数を1万から2万cm-1まで変化させたとき、反射率の立ち上がりが高波数側に移動していることがわかります。また同時に、光学伝導度のピークの高さが大きくなっていることがみてとれます。キャリア密度が多く電子が軽いほど電流が流れやすい、つまり伝導度が増加するという直感とも一致する振る舞いになっています。
金属はこの反射率の1への立ち上がり周波数の存在と、光学伝導度のゼロ周波数ピークの存在が特徴となっています。

【まとめ】
オッサンミニ、じゃなくてo3-miniすごい!
簡単な質問を投げかけるだけで、実行可能なPythonコードを出力してくれました。この他にも、電気抵抗の久保公式MuSRのKubo-Toyabe関数比熱のBCS的温度依存性も簡単な質問だけで実装できることが確認できました。AIの数学、物理学の知識とコード実装能力の進化を感じます。この能力を利用すれば、論文に記載されている式の手元での再現や、パラメータ変化させたときの比較、そして実験結果とのフィッティングなども容易になることが期待できます。
もちろん、出力される結果が妥当な内容か検証できる能力は重要ですが、最初のたたき台をすごいスピードで作ってくれるのは助かります。
研究において基本的にコーディングは本来悩むべき目的ではなく、手段に過ぎません。AIと上手に付き合って、研究のスピードを加速させていきたいですね。
走り続けるおっさん(いらすとや

【実行コード】
以下は、実際に実行した際のGoogle ColabのPythonコードです。


20250201_KK変換_ChatGPT

コメント

このブログの人気の投稿

拙著はリジェクト また…流れるでござるよ~逆オッカムの剃刀を使って論文を魅力的に~

交代磁性があるのかないのかどっちなんだい!~RuO2の場合~

狂気!室温超伝導体は脳内にあった!!!