क्या समय-निर्भर श्रोडिंगर समीकरण को संख्यात्मक रूप से हल करने के सरल तरीके हैं?


34

मैं तरंगों के बिखरने के कुछ सरल सिमुलेशन को एक आयाम में सरल क्षमता से चलाना चाहता हूं।

क्या एक एकल कण के लिए एक आयामी टीडीएसई को संख्यात्मक रूप से हल करने के सरल तरीके हैं? मुझे पता है कि, सामान्य तौर पर, आंशिक अंतर को एकीकृत करने के लिए भोले दृष्टिकोणों का उपयोग करने की कोशिश करना आपदा में जल्दी समाप्त हो सकता है। इसलिए मैं एल्गोरिदम की तलाश कर रहा हूं जो

  • संख्यात्मक रूप से स्थिर हैं,
  • लागू करने के लिए सरल हैं, या आसानी से सुलभ कोड-पुस्तकालय कार्यान्वयन हैं,
  • यथोचित तेजी से, और उम्मीद है
  • समझने में अपेक्षाकृत सरल हैं।

मैं वर्णक्रमीय विधियों के अपेक्षाकृत स्पष्ट रूप से स्पष्ट करना चाहूंगा, और विशेष रूप से उन तरीकों से जो सामान्य रूप से समय-स्वतंत्र श्रोडिंगर समीकरण को हल करने की तुलना में थोड़ा अधिक हैं। हालांकि, मुझे छद्म वर्णक्रमीय तरीकों में दिलचस्पी होगी जो बी-स्प्लिन या व्हाट्सन का उपयोग करते हैं। यदि विधि समय-निर्भर क्षमता ले सकती है, तो यह निश्चित रूप से एक बोनस है।

बेशक, ऐसी किसी भी विधि में हमेशा कई नुकसान होंगे, इसलिए मैं उन लोगों के बारे में सुनना चाहूंगा। यह कब काम नहीं करता है? आम नुकसान क्या हैं? किन तरीकों से इसे धकेला जा सकता है, और किन तरीकों से ऐसा नहीं किया जा सकता है?



@EmilioPisanty मैंने SSFM के मेरे राइटअप में त्रुटियों की चर्चा जोड़ दी है: मैंने नोटिस किया (अपना उत्तर लिखने के बाद, क्षमा करें) आप वर्णक्रमीय तरीकों के लिए उत्सुक नहीं हैं, लेकिन सिर्फ मामले में ...

थ्रेड को साफ किया; भौतिकी से सामयिकता की चर्चा को हटाना।
ज्योफ ऑक्सबेरी

1
मैं यहां शुरू करने की सलाह देता हूं, हालांकि हाल ही में बहुत सारे काम हैं: समय पर निर्भर श्रोडडिंग समीकरण के लिए विभिन्न प्रसार योजनाओं की तुलना
डेविड केचेसन

3
@GeoffOxberry क्या आप उन टिप्पणियों का स्क्रीनशॉट उपलब्ध करा सकते हैं?
एमिलियो पिसांती

जवाबों:


24

Schroedinger समीकरण प्रभावी रूप से एक है प्रतिक्रिया-प्रसार समीकरण (सभी स्थिरांक 1 कर रहे हैं)। जब यह किसी भी आंशिक अंतर समीकरण की बात आती है, तो इसे हल करने के दो तरीके हैं:

(1)iψt=2ψ+Vψ
  1. लागू विधि (adv: बड़े समय के कदम और बिना शर्त के स्थिर, disadv: मैट्रिक्स सॉल्वर की आवश्यकता होती है जो खराब डेटा दे सकता है)
  2. स्पष्ट विधि (adv: लागू करने में आसान, disadv: स्थिरता के लिए छोटे टाइमस्टेप की आवश्यकता होती है)

परवलयिक समीकरणों के लिए ( x में और 2nd क्रम में रैखिक ), अंतर्निहित विधि अक्सर बेहतर विकल्प होती है। कारण यह है स्थिरता के लिए शर्त स्पष्ट विधि के लिए की आवश्यकता है टी α एक्स 2 , जो बहुत छोटे हो जाएगा। आप अंतर्निहित पद्धति का उपयोग करके इस मुद्दे से बच सकते हैं, जिसमें समय-कदम पर ऐसी कोई सीमा नहीं है (हालांकि व्यवहार में आप सामान्य रूप से इसे बहुत बड़ा नहीं बनाते हैं क्योंकि आप कुछ भौतिकी खो सकते हैं)। आगे मैं जो वर्णन करता हूं वह है क्रैंक-निकोलसन विधि , एक सामान्य दूसरा क्रम सटीक (स्थान और समय) अंतर्निहित योजना।txdtdx2

