時間依存のシュレディンガー方程式を数値的に解く簡単な方法はありますか?


34

一次元の単純なポテンシャルからの波束の散乱の簡単なシミュレーションを実行したいと思います。

単一粒子の1次元TDSEを数値的に解決する簡単な方法はありますか?一般に、偏微分方程式を統合するためにナイーブアプローチを使用しようとすると、すぐに災害で終わる可能性があることを知っています。したがって、私はアルゴリズムを探しています

  • 数値的に安定している、
  • 実装が簡単であるか、簡単にアクセスできるコードライブラリの実装があります。
  • 適度に速く実行され、うまくいけば
  • 理解するのは比較的簡単です。

また、スペクトル法、特に時間に依存しないシュレーディンガー方程式を通常のように解く以上の方法については比較的明確にしたいと思います。ただし、Bスプラインなどを使用する擬似スペクトルメソッドに興味があります。メソッドが時間依存のポテンシャルを取ることができる場合、それは間違いなくボーナスです。

もちろん、そのような方法には常に多くの欠点があるので、それらについて聞いてみたいと思います。いつ機能しないのですか?一般的な落とし穴とは何ですか?どの方法でプッシュでき、どの方法でプッシュできないのですか?



私はSSFMの私の過去記事へのエラーの説明を追加しました@EmilioPisanty:I通知(私の答えを書いた後、申し訳ありません)あなたは、スペクトル法に熱心していないが、念のため...

クリーンアップされたスレッド。物理学から話題性の議論を削除。
ジェフオックスベリー14

1
ここから始めることをお勧めしますが、もっと最近の研究がたくさんあります:時間依存シュレーディンガー方程式の異なる伝播スキームの比較
デビッドケッチャソン14

3
@GeoffOxberryはそれらのコメントのスクリーンショットを入手できますか?
エミリオピサンティ14

回答:


24

シュレディンガー方程式は有効である反応拡散方程式 (すべての定数は1です)。偏微分方程式に関しては、次の2つの解決方法があります。

(1)iψt=2ψ+Vψ
  1. 暗黙的な方法(adv:大きなタイムステップと無条件に安定、disadv:不良データを与える可能性のあるマトリックスソルバーが必要)
  2. 明示的な方法(adv:実装が簡単、disadv:安定性のために小さなタイムステップが必要)

放物線方程式(線形でxが 2次)の場合、多くの場合、暗黙的な方法の方が適しています。その理由は、明示的方法の安定性条件にd t d x 2が必要であり、これは非常に小さいからです。暗黙的な方法を使用すると、この問題を回避できます。暗黙的な方法では、時間ステップにそのような制限はありません(実際には、物理​​学の一部を失う可能性があるため、通常は異常に大きくしません)。次に説明するのは、一般的な2次精度(空間と時間)の暗黙的なスキームであるCrank-Nicolsonメソッドです。txdtdx2

前菜

PDEを計算的に解決するには、それを離散化する必要があります(変数をグリッドに合わせる)。最も簡単なのは、長方形のデカルトグリッドです。ここで、は時間インデックス(常に上付き文字)を表し、jは位置インデックス(常に下付き文字)を表します。採用することによってテイラー展開位置に依存する変数を、式(1)となる iがψ N + 1 J - ψ jはnj 我々は仮定したV=VX。次に起こるのは、同様の空間インデックスと時間インデックスのグループ化です(数学を再確認することをお勧めします): 1

iψjn+1ψjdt=12(ψj+1n+12ψjn+1+ψj1n+1dx2+ψj+1n2ψjn+ψj1ndx2)+12(Vjψjn+1+Vjψjn)
V=V(x) この式は、フォームを有する A0A-00A+A0A-00A+A0A-ψ N + 1 0 ψ N + 1 1ψ N + 1 J - 1=
(2)12dtdx2ψj+1n+1+(idtdx212Vj)ψjn+1+12dtdx2ψj1n+1=iψjn12dtdx2(ψj+1n2ψjn+ψj1n)+12Vjψjn
3重対角行列と呼ばれていている既知の解決策を!(プラス私が書いたものを含む作業例)。明示的な方法は、全体の左側を傷(または私は一番上の行を言うべき?)式(2)のを除いて、私ψのn + 1 j個の用語。
(A0A00A+A0A00A+A0A)(ψ0n+1ψ1n+1ψJ1n+1)=(ψ0nψ1nψJ1n)
iψjn+1

課題

暗黙のメソッドで発見した最大の問題は、それらが境界条件に強く依存していることです。境界条件が不十分に定義/実装されている場合、セルにスプリアス振動が発生し、悪い結果につながる可能性があります(同様のトピックに関する私のSciCompの投稿を参照)。これは、スキームが与えるべき 2番目ではなく、実際に空間で1次の精度を持つことにつながります。

