シュレディンガー方程式を数値的に解いて固有値を得ようとするときに、前方・後方からRK4などを使って解いてとある接続点で接続させるという手法は実用的ではないという印象です。
二階の微分方程式のうち、他方の余分な解数値解が入ってきて、解が接続点に依存しがちなことが問題だなあという感じです。
時間非依存シュレディンガー方程式を行列形式に書き換えることもでき、この方が実用的かもしれない。
ある状態関数|ψ⟩がヒルベルト空間に属しているならば、その空間の正規直交基底で展開できるので、|ψ⟩=∑kck|k⟩となる。時間非依存のシュレディンガー方程式は、
H|ψ⟩=E|ψ⟩,→H∑kck|k⟩=E∑kck|k⟩
となる。
ここで ˆ1=∑m|m⟩⟨m|であるから
ˆ1H∑kck|k⟩=E∑kck|k⟩,→∑m,k⟨m|H|k⟩ck|m⟩=E∑kck|k⟩
となる。ここで ⟨m|H|k⟩=Hmkとすると
∑m,kHmkck|m⟩=E∑kck|k⟩
となり、左から |j⟩を作用させると、⟨j|m⟩=δjmであるので、
∑kHjkck=Ecj,→Hc=Ec
を得る。ここではHは行列、cは列ベクトルである。
これは行列の固有値問題になります。あとはこれを解くだけで固有値が求まります。
関数を直交関数で展開する時に、指数関数の近似があまり良くないことはしばしばなのではと思います。e−z2(z2−2z+2)を正規直交型の一般ラゲール関数
√n!(α+n)!zα2e−z2L(α)n(z)
で展開してやるとグラフのようになります。ここではα=1で計算しています。左が自然スケールで右が対数スケールです。右のグラフでは関数の絶対値をとっています。グラフにみられる#BFsというのは基底関数の数です。
基底関数の数が上がれば近時の精度は上がりますが、zの値が大きい領域ではむしろ基底関数の数が少ないほうが精度がよいというような感じになっています。これは当然の話しで、一般ラゲール多項式L(α)n(z)のもっとも優位な項は znですから、正規直交化させたラゲール関数のもっとも優位な項は
√1n!(α+n)!(−1)nzα2e−z2zn
となります。基底関数の数が上がるほどnの値が大きくなるので、e−z2との差は大きくなります。元の関数はe−z2(z2−2z+2)だったので、zがかなり大きい領域では基底の数が上がるほど、近似関数と元の関数との差が大きくなります。
0 件のコメント:
コメントを投稿