Jawaban Kyle Kanos terlihat sangat penuh, tetapi saya pikir saya akan menambahkan pengalaman saya sendiri. Metode Fourier split-step (SSFM) sangat mudah dijalankan dan digunakan; Anda dapat membuat prototipe dalam beberapa baris Mathematica dan itu, sangat stabil secara numerik. Ini melibatkan hanya memberikan operator kesatuan pada dataset Anda, sehingga secara otomatis menghemat probabilitas / kekuatan (yang terakhir jika Anda memecahkan persamaan Maxwell dengan itu, yang merupakan tempat pengalaman saya berada). Untuk persamaan Schrödinger satu dimensi (yaitu hanya variasi dan t ), ia sangat cepat bahkan sebagai kode Mathematica. Dan jika Anda perlu mempercepatnya, Anda benar-benar hanya membutuhkan kode FFT yang baik dalam bahasa target Anda (pengalaman saya terletak pada C ++).xt
Apa yang akan Anda lakukan adalah versi samaran dari Metode Propagasi Beam untuk propagasi optik melalui pandu gelombang dari berbagai penampang (analog dengan potensi waktu yang berbeda-beda), jadi akan sangat membantu untuk melihat ini juga.
Cara saya melihat SSFM / BPM adalah sebagai berikut. Landasannya adalah formula produk Trotter dari teori Lie:
limm→∞(exp(Dtm)exp(Vtm))m=exp((D+V)t)(1)
x−yx−y−zψ(x,y,z)tNΨ1024×1024N=10242=1048576
dtΨ=KΨ=(D+V(t))Ψ(2)
K=D+VN×Nu(N)Ψexp(Kt)iℏK=D+VNU(N)D+Viℏ∇2/(2m)−iℏ−1V0+iℏ−1(V0−V(x,y,z,t0))V0
Kami membiarkan:
DV==iℏ2m∇2−iℏ−1V0iℏ−1(V0−V(x,y,z,t))(3)
Mengapa saya membaginya seperti ini akan menjadi jelas di bawah ini.
DΨ↦exp(ΔtD)Ψ
- ΨΨ~x,y,zkx,ky,kz
- Ψ~↦exp(ΔtD)Ψ~exp(iΔt(V0−k2x+k2y+k2z)/ℏ) ;
exp(ΔtD)Ψ
VV adalah operator multiplikasi sederhana. Jadi inilah langkah terakhir Anda dari siklus algoritmik Anda:
Ψ↦exp(ΔtV)Ψexp(iΔt(V0−V(x,y,z,t))/ℏ)
.... dan kemudian Anda mulai selanjutnya ΔtV(x,y,z,t)
Δtexp(D+VΔt)≈exp(DΔt)exp(VΔt)VD adalah operator perkalian sederhana.
Perhatikan bahwa Anda hanya pernah memberikan, bahkan di dunia yang dipecat, operator kesatuan: FFT dan faktor fase murni.
ΔtΔxΔx/Δtc
Poin "pengalaman" kedua dengan hal semacam ini - saya hampir berani bertaruh ini adalah bagaimana Anda akan berakhir dengan mengikuti ide-ide Anda. Kita sering memiliki ide yang ingin kita lakukan simulasi sederhana dan cepat dan kotor tetapi tidak pernah berhasil seperti itu! Saya akan mulai dengan SSFM seperti yang saya jelaskan di atas karena sangat mudah dijalankan dan Anda akan segera melihat apakah hasilnya fisik atau tidak. Kemudian Anda dapat menggunakan, katakan kode SSFM Mathematica periksa hasil kode yang lebih canggih yang mungkin Anda buat, katakanlah, kode Crank Nicolson di sepanjang jawaban Kyle Kanos .
Batas Kesalahan
Realisasi rumus Dynkin dari Teorema Baker-Campbell-Hausdorff:
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(∂2xV(x,t)+2∂xV(x,t)∂x)
[D,V]exp(−12[D,V]Δt2)≈e−iφΔ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) .
Makalah yang relevan tentang kesalahan dalam SSFM / BPM adalah:
Lars Thylén. "Metode Propagasi Balok: Analisis Penerapannya", Optical and Quantum Electronics 15 (1983) pp433-439 .
Lars Thylén berpikir tentang kesalahan dalam hal teori non-Lie (kelompok Lie adalah bengkok saya, jadi saya suka mencari interpretasi dari mereka) tetapi ide-idenya pada dasarnya sama dengan yang di atas.