暗黙的な方法も並列化が難しいと思われますが、1D熱方程式にのみ使用し、並列サポートは不要であるため、主張を検証したり否定したりすることはできません。

また、波動関数の複雑な性質が計算にどのように影響するかはわかりません。私が行った作業では、オイラー流体力学方程式を使用しているため、非負の大きさで完全に実在します。

時間依存ポテンシャル

Vcos(ωt)tVjt+dt

代替案

dtdx2dtdt/NNΔT=N2dtNNdt時間内に)。(私はこれを行うことができなかったクランク-ニコルソン方式を使用して、あるプロセッサから別のプロセッサにデータをマージするために使用される明確な「フラックス」をあるセルから別のセルに持っているため、研究でこの方法を採用しています)

編集 1つ注意すべき点は、この方法は時間的に1次の精度であるが、Runge-Kutta 2の方法を組み合わせて使用​​すると、時間的に2次の精度のスキームが得られることです。

2ψx2ψj1n+1ψjn+1ψjn+ψj+1ndx2
2ψx2ψj+1n+1ψjn+1ψjn+ψj1ndx2
n+1

1
素晴らしい答えは、不満はあなたがそれに私を打ち負かしたということです!
カイル14

RI

hνhν

1
tu=Dx2u+R(u)R(u)=Vu(先に進んで検索してください)。おそらく、PETSc、deal.ii、pyCLAWなどの標準ライブラリ(ここでは一般的なMO)を使用することをアドバイスした方が良かったのではないでしょうか?
カイルカノス14

1
@KyleKanos:あなたの投稿は良いです。実際、DavidKetchesonが投稿した記事では、Crank-Nicolsonが最初のリファレンスで提唱されています。反応拡散との比較は問題ありません。ご指摘のとおり、反応拡散との比較は、多くの公開されたソースに表示されます。DavidKetchesonは、前述の「分散波動方程式」のようなものを探していたと思います。
ジェフオックスベリー14

22

ψ=R+iI

dRdt=HIdIdt=HRH=12m2+V

RIR0,Δt,2Δt,...I0.5Δt,1.5Δt,...)

R(t+12Δt)=R(t12Δt)+ΔtHI(t)

I(t+12Δt)=I(t12Δt)ΔtHR(t)

2ψ(r,t)=ψ(r+Δr,t)2ψ(r,t)+ψ(rΔr,t)Δr2

Δt

確率密度を

P(x,t)=R2(x,t)+I(x,t+12Δt)I(x,t12Δt)

P(x,t)=R(x,t+12Δt)R(x,t12Δt)+I2(x,t)

アルゴリズムを単一化し、確率を節約します。

十分なコードの最適化により、80486マシン上でリアルタイムに計算された非常に素晴らしいアニメーションを取得することができました。生徒は潜在能力を「引き出し」、総エネルギーを選択し、ガウスパケットの時間進化を見ることができます。


これは、実数成分と虚数成分を解くための非常に巧妙なトリックです!また、を使用すると、大きな中心の方程式を取得できることに注意してください$$ ... $$。私はあなたのためにこれを行う自由を取りました、あなたが気にしないことを願っています!
カイルカノス14

アルゴリズムを見つけることができてうれしく思いました。プログラムが簡単で、高速で実行できました。最も困難な部分は、初期条件を正しくすることでした。t= 0のRと0.5dtのI ...編集を気にしません。方程式を取得できて満足でした。

1
@ user40172ほぼ同時に導波管に対して同じことを行っており、私の答えで説明したBPMに決めました。その理由は、当時はDSPボードを使用してメインCPUとは別にFFTを実行できたからです。私たちはとても賢いと思っていましたが、2014年にはソフトウェアの問題に対する本質的なハードウェアソリューションを思いついたと言わざるを得ません!Visual Studio C ++の最新バージョンは、CPUを介してコードを自動的にベクトル化し、FFTで美しい仕事をします。

1
0.5dt

1
@Rusian散乱を行っていたため、標準の自由粒子ガウス波パケットを使用しましたが、電位がゼロ以外の領域から「十分に」離れて開始するようにしました。例:demos.wolfram.com/EvolutionOfAGaussianWavePacket

10

xt

あなたがやろうとしているのは、さまざまな断面積(時間的に変化する電位に似ている)の導波路を通る光伝搬のためのビーム伝搬法の変装バージョンですので、これを調べることも役立ちます。

SSFM / BPMの見方は次のとおりです。その根拠は、リー理論のトロッター積公式です:

