Czy istnieją proste sposoby numerycznego rozwiązania zależnego od czasu równania Schrödingera?


34

Chciałbym uruchomić kilka prostych symulacji rozpraszania pakietów fal z prostych potencjałów w jednym wymiarze.

Czy istnieją proste sposoby numerycznego rozwiązania jednowymiarowego TDSE dla pojedynczej cząstki? Wiem, że ogólnie rzecz biorąc, próba zastosowania naiwnych podejść do zintegrowania równań różniczkowych cząstkowych może szybko zakończyć się katastrofą. Dlatego szukam algorytmów, które

  • są stabilne numerycznie,
  • są łatwe do wdrożenia lub mają łatwo dostępne implementacje biblioteki kodów,
  • biegnij dość szybko i miejmy nadzieję
  • są stosunkowo proste do zrozumienia.

Chciałbym również omijać metody spektralne, a zwłaszcza metody, które są niczym więcej niż rozwiązywaniem równania Schrödingera niezależnego od czasu jak zwykle. Byłbym jednak zainteresowany metodami pseudo-spektralnymi, które wykorzystują splajny B lub tym podobne. Jeśli metoda może wymagać potencjału zależnego od czasu, jest to zdecydowanie bonus.

Oczywiście, każda taka metoda zawsze będzie miała szereg wad, więc chciałbym o nich usłyszeć. Kiedy to nie działa? Jakie są typowe pułapki? Które sposoby mogą być popchnięte, a które nie?



@EmilioPisanty Dodałem dyskusję o błędach do mojego zapisu SSFM: Zauważyłem (po napisaniu mojej odpowiedzi, przepraszam) nie lubisz metod spektralnych, ale na wszelki wypadek ...

Oczyszczona nić; usunięcie dyskusji na temat aktualności z fizyki.
Geoff Oxberry


3
@GeoffOxberry czy możesz udostępnić zrzut ekranu z tymi komentarzami?
Emilio Pisanty

Odpowiedzi:


24

Równanie Schroedingera jest faktycznie równaniem dyfuzji reakcyjnej (wszystkie stałe to 1). Jeśli chodzi o równanie różniczkowe cząstkowe, istnieją dwa sposoby ich rozwiązania:

(1)iψt=2ψ+Vψ
  1. Metoda niejawna (adv: duże kroki czasowe i bezwarunkowo stabilna, disadv: wymaga rozwiązania macierzy, które może dawać złe dane)
  2. Metoda jawna (adv: łatwa do wdrożenia, disadv: wymaga małych kroków czasowych dla stabilności)

W przypadku równań parabolicznych (liniowych i 2 rzędu w x ) metoda niejawna jest często lepszym wyborem. Powodem jest warunek stabilności dla metody jawnej wymaga d t d x 2 , która będzie bardzo mała. Możesz uniknąć tego problemu, stosując metodę niejawną, która nie ma takich ograniczeń co do kroku czasowego (chociaż w praktyce zwykle nie czynisz go niesamowicie dużym, ponieważ możesz stracić część fizyki). Następnie opiszę metodę Crank-Nicolsona , wspólny niejawny schemat dokładności drugiego rzędu (czasoprzestrzeni).txdtdx2

Przystawki

Aby rozwiązać obliczeniowo PDE, musisz go zdyskretyzować (dopasować zmienne do siatki). Najbardziej prosta jest prostokątna, kartezjańska siatka. Tutaj oznacza indeks czasu (i zawsze jest superskryptem), a j indeks pozycji (zawsze jest indeksem dolnym). Dzięki zastosowaniu rozszerzenia Taylora dla zmiennej zależnej od pozycji równanie (1) staje się i ψ n + 1 j - ψ jnj Gdzie przyjęliśmy, żeV=V(x). Następnie następuje grupowanie podobnych wskaźników przestrzennych i czasowych (możesz dwukrotnie sprawdzić matematykę): 1

