【量子力学再入門9】
シュレディンガー方程式の数値解法(スペクトル法)
量子力学とは原子や電子といったナノスケールにおける粒子の運動を記述する物理学の一分野です。 メートルスケールで成り立つ「ニュートンの運動方程式」に対して、量子力学では「シュレディンガー方程式」と呼ばれる基礎方程式が成り立つと考えられています。これまでは解析的に得られている固有関数の重ねあわせで波束の運動をシミュレーションしました。 しかしながら、シュレディンガー方程式で固有関数が解析的に得られるのは非常に稀な系だけで、多くの系では数値的に計算する必要があります。 そこで本稿ではスペクトル法と呼ばれるシュレディンガー方程式の数値解法を導入します。
スペクトル法による解法
シュレディンガー方程式は波動方程式なので解は一般の有限差分法による数値計算を行うことができます。本稿では有限差分法よりも高精度な計算が可能なスペクトル法というアルゴリズムを用います。スペクトル法というのは、求めたい波動関数を正規直交系で展開した展開係数の時間発展を計算するというアルゴリズムで、最も簡単なのはフーリエ級数展開を用いるものです。 シュレディンガー方程式から展開係数の時間発展を表す常微分方程式を導きます。波動関数とポテンシャル項を
と波数空間で展開して、時間依存性はその係数部分に含めます()。これらを元のシュレディンガー方程式に代入します。
となるので、最終的に次の表式が導かれます。
これはn=0~N-1までのN個の連立常微分方程式となっています。本稿ではこれをルンゲ・クッタ法を用いて解きます。
シミュレーション結果
中心エネルギーE0 = 0 の波束の時間発展と解析解との差である計算誤差を示します。
波動関数の空間分布
計算誤差
計算パラメータ
空間スケール 1E-11[m];//横軸の値
時間スケール 1E-14[s];//1コマの時間
数値計算の時間間隔1E-16[s]
考察と次の課題
・ポテンシャルが存在しない系で動作は確認できた。
・次は箱型ポテンシャル障壁に波束を衝突させる系で誤差チェックを行う。
プログラムソース(C++)
・http://www.natural-science.or.jp/files/physics/QuantumPhysics_OpenMP.zip
※VisualC++、GCC(MinGW)で動作確認しています。