(1)limm(exp(Dtm)exp(Vtm))m=exp((D+V)t)

このコンテキストでは、演算子分割式と呼ばれることもあります。データセットは、特定の時間でのを表す複素数値のまたは離散化グリッドです。あなたはこれを想像するように、(あなたがする必要はありません、これを、私はまだ概念的に話している)のように書かグリッドなんと -element列ベクトルための(我々が持っているグリッド)そして、シュレディンガー方程式は次の形式です:xyxyzψ(x,y,z)tNΨ1024×1024N=10242=1048576

(2)dtΨ=KΨ=(D+V(t))Ψ

ここで、は、スキューエルミート行列で、要素であり、は、その要素によって時間とともにマップされますパラメータグループ。(係数を吸い込みましたK=D+VN×Nu(N)ΨI K = D + Vexp(Kt)iK=D+VNU(N)D+Vのように見える?今のところまだ想像して、それは有限差分バージョンと考えることができますi2/(2m)i1V0+i1(V0V(x,y,z,t0))V0

許可する:

(3)D=i2m2i1V0V=i1(V0V(x,y,z,t))

このように分割した理由は、以下で明らかになります。

DΨexp(ΔtD)Ψ

  1. ΨΨ~x,y,zkx,ky,kz
  2. Ψ~exp(ΔtD)Ψ~exp(iΔt(V0kx2+ky2+kz2)/)
  3. exp(ΔtD)Ψ

    VV

  4. Ψexp(ΔtV)Ψexp(iΔt(V0V(x,y,z,t))/)

ΔtV(x,y,z,t)

Δtexp(D+VΔt)exp(DΔt)exp(VΔt)VD

離散化された世界でさえ、FFTと純粋な位相因子というユニタリー演算子のみを与えていることに注意してください。

ΔtΔxΔx/Δtc

この種の2番目の「経験」ポイント-これは、あなたがあなたのアイデアをフォローする方法であることはほぼ間違いないでしょう。単純で迅速で汚いシミュレーションを行いたいというアイデアがよくありますが、それは決してうまくいきません!実行するのは非常に簡単であり、その結果が物理的であるかどうかをすぐに確認できるので、上記で説明したようにSSFMから始めます。後で、SSMFコードを使用して、カイルカノスの答えの線に沿ってクランクニコルソンコードを構築することになる、より洗練されたコードの結果を確認できます


エラー境界

ベイカー・キャンベル・ハウスドルフの定理のダイキン公式実現:

exp(DΔt)exp(V)Δt)=exp((D+V)Δt+12[D,V]Δt2+)
Δt>0

exp(DΔt)exp(V)Δt)exp(12[D,V]Δt2)=exp((D+V)Δt+O(Δt3))

exp(V)Δt)exp(12[D,V]Δt2)Δt

Δt22[D,V]=iΔt22m(x2V(x,t)+2xV(x,t)x)

[D,V]exp(12[D,V]Δt2)eiφΔt2(id(12[D,V]iφ(t))Δt2)(id(12[D,V]iφ(t))Δt2)ψψ(x,t)Δtφ(12[D,V]iφ(t))Δt2exp(φdt)

SSFM / BPMのエラーに関する関連資料は次のとおりです。

ラース・サイレン 「ビーム伝搬法:その適用性の分析」、光学および量子エレクトロニクス 15(1983)pp433-439

ラース・サイレンは、リー以外の理論用語の誤りについて考えています(リーのグループは私の曲ですので、それらの解釈を探したいです)が、彼の考えは本質的に上記と同じです。


1
exp[Δt(D+V)]exp[ΔtV/2]exp[ΔtD]exp[ΔtV/2]Δt力。たとえば、Bandrauk and Shen、Chemを参照してください。物理学 レット。176、428(1991)。明らかに、運動学の項は座標に依存できません。つまり、曲線座標ではうまく機能しません。

1
それ以外の場合、運動エネルギー演算子のFFT評価に結合されたこの分割演算子は、Molecular Physicsのグリッドベースの表現でTDSEを解くための標準手順の1つです。

@perplexityどうもありがとう。さまざまなフィールドが使用するものを知っておくと便利です。参考文献の1991年の日付は興味深いものです。スプリットステップのアイデアは、1970年代後半の導波管シミュレーションから生まれたものだと常に確信していました。

1
あなたはまったく間違っていません。それがまさにインスピレーションでした。これらのアイデアを私が知っているQMに翻訳する最初の仕事は、Feit、FleckおよびSteiger、J。Computです。物理学 47、412(1982)では、正しく思い出せば、基本的に同じトリックを使用しますが、ここでの演算子は(古典的な波とは異なり)構造上単一であるという利点があります。これらのタイプのシミュレーションに対するFFTグリッドベースのアプローチは、ロニーコスロフによって最初に提案されたと思います。彼は彼のウェブページでこの主題について非常に素晴らしいレビューをしています。

