確実に積分の計算が可能な、適応型の数値積分パッケージQUADPACKを用いて行列要素を計算します。
精度に影響するのは基底関数(sin関数)の数のみです。
固定端条件の下で時間依存しない1次元シュレーディンガー方程式
\(\displaystyle
\left[-\frac{1}{2}\frac{d^2}{dx^2}+V(x)\right]\psi(x)=E\psi(x)
\)
をsin基底で展開し、変分原理に基づいて対角化します。
sin基底:
\(\displaystyle
\varphi_n(x)=\sqrt{\frac{2}{b-a}}\sin\left(n\pi\frac{x-a}{b-a}\right)
\)
ここで紹介するコードは並列計算に対応しています。
例えば、有限深さの井戸型ポテンシャルのような不連続点があったとしても、
行列要素はquadpackを用いて確実に求める事が出来るため、後はどれだけ基底を積むか?にかかってきます。
必要なファイルは以下のものです。
tar
個別のf90ファイル
https://slpr.sakura.ne.jp/qp/supplement_data/tise1d_by_sinbasis_and_quadpack/main.f90
https://slpr.sakura.ne.jp/qp/supplement_data/tise1d_by_sinbasis_and_quadpack/quadpack.f90
対角化のパッケージを用いるため、mklやlapackと一緒にコンパイルしてください。例えば
等です。
デフォルトでは、時間依存しないシュレーディンガー方程式
\(\displaystyle
\left[-\frac{1}{2}\frac{d^2}{dx^2}+\frac{1}{2}x^2\right]\psi(x)=E\psi(x)
\)
を解きます。計算に用いているパラメータは、
区間\([-20:20]\),
基底の数\(80\),
で計算します。