iψjotn+1-ψjotret=-12)(ψjot+1n+1-2)ψjotn+1+ψjot-1n+1rex2)+ψjot+1n-2)ψjotn+ψjot-1nrex2))+12)(V.jotψjotn+1+V.jotψjotn)
V.=V.(x) To równanie ma postać (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
co jest zwane matryca trój przekątną i maznanego rozwiązania! (oraz przykładów roboczych, w tym piśmie przeze mnie). Sposób ten wyraźne zadrapania spośród całej lewej strony (a raczej górną granicę?) W równaniu (2), z wyjątkiemı* F n + 1, j okresie.
(A0A00A+A0A00A+A0A)(ψ0n+1ψ1n+1ψJ1n+1)=(ψ0nψ1nψJ1n)
iψjn+1

Zagadnienia

Największym problemem, jaki znalazłem przy zastosowaniu metod niejawnych, jest to, że są one silnie zależne od warunków brzegowych. Jeśli masz źle zdefiniowane / zaimplementowane warunki brzegowe, możesz uzyskać fałszywe oscylacje w swoich komórkach, które mogą prowadzić do złych wyników (zobacz mój post SciComp na podobny temat). Prowadzi to do uzyskania dokładności pierwszego rzędu w przestrzeni, a nie drugiej, którą powinien dać twój plan .

Metody niejawne są również rzekomo trudne do zrównoleglenia, ale użyłem ich tylko do równań ciepła 1D i nie potrzebowałem wsparcia równoległego, więc nie mogę zweryfikować ani odrzucić twierdzenia.

Nie jestem również pewien, w jaki sposób złożony charakter funkcji falowej wpłynie na obliczenia. Praca, którą wykonałem, wykorzystuje równania dynamiczne płynu Eulera , a zatem są całkowicie rzeczywiste o wielkościach nieujemnych.

Potencjał zależny od czasu

Jeśli masz analityczny potencjał zależny od czasu (np ), to by po prostu użyć aktualnego czasu, t , dla V j na RHS (2) oraz czasu przyszłego, t + d t , na LHS. Nie wierzę, że spowodowałoby to jakiekolwiek problemy, ale nie przetestowałem tego, więc nie mogę również zweryfikować ani zaprzeczyć temu aspektowi.V.sałata(ωt)tV.jott+ret

Alternatywy

Istnieje również kilka interesujących alternatyw dla metody Crank-Nicolson. Pierwszym krokiem jest tak zwana metoda „przeskakiwania w czasie”. W tej jawnej metodzie bierzesz krok czasowy ( ) i używasz pierwiastków wielomianów Czebyszewa, aby uzyskać zoptymalizowany zestaw kroków czasowych, które szybko sumują się do d t szybciej niż robienie d t / N kroków N razy (faktycznie dostajesz Δ T = N 2 d t, tak że każdy krok N posuwa cię naprzód N d tretrex2)retret/N.N.ΔT.=N.2)retN.N.reto czasie). (Używam tej metody w swoich badaniach, ponieważ masz dobrze zdefiniowany „strumień” z jednej komórki do drugiej, który jest używany do scalania danych z jednego procesora do drugiego, używając schematu Crank-Nicolson, którego nie byłem w stanie zrobić).

EDYCJA Należy zwrócić uwagę na to, że metoda ta jest dokładna z dokładnością do pierwszego rzędu w czasie, ale jeśli użyjesz metody Runge-Kutta 2 w połączeniu, da ci to dokładny schemat drugiego rzędu w czasie.

Drugi nazywany jest jawnym kierunkiem przemiennym . Ta metoda wymaga znanych i dobrze zdefiniowanych warunków brzegowych. Następnie przystępuje do rozwiązania równania przy użyciu granicy bezpośrednio w obliczeniach (nie trzeba jej stosować po każdym kroku). W tej metodzie rozwiązujesz PDE dwa razy, raz w górę i raz w dół. Przeciąganie w górę używa podczas gdy wobulacji w dół używa 2ψ

2)ψx2)ψjot-1n+1-ψjotn+1-ψjotn+ψjot+1nrex2)
dla równania dyfuzji, podczas gdy pozostałe warunki pozostaną takie same. Krok czasowyn+1jest następnie rozwiązany przez uśrednienie dwóch kierunkowych przebiegów.
2)ψx2)ψjot+1n+1-ψjotn+1-ψjotn+ψjot-1nrex2)
n+1

1
Świetna odpowiedź, jedyny zarzut to to, że mnie pobiłaś!
Kyle

@ChrisWhite: Myślałem o tym, jak można to zrobić dziś rano i jedyne, co wymyśliłem, to zrobić to raz dla a raz dla mnie . Rzucę okiem na ten artykuł (a co ważniejsze na darmowy kod, który rozdają) i zobaczę, jak sugerują to zrobić. RI
Kyle Kanos