私の分野でのもう1つの参考資料は、David TannorのQuantum Mechanicsに関する本:時間依存の視点です。乾杯。

5

有限差分時間領域(FDTD)メソッドの使用をお勧めします。私はあなたの質問のほとんどに答えるはずのチュートリアルを書いたことがあります:

JR Nagel、「シュレディンガー方程式に適用される有限差分時間領域アルゴリズムのレビューと応用」、ACES Journal、Vol。24、No。1、2009年2月

1Dシステムでうまく動作するMatlabコードがいくつかあります。FDTDを電磁気学で使用した経験がある場合、量子力学にも最適です。興味があればコードを投稿できます。

基本的に、導関数を有限差分に分割することにより、波動関数に直接作用します。これは、Crank-Nicholsonスキームに似ていますが、正確ではありません。電磁波理論からFDTDに精通している場合、FDTDはシュレディンガー方程式を解くときに非常に直感的です。


4

最も単純な有限差分法は高速で理解しやすいですが、時間的には単一ではないため、確率は保存されません。Crank-Nicholson-Croutは、順方向および逆方向の差分法を平均化して、暗黙的/明示的なハイブリッドメソッドを生成します。このサイトでは、メソッドの詳細を説明し、擬似コードを提供し、関連するプロパティを提供します。

http://www.physics.utah.edu/~detar/phycs6730/handouts/crank_nicholson/crank_nicholson/ 注:このリンクの式1のLHSには、ページ全体に伝播する-記号がありません。

非統一性はどこから来たのですか?

簡単に言えば、TDSEを解くと、対処方法がわかります

|ψ(x,t)=eiHt|ψ(x,0)

指数関数に微分演算子が含まれています。

前方有限差分を適用すると、微分演算子が三重対角行列に変換され(実数をグリッドに変換)、指数関数がそのテイラー級数の最初の2つの項に変換されます。

eiHt1iHt

この離散化と線形化は、非ユニタリティを生じさせるものです。(直接計算により、三重対角行列がユニタリでないことを示すことができます。)前方有限差分と後方有限差分を組み合わせると、近似が生成されます。

eiHt112iHt1+12iHt

親切に、たまたまユニタリです(ここでも、直接計算で表示できます)。


早速のご返事ありがとうございます。これら両方の方法の詳細を教えてください。彼らはどのように機能しますか、そしてなぜですか?非統一性はどこから来たのですか?
エミリオピサンティ14

詳細をお知らせいただければ幸いですが、ターゲットオーディエンスを見逃さないようにするには、次の各バックグラウンドフィールドでどれだけの教育と経験を持っているかを知ることが役立ちます:微積分、微分方程式、線形代数、量子力学、および数値法(特に有限差分法)。

標準的な物理学と数学から必要なだけ仮定してください(より複雑な部分への参照はおそらく役立つでしょう)。しかし、私の数値的手法は少し錆びています。
エミリオピサンティ14

(1+i2Ht)1(1+i2Ht)ψ

いいえ、Kyle Kanosが提供したものと同じアルゴリズムです。別の見方をするためにこのように書きました。概念化が簡単になりましたが、実装は簡単でした。はい、最終的には三重対角方程式を解くだけです。非常によくそれを説明し、私は以前に見つけることができなかったことをAJPの古い(1967)紙がありました:ergodic.ugr.es/cphys/lecciones/SCHROEDINGER/ajp.pdf 彼らはガウス波束の農産物の8mmフィルムループにCNを使用しましたさまざまな可能性を散乱させます。これらのフィルムループは、多くの大学の物理学デモライブラリにまだあります。

3

ここでのいくつかの回答とコメントは、TDSEと波動方程式を混同します。おそらくセマンティクスの問題です。TDSEは、古典的な非相対論的ハミルトニアンの量子化バージョンです。

H=p22m+V(x)=E.
pix,  Eit,  xx,
[22mxx+V(x)]ψ=itψ,
2
xxψ=ttψ+

ψn+1=(I+iτ2H~)1(Iiτ2H~)ψn
I
Hjk=(H~)jk=22m[δj+1,k+δj1,k2δjkh2]+Vjδjk.
ψψψs=eikx/L
|ψ|2dx
cp=E
c
icx=it
すなわち、移流方程式は分散がなく(Lax-Wendroffメソッドと適切に統合されている場合)、その場合、ウェーブパケットは時間内に広がりません。量子アナログは、質量のない粒子のディラック方程式です。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.