Method,FEM)で,数値的に解いてみることにします。有限要素法自体については,この記事ではあまり深入りしません(有限要素法自体の解説は,@Sunset_Yuhi様のこちらの記事や、参考文献1,参考文献2などが分かりやすいのではないかと思います)。\quad(1)となります。$式を,3次元有限要素で離散化して数値的に解きたいところですが,正直に言って,3次元有限要素法は複雑なのであまりやりたくありません。従って,今回は,水素原子の基底状態(1s状態)のエネルギー固有値と波動関数(固有関数)のみを求めることにします。\quad(2)となります(1次元なので,偏微分記号の代わりに常微分記号を用いました)。\quad(3)となります。$式を1次元有限要素で離散化して数値的に解くことにします。$を乗じて,全空間で部分積分することにより,弱形式にしていきましょう。$は等しくなります)。$式括弧の中の第2項と第3項が原点で発散してしまうので,原点から積分できない点です。$を両辺に乗じてから部分積分することで解決できます。\quad(4)となります。\quad(5)を,部分積分することになります。\quad(6)を,境界条件として設定してやります。\quad(7)なる,弱形式が得られます(この計算は,こちらを参照してください)。$式から要素行列を生成していきましょう。\quad(8)なる式が得られます。\quad(12)となります。通常の微分方程式を有限要素で離散化すると,左辺がローカル行列と各要素における未知係数ベクトルの積で,右辺がベクトルの連立方程式が得られます。Schrödinger方程式を有限要素で離散化すると,左辺と右辺にローカル行列が一つずつ現れ,行列方程式となります。$も未知数であるためです。$は,次の行列方程式を満たします(参考文献3)。\quad(19)となります。\quad(22)となります(この計算は,こちらを参照してください)。$が満たす行列方程式を生成します。$式を重ね合わせることで可能です。これにより,以下の行列方程式が得られます。\quad(24)なる,一般化固有値問題が得られます。$は,水素原子の基底状態のエネルギー固有値です。$式を数値的に解くだけです。$が未知数であるため,境界条件の処理を行いたくてもできません)。$を規格化(正規化)します。\quad(27)とすることにより可能です。$式は、数値積分によって求めなければなりません。Librariesを,また一般化固有値問題の解を求めるためにEigenをそれぞれ使っていますので,注意してください)。全部載せると非常に長くなってしまうので,一部だけを掲載しています。完全なコードはGitHubのこちらで公開しています。}}なお,このプログラムは,@Sunset_Yuhi様のこちらの記事の,fem1d_poisson01.pyを参考にさせて頂きました。$)を表に示しますと,以下のようになります(単位は全てHartree原子単位です)。$が大きくなるほど厳密な値に近づいていることが分かります。$の時は,厳密な値の99.9996%のエネルギーを与え,非常に良好な結果となっています。$のとき)と厳密な波動関数とを,プロットで比較してみることにしましょう。ここで,図1は普通の目盛,図2はy軸対数目盛となっていることに注意してください。図1,図2の通り,有限要素法による水素原子の基底状態の波動関数と厳密な波動関数は,プロットでは完全に一致しており,非常に良好な結果と言えます。まとめ水素原子の基底状態に対するSchrödinger方程式を弱形式にする方法を説明しました。弱形式からローカル行列を生成し,ローカル行列の行列方程式から全体行列の行列方程式を求める方法について説明しました。全体行列の行列方程式が,一般化固有値問題に帰着することを説明しました。工程2.~4.と一般化固有値問題を解き、その解である波動関数を正規化するC++プログラムを紹介しました。有限要素法による水素原子の基底状態の波動関数と厳密な波動関数との比較を行いました。requestStockLike19@dc1394主にC++とC#を使っています。