@ChrisWhite Być może spryt polega na obliczaniu funkcji własnych, które widziałem obliczone na podstawie wyobrażonego pomiaru czasu: ustawiasz krok tak, aby funkcja własna najniższej energii miała najmniejszą ujemną wartość i tym samym najwolniejszy rozkład. Podczas iteracji na losowym wejściu bardzo szybko pozostaje tylko kształt funkcji własnej najniższej energii. Następnie odejmij to od losowego wejścia i wykonaj ponownie proces: teraz następna funkcja własna najniższej energii jest dominująca. I tak dalej. Brzmi nieco podejrzanie (zwłaszcza coraz wyżej - hhν eigenfuncs), ale działa! hν

1
@DavidKetcheson: Równanie reakcji-dyfuzji przyjmuje postać tu=Dx2u+R(u) . W przypadku równania Schrodingera, ; Mogę zapytać, jak wtedy, że to nie równanie RD-type? Co ciekawe, równanie Schrodingera faktycznie pojawia się w artykule wiki na temat dyfuzji reakcji, do którego się odwoływałem. Ten dwuznaczność, której dokonałem, pojawia się również w wielu opublikowanych czasopismach i tekstachR(u)=Vu(śmiało i poszukaj go). Być może lepiej byłoby dla mnie doradzić korzystanie ze standardowych bibliotek (jak tutaj powszechne MO), takich jak PETSc, deal.ii lub pyCLAW?
Kyle Kanos

1
@KyleKanos: Twój post jest dobry. W rzeczywistości, w artykule opublikowanym przez DavidKetcheson, Crank-Nicolson jest popierany przez pierwsze odniesienie. Porównanie do dyfuzji reakcji jest w porządku; jak zauważasz, porównanie do dyfuzji reakcji pojawia się w wielu opublikowanych źródłach. Myślę, że David Ketcheson szukał czegoś w rodzaju wspomnianego wcześniej „dyspersyjnego równania falowego”.
Geoff Oxberry

22

Na początku lat 90. szukaliśmy metody rozwiązania TDSE wystarczająco szybko, aby wykonywać animacje w czasie rzeczywistym na PC i natknęliśmy się na zaskakująco prostą, stabilną, wyraźną metodę opisaną przez PB Visschera w Computers in Physics : „ Szybki, wyraźny algorytm dla zależnego od czasu równania Schrödingera ”. Visscher zauważa, że ​​jeśli podzielisz funkcję fali na rzeczywistą i wymyśloną część, , SE stanie się systemem:ψ=R+iI

dRdt=HIdIdt=HRH=12m2+V

Jeśli następnie obliczyć i że czasami przesuniętych ( R na 0 , hemibursztynianu t , 2 hemibursztynianu t , . . . I I w 0,5 hemibursztynianu t , 1,5 Δ t ,RIR0,Δt,2Δt,...I , Można uzyskać dyskretyzacji: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

Definiowanie gęstości prawdopodobieństwa jako

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)

sprawia, że ​​algorytm jest jednolity, co pozwala zachować prawdopodobieństwo.

Przy wystarczającej optymalizacji kodu byliśmy w stanie uzyskać bardzo ładne animacje obliczane w czasie rzeczywistym na maszynach 80486. Uczniowie mogli „narysować” dowolny potencjał, wybrać całkowitą energię i obserwować ewolucję w czasie pakietu gaussowskiego.


To bardzo fajna sztuczka do rozwiązywania prawdziwych i wymyślonych elementów! Zauważ też, że możesz uzyskać duże, wyśrodkowane równania za pomocą $$ ... $$. Zrobiłem to dla ciebie, mam nadzieję, że nie masz nic przeciwko!
Kyle Kanos

Z przyjemnością znaleźliśmy algorytm - programowanie było łatwe i działało szybko. Najtrudniejszą częścią było uzyskanie prawidłowych warunków początkowych, R przy t = 0, a ja przy 0,5 dt ... Nie mam nic przeciwko edycji, w ogóle cieszyłem się z równań.

1
@ user40172 Robiliśmy to samo dla falowodów mniej więcej w tym samym czasie i zdecydowaliśmy się na BPM opisany w mojej odpowiedzi. Powodem było to, że w tym czasie mogliśmy uruchamiać FFT oddzielnie od głównego procesora za pomocą płyty DSP. Myśleliśmy, że jesteśmy tacy sprytni, ale muszę powiedzieć, że wymyślenie rozwiązania sprzętowego problemu oprogramowania wygląda dość kiepsko w 2014 roku! Najnowsza wersja programu Visual Studio C ++ automatycznie wektoryzuje kod w procesorach i wykonuje piękne zadanie z FFT.

1
0.5dt