स्टार्टर्स

एक पीडीई को कम्प्यूटेशनल रूप से हल करने के लिए, आपको इसे विवेकाधीन करने की आवश्यकता है (चर को ग्रिड पर फिट करें)। सबसे सीधा-आगे एक आयताकार, कार्टेशियन ग्रिड है। यहाँ पर, टाइम इंडेक्स का प्रतिनिधित्व करता है (और हमेशा एक सुपर-स्क्रिप्ट है) और j पॉजिशन इंडेक्स (हमेशा एक सबस्क्रिप्ट)। एक का उपयोग करके टेलर विस्तार स्थिति पर निर्भर चर के लिए, समीकरण (1) हो जाता है मैं ψ n + 1 j - ψ jnj हम चाहते हैं कि मान लिया है कहाँवी=वी(एक्स)। आगे जो होता है वह स्थानिक और लौकिक सूचकांकों की तरह होता है (आप गणित को दोबारा जांचना चाहते हैं):

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) इस समीकरण रूप है (एक0-00एक+एक0-00एक+एक0-)(ψ n + 1 0 ψ n + 1 1ψ n + 1 जम्मू - 1 )=(
(2)12dtdx2ψj+1n+1+(idtdx212Vj)ψjn+1+12dtdx2ψj1n+1=iψjn12dtdx2(ψj+1n2ψjn+ψj1n)+12Vjψjn
कौन सा त्रिकोणीय विकर्ण मैट्रिक्स कहा जाता है और हैएक ज्ञात समाधान! (प्लस भी मुझे द्वारा लिखित सहित कार्य करने वाले उदाहरणों,)। स्पष्ट पद्धति, समीकरण के पूरे बाईं ओर (या मुझे शीर्ष रेखा कहना चाहिए?) समीकरण (2) को छोड़करमैंoutn+1jशब्द केलिएहूं
(A0A00A+A0A00A+A0A)(ψ0n+1ψ1n+1ψJ1n+1)=(ψ0nψ1nψJ1n)
iψjn+1

मुद्दे

अंतर्निहित विधियों के साथ मुझे जो सबसे बड़ा मुद्दा मिला है, वह यह है कि वे दृढ़ता से सीमा की स्थितियों पर निर्भर हैं। यदि आपने ख़राब परिभाषित / कार्यान्वित सीमाएँ निर्धारित की हैं, तो आप अपनी कोशिकाओं में सहज दोलन प्राप्त कर सकते हैं, जिससे बुरे परिणाम हो सकते हैं ( एक समान विषय पर मेरी SciComp पोस्ट देखें )। यह वास्तव में 2 के बजाय अंतरिक्ष में 1 आदेश सटीकता की ओर जाता है, जिसे आपकी योजना को देना चाहिए

समानांतर तरीकों को भी समानांतर करना मुश्किल है, लेकिन मैंने केवल 1 डी गर्मी समीकरणों के लिए उनका उपयोग किया है और समानांतर समर्थन की आवश्यकता नहीं है, इसलिए मैं दावे को न तो सत्यापित कर सकता हूं और न ही इनकार कर सकता हूं।

मैं यह भी अनिश्चित हूं कि तरंग फ़ंक्शन की जटिल प्रकृति गणनाओं को कैसे प्रभावित करेगी। मैंने जो काम किया है, वह यूलर फ्लुइड डायनेमिक समीकरणों का उपयोग करता है , और इस तरह गैर-नकारात्मक परिमाण के साथ पूरी तरह से वास्तविक है।

समय-निर्भर क्षमता

यदि आपके पास एक विश्लेषणात्मक समय-निर्भर क्षमता (जैसे ), तो आप केवल वर्तमान समय का उपयोग करना चाहते हैं, टी , के लिए वी जे के आरएचएस पर (2) और भविष्य समय, टी + डी टी , एलएचएस पर। मुझे विश्वास नहीं है कि यह कोई समस्या पैदा करेगा, लेकिन मैंने इसका परीक्षण नहीं किया है इसलिए मैं इस पहलू को सत्यापित या अस्वीकार नहीं कर सकता।Vcos(ωt)tVjt+dt

वैकल्पिक

क्रैंक-निकोलसन विधि के लिए कुछ दिलचस्प विकल्प भी हैं। पहला अप तथाकथित "सुपर-टाइम-स्टेपिंग" विधि है। इस स्पष्ट विधि में, आप समय कदम (ले ) और प्रयोग Chebyshev polynomials की जड़ों समय-कदम की एक अनुकूलित सेट है कि जल्दी से योग प्राप्त करने के लिए डी टी तेजी से कर रही है की तुलना में टी / एनdtdx2dtdt/N कदम बार (प्रभावी रूप से आपको मिल Δ टी = एन 2 डी टी ताकि हर कदम एन अग्रिम आप एन डी टीNΔT=N2dtNNdtसमय के भीतर)। (मैं अपने शोध में इस विधि को नियोजित करता हूं क्योंकि आपके पास एक सेल से दूसरे में एक अच्छी तरह से परिभाषित "फ्लक्स" है जो कि एक प्रोसेसर से दूसरे में डेटा विलय करने के लिए उपयोग किया जाता है, क्रैंक-निकोलसन योजना का उपयोग करके मैं ऐसा करने में असमर्थ था)।

EDIT एक बात पर ध्यान दें कि यह विधि पहले समय में सटीक है, लेकिन यदि आप संयोजन में रूज-कुत्ता 2 विधि का उपयोग करते हैं, तो यह आपको समय में एक 2 क्रम सटीक योजना प्रदान करेगा।

अन्य को वैकल्पिक-दिशा स्पष्ट कहा जाता है । इस विधि के लिए आपको ज्ञात और अच्छी तरह से परिभाषित सीमा की स्थिति की आवश्यकता होती है। यह तब गणना में सीधे सीमा का उपयोग करके समीकरण को हल करने के लिए आगे बढ़ता है (प्रत्येक चरण के बाद इसे लागू करने की आवश्यकता नहीं है)। इस विधि में क्या होता है क्या आप पीडीई को दो बार हल करते हैं, एक बार ऊपर की तरफ और एक बार नीचे की तरफ। ऊपर की ओर स्वीप का उपयोग करता है , जबकि नीचे झाडू का उपयोग करता है 2ψ

2ψx2ψj1n+1ψjn+1ψjn+ψj+1ndx2
प्रसार प्रसार के लिए जबकि अन्य शर्तें समान रहेंगी। समय-चरणn+1तब दो दिशात्मक स्वीपों के औसत द्वारा हल किया जाता है।
2ψx2ψj+1n+1ψjn+1ψjn+ψj1ndx2
n+1

1
महान जवाब, केवल शिकायत यह है कि आपने मुझे इसे हराया!
काइल

@ क्रिसहाइट: मैं सोच रहा था कि आज सुबह पहले कैसे किया जा सकता है और केवल एक चीज जो मैं लेकर आया हूं वह एक बार और एक बार मैं कर रहा हूं । मैं उस कागज पर एक नज़र डालूँगा (और अधिक महत्वपूर्ण बात यह है कि वे जो निशुल्क कोड देते हैं) और देखते हैं कि वे इसे कैसे करने का सुझाव देते हैं। RI
काइल कानोस

@ क्रिसहाइट हो सकता है कि स्नीकनेस आइजनफंक्शंस की गणना के लिए है, जिसे मैंने काल्पनिक टाइमस्टैपिंग द्वारा गणना की है: आप कदम की दिशा की व्यवस्था करते हैं ताकि सबसे कम ऊर्जा वाले आइजनफंक्शन का न्यूनतम नकारात्मक मान हो और इस प्रकार सबसे धीमा क्षय। एक यादृच्छिक इनपुट पर पुनरावृत्ति करने पर, बहुत तेजी से केवल सबसे कम ऊर्जा प्रतिजन का आकार बचा है। फिर आप इसे यादृच्छिक इनपुट से घटाते हैं और फिर से प्रक्रिया करते हैं: अब अगली सबसे कम ऊर्जा वाली प्रतिरूप प्रमुख है। और इसी तरह। यह थोड़ा नीरस लगता है (विशेषकर उच्च - एचhν eigenfuncs) लेकिन यह काम करता है!hν

1
@DavidKetcheson: एक प्रतिक्रिया-प्रसार समीकरण रूप लेता । श्रोडिंगर समीकरण के मामले में, आर ( यूtu=Dx2u+R(u) ; मैं तो कैसे कह सकता है कि यह हैनहींएक आरडी प्रकार समीकरण? और, उत्सुकता से, श्रोडिंगर समीकरण वास्तव में प्रतिक्रिया-प्रसार विकी लेख जिसे मैंने संदर्भित किया है, में दिखाई देता है। मैंने जो यह समीकरण बनाया है वह कईप्रकाशित पत्रिकाओं और ग्रंथोंमें भी दिखाई देता हैR(u)=Vu(आगे बढ़ो और इसे खोजो)। शायद मेरे लिए बेहतर होता कि मैं मानक पुस्तकालयों (जैसा कि आम एमओ यहां है) का उपयोग करने की सलाह देता हूं, जैसे कि पेट्सक, डील.आई, या पीक्लाव?
काइल कानोस

1
@KyleKanos: आपकी पोस्ट अच्छी है। वास्तव में, डेविडकैट्सन द्वारा पोस्ट किए गए लेख में, क्रैंक-निकोलसन को पहले संदर्भ द्वारा वकालत की जाती है। प्रतिक्रिया-प्रसार की तुलना ठीक है; जैसा कि आप ध्यान दें, प्रतिक्रिया-प्रसार की तुलना कई प्रकाशित स्रोतों में दिखाई देती है। मुझे लगता है कि डेविडकैट्सन पहले बताए गए "डिस्पर्सिव वेव समीकरण" जैसी किसी चीज़ की तलाश कर रहे थे।
ज्योफ ऑक्सबेरी

22

90 के दशक की शुरुआत में हम पीसी पर वास्तविक समय में एनिमेशन करने के लिए टीडीएसई को तेजी से हल करने के लिए एक विधि की तलाश कर रहे थे और भौतिकी में कंप्यूटर में पीबी विचर द्वारा वर्णित आश्चर्यजनक रूप से सरल, स्थिर, स्पष्ट तरीका आया : " एक तेज गति एल्गोरिथ्म समय-निर्भर श्रोडिंगर समीकरण के लिए "। Visscher नोटों कि आप वास्तविक और काल्पनिक भागों में विभाजित wavefunction अगर, , एसई प्रणाली हो जाता है:ψ=R+iI

dRdt=HIdIdt=HRH=12m2+V

यदि आप आर की गणना करते हैंR और कंपित बार (कम से आर पर 0 , Δ टी , 2 Δ टी , और मैं में 0.5 Δ टी , 1.5 Δ टी , IR0,Δt,2Δt,...I , आप discretization मिलती है:0.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 मशीनों पर वास्तविक समय में गणना किए गए बहुत अच्छे एनिमेशन प्राप्त करने में सक्षम थे। छात्र किसी भी क्षमता को "आकर्षित" कर सकते हैं, कुल ऊर्जा का चयन कर सकते हैं, और एक गाऊसी पैकेट के समय-विकास को देख सकते हैं।


यह वास्तविक और काल्पनिक घटकों को हल करने के लिए एक बहुत साफ चाल है! ध्यान दें कि आप का उपयोग करके बड़े, केंद्रित समीकरण प्राप्त कर सकते हैं $$ ... $$। मैंने आपके लिए ऐसा करने की स्वतंत्रता ली है, मुझे आशा है कि आप बुरा नहीं मानेंगे!
काइल कानोस

एल्गोरिथ्म को पाकर हम बहुत खुश हुए - यह प्रोग्राम करना आसान था और तेजी से भाग गया। सबसे कठिन हिस्सा प्रारंभिक परिस्थितियों को सही पा रहा था, R पर t = 0 और I को 0.5dt पर ... मुझे यह संपादित करने में कोई आपत्ति नहीं है, मुझे समीकरणों को प्राप्त करने में खुशी हुई।

1
@ user40172 हम एक ही समय में waveguides के लिए एक ही काम कर रहे थे, और हम अपने जवाब में वर्णित BPM पर बस गए। कारण यह था कि उस समय हम डीएसपी बोर्ड का उपयोग करके मुख्य सीपीयू से अलग से एफएफटी चला सकते थे। हमने सोचा था कि हम ओह इतने चालाक थे, लेकिन मुझे कहना होगा कि अनिवार्य रूप से एक सॉफ्टवेयर समस्या के लिए हार्डवेयर समाधान 2014 में बहुत अच्छा लग रहा है, हालांकि! Visual Studio C ++ का नवीनतम संस्करण स्वचालित रूप से CPU पर कोड वेक्टर करता है और यह FFT के साथ एक सुंदर कार्य करता है।

1
0.5dt

1
@ रूसियन चूंकि हम बिखर रहे थे, हमने एक मानक फ्री-कण गॉसियन वेव पैकेट का इस्तेमाल किया, लेकिन इसे किसी भी क्षेत्र से दूर "पर्याप्त" शुरू करना सुनिश्चित किया जहां क्षमता गैर-शून्य थी। : उदाहरण के लिए देखें, demonstrations.wolfram.com/EvolutionOfAGaussianWavePacket

10

xt

आप जो कर रहे हैं, वह अलग-अलग क्रॉस सेक्शन के एक वेवगाइड (समय-समय पर अलग-अलग क्षमता वाले) के माध्यम से ऑप्टिकल प्रसार के लिए बीम प्रसार विधि का एक प्रच्छन्न संस्करण है , इसलिए इसे भी देखना उपयोगी होगा।

जिस तरह से मैं SSFM / BPM को देखता हूं वह इस प्रकार है। इसका आधार लीन सिद्धांत का टैरोटर उत्पाद सूत्र है:

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

xyxyzψ(x,y,z)tNΨ1024×1024N=10242=1048576

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

K=D+VN×Nu(N)Ψexp(Kt)iK=D+Vएनयू(एन)डी+वीमैं2/(2मीटर)-मैं-1वी0+मैं-1(वी0-वी(एक्स,y,z,टी0))वी0 हाथ में समस्या के लिए कुछ सुविधाजनक "मतलब है" संभावित है।

हम जाने:

(3)डी=मैं2मीटर2-मैं-1वी0वी=मैं-1(वी0-वी(एक्स,y,z,टी))

मैंने उन्हें इस तरह क्यों विभाजित किया है, यह नीचे स्पष्ट हो जाएगा।

के बारे में बात डीयह है कि यह एक हवाई जहाज की लहर के लिए विश्लेषणात्मक रूप से काम किया जा सकता है: यह गति समन्वयकों में एक सरल गुणन ऑपरेटर है। तो, बाहर काम करने के लिएΨexp(Δटीडी)Ψ, here are the first three steps of a SSFM/BPM cycle:

  1. Impart FFT to dataset Ψ to transform it into a set Ψ~ of superposition weights of plane waves: now the grid co-ordinates have been changed from x,y,z to kx,ky,kz;
  2. Impart Ψ~exp(ΔtD)Ψ~ by simply multiplying each point on the grid by exp(iΔt(V0kx2+ky2+kz2)/);
  3. Impart inverse FFT to map our grid back to exp(ΔtD)Ψ

    .Now we're back in position domain. This is the better domain to impart the operator V of course: here V is a simple multiplication operator. So here is your last step of your algorithmic cycle:

  4. Impart the operator Ψexp(ΔtV)Ψ by simply multiplying each point on the grid by the phase factor exp(iΔt(V0V(x,y,z,t))/)

....and then you begin your next Δt step and cycle over and over. Clearly it is very easy to put time-varying potentials V(x,y,z,t) into the code.

So you see you simply choose Δt small enough that the Trotter formula (1) kicks in: you're simply approximating the action of the operator exp(D+VΔt)exp(DΔt)exp(VΔt) and you flit back and forth with your FFT between position and momentum co-ordinates, i.e. the domains where V and D are simple multiplication operators.

Notice that you are only ever imparting, even in the discretised world, unitary operators: FFTs and pure phase factors.

One point you do need to be careful of is that as your Δt becomes small, you must make sure that the spatial grid spacing shrinks as well. Otherwise, suppose the spatial grid spacing is Δx. Then the physical meaning of the one discrete step is that the diffraction effects are travelling at a velocity Δx/Δt; when simulating Maxwell's equations and waveguides, you need to make sure that this velocity is much smaller than c. I daresay like limits apply to the Schrödinger equation: I don't have direct experience here but it does sound fun and maybe you could post your results sometime!

A second "experience" point with this kind of thing - I'd be almost willing to bet this is how you'll wind up following your ideas. We often have ideas that we want to do simple and quick and dirty simulations but it never quite works out that way! I'd begin with the SSFM as I've described above as it is very easy to get running and you'll quickly see whether or not its results are physical. Later on you can use your, say Mathematica SSFM code check the results of more sophisticated code you might end up building, say, a Crank Nicolson code along the lines of Kyle Kanos's answer.


Error Bounds

The Dynkin formula realisation of the Baker-Campbell-Hausdorff Theorem:

exp(DΔt)exp(V)Δt)=exp((D+V)Δt+12[D,V]Δt2+)
converging for some Δt>0 shows that the method is accurate to second order and can show that:

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

You can, in theory, therefore use the term exp(V)Δt)exp(12[D,V]Δt2) to estimate the error and set your Δt accordingly. This is not as easy as it looks and in practice bounds end up being instead rough estimates of the error. The problem is that:

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

and there are no readily transformed to co-ordinates wherein [D,V] is a simple multiplication operator. So you have to be content with exp(12[D,V]Δt2)eiφΔt2(id(12[D,V]iφ(t))Δt2) and use this to estimate your error, by working out (id(12[D,V]iφ(t))Δt2)ψ for your currently evolving solution ψ(x,t) and using this to set your Δt on-the-fly after each cycle of the algorithm. You can of course make these ideas the basis for an adaptive stepsize controller for your simulation. Here φ is a global phase pulled out of the dataset to minimise the norm of (12[D,V]iφ(t))Δt2; you can of course often throw such a global phase out: depending on what you're doing with the simulation results often we're not bothered by a constant phase global exp(φdt).

A relevant paper about errors in the SSFM/BPM is:

Lars Thylén. "The Beam Propagation Method: An Analysis of its Applicability", Optical and Quantum Electronics 15 (1983) pp433-439.

Lars Thylén thinks about the errors in non-Lie theoretic terms (Lie groups are my bent, so I like to look for interpretations of them) but his ideas are essentially the same as the above.


1
Rod, you are probably aware that you can do better if you use the so-called split-operator approximation, where exp[Δt(D+V)]exp[ΔtV/2]exp[ΔtD]exp[ΔtV/2]. In fact you can do some further splitting to carry the error to higher Δt powers. See for instance Bandrauk and Shen, Chem. Phys. Lett. 176, 428 (1991). Obviously your kinetic term cannot depend on the coordinates, that is, it doesn't work nicely in curvilinear coordinates.

1
Otherwise, this split-operator thing coupled to the FFT evaluation of the kinetic energy operator is one of the standard procedures to solve the TDSE on a grid-based representation in Molecular Physics.

@perplexity Many thanks. It's good to know what different fields use. The 1991 date on your reference is interesting: I was always pretty sure the split step idea came out of waveguide simulation in the late 1970s - so maybe I'm wrong.

1
You are not wrong at all. That was the inspiration indeed. The first work translating these ideas to QM that I am aware of is Feit, Fleck and Steiger, J. Comput. Phys. 47, 412 (1982) where, if I recall correctly, they essentially use the same tricks with the advantage that the operator here is unitary by construction (unlike in classical waves). The FFT-grid based approach to these type of simulations was first proposed by Ronnie Kosloff, I believe. He has a very nice review about this subject on his web page.

Another good reference in my field is David Tannor's book on Quantum Mechanics: A time-dependent perspective. Cheers.

5

I can recommend using the finite-difference time-domain (FDTD) method. I even wrote a tutorial some time back that should answer most of your questions:

J. R. Nagel, "A review and application of the finite-difference time-domain algorithm applied to the Schrödinger equation," ACES Journal, Vol. 24, No. 1, February 2009

I have some Matlab codes that run nicely for 1D systems. If you have experience with FDTD doing electromagnetics, it works great for quantum mechanics as well. I can post my codes if you're interested.

Basically, it just operates on the wavefunctions directly by splitting the derivatives up into finite differences. It is kind of similar to the Crank-Nicholson scheme, but not exactly. If you are familiar with FDTD from electromagnetic wave theory, then FDTD will be very intuitive when solving the Schrodinger equation.


4

The most straightforward finite difference method is fast and easy to understand, but is not unitary in time - so probability is not conserved. Crank-Nicholson-Crout averages the forward and backward finite difference methods to produce a hybrid implicit/explicit method that is still pretty easy to understand and to implement and is unitary in time. This site explains the method well, provides pseudocode, and gives the relevant properties:

http://www.physics.utah.edu/~detar/phycs6730/handouts/crank_nicholson/crank_nicholson/ Note: There is a - sign missing from the LHS of equation one of this link, which propagates throughout the page.

Where does the nonunitarity come from?

In a nut shell, solving the TDSE comes down to figuring out how to deal with

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

which contains a differential operator in an exponential.

Applying a forward finite difference turns the differential operator into a tridiagonal matrix (converting the Reals to a grid) and the exponential into the first two terms of its Taylor series

eiHt1iHt

This discretization and linearization is what gives rise to the nonunitarity. (You can show that the tridiagonal matrix is not unitary by direct computation.) Combining the forward finite difference with the backward finite difference produces the approximation

eiHt112iHt1+12iHt

which, kindly, happens to be unitary (again you can show it by direct computation).


Thanks for the quick response. Could you provide more details on both those methods? How do they work, and why? Where does the nonunitarity come from?
Emilio Pisanty

I would be happy to provide more detail, but to avoid missing my target audience, it would be useful to know how much education and experience you've had in each of the following background fields: Calculus, Differential Equations, Linear Algebra, Quantum Mechanics, and Numerical Methods (specifically Finite Difference Methods).

Please assume as much as you need from standard physics and math (though references to the more complicated parts would probably help). My numerical methods are a bit rusty, though.
Emilio Pisanty

Are there any differences between this and Kyle Kanos's answer? I mean, it's not obvious how to implement your last equation - as you've written it involves inverting a full operator - are you simply saying that the CN method is simply, through the solution of its tridiagonal equation, working out (1+i2Ht)1(1+i2Ht)ψ? Or is there a subtlety that I've missed? Actually you last equation is a good rendering insofar that it makes unitarity explicit for CN, a fact which is unclear in many descriptions of CN.

No, it is the same algorithm as given by Kyle Kanos. I just wrote it this way to give a different way of looking at it. I hoped easier to conceptualize - whereas his is easier to implement. Yes, you are ultimately just solving a tridiagonal equation. There was an old (1967) paper in AJP that I couldn't find earlier that describes it very well: ergodic.ugr.es/cphys/lecciones/SCHROEDINGER/ajp.pdf They used CN to produce 8mm film loops of gaussian wave packets scattering off various potentials. You can still find those film loops in many university physics demo libraries.

3

A few answers and comments here conflate confusingly the TDSE with a wave equation; perhaps a semantics issue, to some extent. The TDSE is the quantized version of the classical non-relativistic hamiltonian

H=p22m+V(x)=E.
With the rules
pix,  Eit,  xx,
(as discussed in chapter 1 of d'Espagnat, Conceptual foundations of quantum mechanics, https://philpapers.org/rec/ESPCFO), it therefore reads
[22mxx+V(x)]ψ=itψ,
so it is clearly a diffusion-like equation. If one used the relativistic energy, which contains a E2 term, then a wave-like equation such as
xxψ=ttψ+
would obtain (for V=0 for simplicity), such as the Pauli or Klein-Gordon equations. But that is, of course, a completely different matter.

Now, back to the TDSE, the obvious method is Crank-Nicolson as has been mentioned, because it is a small-time expansion that conserves the unitarity of the evolution (FTCS, e.g., does not). For the 1-space-D case, it can be treated as a matrix iteration, reading

ψn+1=(I+iτ2H~)1(Iiτ2H~)ψn
with I the identity matrix and
Hjk=(H~)jk=22m[δj+1,k+δj1,k2δjkh2]+Vjδjk.
(Details e.g. in Numerical methods for physics, http://algarcia.org/nummeth/nummeth.html, by A. L. Garcia). As most clearly seen in periodic boundary conditions, a space-localized ψ spreads out in time: this is expected, because the initial localized ψ is not an eigenstate of the stationary Schroedinger equation, but a superposition thereof. The (classical massive free particle) eigenstate with fixed momentum (for the non-relativistic kinetic operator) is simply ψs=eikx/L, i.e. fully delocalized as per Heisenberg principle, with constant probability density 1/L everywhere (note that I am avoiding normalization issues with continuum states by having my particle live on a finite, periodically repeated line). Using C-N, the norm
|ψ|2dx
is conserved, thanks to unitarity (this is not the case in other schemes, such as FTCS, e.g.). Incidentally, notice that starting from an energy espression such as
cp=E
with c fixed, you'd get
icx=it
i.e. the advection equation, which has no dispersion (if integrated properly with Lax-Wendroff methods), and your wavepacket will not spread in time in that case. The quantum analog is the massless-particle Dirac equation.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.