量子力学シミュレーション
Important
この章を読む前に
この章を読むには、以下の章を先に読んでおく必要があります。
量子力学は、原子や分子、半導体デバイスなど、微細なスケールの世界を支配する物理法則です。 その中心となるシュレーディンガー方程式は、解析的に解ける場合が非常に限られているため、数値シミュレーションが不可欠な分野です。
本章では、量子力学の基本方程式をコンピュータ上で解くための手法を学び、いくつかの代表的な量子現象をシミュレーションします。
本章の構成
-
シュレーディンガー方程式の数値解法 連続的な波動関数を離散化し、ハミルトニアンを行列として表現する方法(差分法)を学びます。また、Rustにおける複素数の扱い方も紹介します。
-
1次元束縛状態 時間的に変化しない定常状態(固有状態)を求める問題を扱います。井戸型ポテンシャルなどを例に、エネルギー準位の計算を行います。
-
時間発展とスプリット演算子法 波動関数の時間変化を追跡するための手法(クランク・ニコルソン法、スプリット演算子法)について解説します。
-
散乱問題とトンネル効果 ポテンシャル障壁に対する波束の衝突をシミュレーションし、量子力学特有の現象であるトンネル効果を観測します。
作業テーマ
作業ディレクトリは ~/rust-computational-physics-work/ からの相対パスです。
ユニットテストで確認する具体的なケースは、解析解、境界条件、許容誤差の観点からAI coding agentと相談して決めます。
| テーマ | 作業ディレクトリ | 構造化するコード | ユニットテスト演習 | 拡張演習 |
|---|---|---|---|---|
| Schrodinger方程式 | quantum-mechanics/schrodinger | build_grid, potential, hamiltonian | 小さい格子でHamiltonianの対称性を確認する | grid spacingと境界条件をmetadataに保存する |
| 1次元束縛状態 | quantum-mechanics/bound-states | solve_eigenstates, normalize, expectation_energy | 井戸型ポテンシャルの低い準位を確認する | 固有状態とエネルギーをCSVに出力する |
| 時間発展 | quantum-mechanics/time-evolution | step_crank_nicolson, step_split_operator, norm | norm保存を許容誤差つきで確認する | time stepを変えたnorm driftを比較する |
| 散乱問題 | quantum-mechanics/scattering | wave_packet, barrier, transmission_probability | 初期波束の規格化を確認する | 透過率の障壁幅依存をCSVに出力する |
検証と実装の観点
量子力学の数値計算では、複素数、境界条件、規格化、単位系を明示します。 固有値や時間発展の結果は、見た目だけでなく、norm、energy、residualで確認します。
- grid、potential、Hamiltonian、solver、出力処理を分けて実装する。
- 固有値問題では residual、時間発展では norm保存を確認する。
- grid spacing、time step、境界条件、初期波束、potential parameterをmetadataとして残す。
- agentに実装を任せた場合も、複素共役、正規化、境界条件の扱いをdiffで確認する。