1
@Rusian Ponieważ robiliśmy rozpraszanie, użyliśmy standardowego pakietu fal Gaussa o swobodnych cząsteczkach, ale upewniliśmy się, że uruchomimy go „wystarczająco daleko” od dowolnego regionu, w którym potencjał był niezerowy. Zobacz na przykład: demonstrations.wolfram.com/EvolutionOfAGaussianWavePacket

10

xt

To, co będziesz robić, to ukryta wersja Metody propagacji wiązki do optycznej propagacji przez falowód o zmiennym przekroju (analogicznie do potencjałów zmieniających się w czasie), więc warto byłoby to również sprawdzić.

Sposób, w jaki patrzę na SSFM / BPM jest następujący. Jego podstawą jest formuła produktu Trottera z teorii Liego:

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

xyxyzψ(x,y,z)tNΨ (for a 1024×1024 grid we have N=10242=1048576) and then your Schrödinger equation is of the form:

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

where K=D+V is an N×N skew-Hermitian matrix, an element of u(N), and Ψ is going to be mapped with increasing time by an element of the one parameter group exp(Kt). (I've sucked the i factor into the K=D+V on the RHS so I can more readily talk in Lie theoretic terms). Given the size of N, the operators' natural habitat U(N) is a thoroughly colossal Lie group so PHEW! yes I am still talking in wholly theoretical terms!. Now, what does D+V look like? Still imagining for now, it could be thought of as a finite difference version of i2/(2m)i1V0+i1(V0V(x,y,z,t0)), where V0 is some convenient "mean" potential for the problem at hand.

We let:

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

Why I have split them up like this will become clear below.

The point about D is that it can be worked out analytically for a plane wave: it is a simple multiplication operator in momentum co-ordinates. So, to work out Ψexp(ΔtD)Ψ, 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
W przeciwnym razie ta funkcja podzielonego operatora połączona z oceną FFT operatora energii kinetycznej jest jedną ze standardowych procedur rozwiązywania TDSE na reprezentacji opartej na siatce w fizyce molekularnej.

@perplexity Wielkie dzięki. Dobrze wiedzieć, z czego korzystają różne pola. Twoja referencja z 1991 roku jest interesująca: zawsze byłem pewien, że pomysł podzielonego kroku powstał w wyniku symulacji falowodów pod koniec lat siedemdziesiątych - więc może się mylę.

1
W ogóle się nie mylisz. To rzeczywiście była inspiracja. Pierwszą pracą tłumaczącą te pomysły na QM, o której wiem, są Feit, Fleck i Steiger, J. Comput. Phys. 47, 412 (1982), o ile dobrze pamiętam, w zasadzie używają tych samych sztuczek, z tą przewagą, że operator tutaj jest jednolity pod względem budowy (w przeciwieństwie do fal klasycznych). Podejście oparte na siatce FFT do tego typu symulacji zostało po raz pierwszy zaproponowane przez Ronniego Kosloffa. Na swojej stronie ma bardzo miłą recenzję na ten temat.

Innym dobrym odniesieniem w mojej dziedzinie jest książka Davida Tannora o mechanice kwantowej: perspektywa zależna od czasu. Twoje zdrowie.

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

Czy są jakieś różnice między tym a odpowiedzią Kyle Kanos ? Chodzi mi o to, że nie jest oczywiste, jak zaimplementować swoje ostatnie równanie - jak napisałeś, polega na odwróceniu pełnego operatora - czy po prostu mówisz, że metoda CN po prostu rozwiązuje swoje równanie trójdzielne(1+ja2)H.t)-1(1+ja2)H.t)ψ? A może subtelność tęskniłem? W rzeczywistości ostatnie równanie jest dobrym renderingiem, o ile ujednolica jednoznaczność CN, co jest niejasne w wielu opisach CN.

Nie, jest to ten sam algorytm, który podał Kyle Kanos. Właśnie napisałem to w ten sposób, aby dać inny sposób spojrzenia na to. Miałem nadzieję, że łatwiej to pojąć - podczas gdy jego łatwiej jest wdrożyć. Tak, ostatecznie rozwiązujesz równanie tridiagonalne. W AJP był stary (1967) artykuł, którego wcześniej nie mogłem znaleźć, który bardzo dobrze go opisuje: ergodic.ugr.es/cphys/lecciones/SCHROEDINGER/ajp.pdf Użyli CN do produkcji 8 mm pętli filmowych pakietów fal gaussowskich rozpraszanie różnych potencjałów. Te pętle filmowe wciąż można znaleźć w wielu bibliotekach demonstracyjnych fizyki uniwersyteckiej.

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.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.