- ベストアンサー
Hartree-Fock法で基底状態を求める場合について
Hartree-Fock法で基底状態を求める場合、Self-consistentに計算を行うのが普通だと思います。ひとつ前のSelf-consistent計算で求めた波動関数をψ_iと書くことにし、ψ_iで構成されるフォック演算子をF[ψ_i]と書くことにします。 F[ψ_i]ψ_{i+1}=E_{i+1} ψ_{i+1} ψ_{i+1}に関する、上記固有値方程式を解き、収束するまで繰り返します。この時、軌道エネルギーE_{i+1}が低いものから順番に“つめていく”と思っていたのですが、それは正しいのでしょうか? ご存知のようにHartree-Fock法における総エネルギーは軌道エネルギーの総和ではありません。ですから、軌道エネルギー低いものから順番に“つめていく”事で、総エネルギーが最小になる根拠がないように思うのです。 実際に1次元の簡単な系で数値的に計算したところ、低いものから順番に“つめていく”と、総エネルギーが最小にならない場合がありました。これは私のプログラムミスかもしれませんが、どうも間違えていないように思えるのです。 Hartree-Fock法は古くからある手法なので、こう言ったことにはすでに答えがあると思うのですが、もしなにか御存じであれば、ご教授願えないでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
質問者様の例だと、計算の途中で順番が勝手に入れ替わって正しい答えにいきついたということで、ラッキーだったわけです。通常は入れ替わらなくてもいいようなゲスを作成します。 特別に難しい系を計算する場合には、あらかじめ対称性などから占めるべき軌道を決定し、vertical shiftと呼ばれる手法を使ってへんな軌道に電子が移らないようにおそるおそる収束させます。たいていの既存のプログラムには入っています。 Hartree-Fock法の変分性は、収束した後の波動関数が一スレーター行列式としてもっとも低いエネルギーを与えるということですので、途中は関係ありません。ですからタイトに閾値を設定すれば、収束先でこの問題が起こることはありえません(収束しないことは往々にしてある)。 計算の最後のほうまでそのような現象がおこるのでしたら、それはその系は一スレーター行列式で書くことが出来ないということを意味します。 蛇足ですが、HFの変分エネルギーは<ψ_{i}|F_{ψ_i}|ψ_{i}>ですから F[ψ_i]ψ_{i+1}=E_{i+1} ψ_{i+1} でiterationを行うのでしたら、最低エネルギーより下のエネルギーも途中で出てきても不思議ではありません。 結論 ですから、軌道エネルギー低いものから順番に“つめていく”事で、総エネルギーが最小になる根拠がないように思うのです。 は正しい。しかし下から詰めていけるようなプログラムとゲスを作るべきである。
その他の回答 (4)
- ji---san
- ベストアンサー率38% (18/47)
すみません<ψ_{i}|F_{ψ_i}|ψ_{i}>は<ψ_{i}|H_{ψ_i}|ψ_{i}>の間違いです。
お礼
こちらにまとめてお礼を書かせていただきます。 今回の質問に関しましては、ji---san様に対する私の補足にもありますように、結局軌道エネルギーの低いものから順番に詰めていく時に、固有値方程式の解としてのE_iを使っていることに問題があるという結論になりました。この結論は十分に納得のいくものであって、今後はこのあたりに気をつけて、論文なり参考書なりを当たっていくことにします。 どうもありがとうございました。
- eatern27
- ベストアンサー率55% (635/1135)
>総エネルギーが最小にならない場合がありました。 というのは、Hartree-Fock法で見つけたエネルギー最小値よりエネルギーの低い状態が具体的に見つかった、という意味でいいですね? その状態がスレーター行列でかける状態であるのならば、その状態を初期波動関数として選ぶと、どういう状態が得られるでしょうか? スレーター行列でかけないのなら、ありえない話ではないですね。Hartree-Fock法では、全波動関数がスレーター行列で書ける時の最小値を求めようとしているわけですから。
補足
>Hartree-Fock法のエネルギー最小値よりエネルギーの低い状態が具体的に見つかった、という意味でいいですね? はい >その状態がスレーター行列でかける状態であるのならば、その状態を初期波動関数として選ぶと、どういう状態が得られるでしょうか? もちろん、スレーター行列式で書ける状態です。例えばこのHF法より低い総エネルギーを与える状態を\{ψ_i^{gs}\}と書くことにします。そして、\{ψ_i^{gs}\}で構成されるフォック演算子をF^{gs}と書くことにします。このとき\{ψ_i^{gs}\}は、確かにF^{gs}の固有解でした。しかしながら、固有値の低いものが選ばれているわけではありませんでした。具体的には、2電子系で計算し、1個目の軌道エネルギーはF^{gs}の最低固有値で、2個目の軌道エネルギーはF^{gs}の三番目に低い固有値でした。 したがって、ψ_{gs}を初期波動関数として計算を開始すると、一回目のSCF計算で、F^{gs}の1番目と、2番目を選んでしまい、総エネルギーは上昇し、ある値に収束する、という結果になりました。
- eatern27
- ベストアンサー率55% (635/1135)
>フォック演算子の固有解の内、軌道エネルギーが低いものから電子数個の軌道“全て”を使っているます。 え、という事は、 >ψ_{i+1}に関する、上記固有値方程式を解き、収束するまで繰り返します。 ここで収束したものとは違うものを使っているという事ですか?
補足
良くわからないのですが、SCF計算は行っています。 まず、初期波動関数を決めます。 ψ_i^0 i:1~N N:電子数 またF^kは全ψ^kで構成されるフォック演算子とします。そして、以下の計算を行います。 for( k=1; 収束するまで; k++ ){ --for( i=1; i<=N; i++ ){ ----Solve F^{k-1} ψ_i^k = E_i^k ψ_i^k --} } 今思えば、フォック演算子が「電子数個の全ψ^kで構成されているかどうか?」を聞かれていたのでしょうか?もしそういう意味であれば、もちろん、全部使っています。
- eatern27
- ベストアンサー率55% (635/1135)
得られた1電子波動関数"全て"を使うんだという事は大丈夫ですか?
補足
フォック演算子の固有解の内、軌道エネルギーが低いものから電子数個の軌道“全て”を使っているます。そういう意味ではないのでしょうか?
補足
>しかし下から詰めていけるようなプログラムとゲスを作るべきである。 実はこのゲスは、単なるゲスではなく、{ψ_i^{gs}}と書いたことから暗に示されるように、行列式の範囲内で総エネルギーを最小にするものを、SCF計算以外の方法で求めたものです。よって、{ψ_i^{gs}}はフォック演算子F[ψ^{gs}]の固有関数{φ_i}と一致しなければならないはずです(もっと一般には、その{φ_i}の線形結合でもいいのかもしれません)。実際に調べたところ、 ψ_1^{gs}==φ_1 ψ_2^{gs}==φ_3 であったということになります。なお、固有関数は、その対応する固有値が小さいものから順番に番号をつけたものとします。 >でiterationを行うのでしたら、最低エネルギーより下のエネルギーも途中で出てきても不思議ではありません。 これは確かにそのとおりでした。私はE_{i+1}を見て下からつめていましたが、それは厳密には正しくないのかもしれません。軌道エネルギーを<ψ_{i}|F_{ψ_i}|ψ_{i}>で計算しなおして、下からつめるべきなのでしょう。しかし、これはかなりしんどい計算に思えます。実際のところ、先人の方々はこのようなことを行うのでしょうか? そこで考案されたのがvertical shiftという手法なのでしょうか?良くわかりませんが、そう単純に軌道をつめていく訳ではないという事のようですね。 なお、総エネルギーを計算する際は、軌道エネルギーを<ψ_{i}|F_{ψ_i}|ψ_{i}>で計算しなおして、求めていますので、最低エネルギーを下回ることは無いはずです。 >ですから、軌道エネルギーの低いものから順番に“つめていく”事で、総エネルギーが最小になる根拠がないように思うのです。は正しい。 軌道エネルギーを<ψ_{i}|F_{ψ_i}|ψ_{i}>ではなく、E_{i+1}で近似的に評価し、下からつめているため、総エネルギーが最小にならない可能性がある。という理解でいいのでしょうか? >下から詰めていけるようなプログラムとゲスを作るべきである。 「下からつめていける」と「軌道エネルギーを<ψ_{i}|F_{ψ_i}|ψ_{i}>で計算」が同値であるかどうかはわかりませんが、このあたりに何か問題がありそうな気がしてきました。 大変参考になりました。