Có những cách đơn giản để giải quyết số lượng phương trình Schrödinger phụ thuộc thời gian?


34

Tôi muốn chạy một số mô phỏng đơn giản về sự tán xạ của các gói sóng khỏi các tiềm năng đơn giản trong một chiều.

Có những cách đơn giản để giải quyết số lượng TDSE một chiều cho một hạt không? Tôi biết rằng, nói chung, cố gắng sử dụng các phương pháp ngây thơ để tích hợp các phương trình vi phân từng phần có thể nhanh chóng kết thúc trong thảm họa. Do đó tôi đang tìm kiếm các thuật toán

  • ổn định về số lượng,
  • rất đơn giản để thực hiện hoặc có các triển khai thư viện mã dễ truy cập,
  • chạy hợp lý nhanh, và hy vọng
  • tương đối đơn giản để hiểu.

Tôi cũng muốn chỉ đạo các phương pháp quang phổ tương đối rõ ràng, và đặc biệt là các phương pháp ít hơn nhiều so với việc giải phương trình Schrödinger độc lập với thời gian như bình thường. Tuy nhiên, tôi sẽ quan tâm đến các phương pháp phổ giả sử dụng B-splines hoặc whatnot. Nếu phương pháp có thể có tiềm năng phụ thuộc vào thời gian thì đó chắc chắn là một phần thưởng.

Tất nhiên, bất kỳ phương pháp nào như vậy sẽ luôn có một số nhược điểm, vì vậy tôi muốn nghe về những phương pháp đó. Khi nào nó không hoạt động? Cạm bẫy phổ biến là gì? Những cách nào nó có thể được đẩy, và những cách nào nó có thể không?



@EmilioPisanty Tôi đã thêm một cuộc thảo luận về lỗi vào bài viết SSFM của mình: Tôi nhận thấy (sau khi viết câu trả lời của tôi, xin lỗi) bạn không quan tâm đến các phương pháp quang phổ, nhưng chỉ trong trường hợp ...

Làm sạch chủ đề; loại bỏ các cuộc thảo luận về chủ đề từ Vật lý.
Geoff Oxberry

1
Tôi khuyên bạn nên bắt đầu ở đây, mặc dù có rất nhiều công việc gần đây: So sánh các sơ đồ truyền bá khác nhau cho phương trình Schrödinger phụ thuộc thời gian .
David Ketcheson

3
@GeoffOxberry bạn có thể cung cấp ảnh chụp màn hình của những bình luận đó không?
Emilio Pisanty

Câu trả lời:


24

Phương trình Schroedinger là một cách hiệu quả một phản ứng-khuếch tán phương trình

(1)iψt=2ψ+Vψ
(tất cả các hằng số là 1). Khi nói đến bất kỳ phương trình vi phân từng phần, có hai cách để giải nó:
  1. Phương pháp ngầm định (adv: bước thời gian lớn & ổn định vô điều kiện, disadv: yêu cầu người giải ma trận có thể cung cấp dữ liệu xấu)
  2. Phương pháp rõ ràng (adv: dễ thực hiện, disadv: yêu cầu dấu thời gian nhỏ để ổn định)

Đối với các phương trình parabol (tuyến tính theo và bậc 2 theo x ), phương pháp ngầm thường là lựa chọn tốt hơn. Lý do là điều kiện ổn định cho phương pháp tường minh đòi hỏi d t d x 2 , sẽ rất nhỏ. Bạn có thể tránh vấn đề này bằng cách sử dụng phương pháp ngầm, không có giới hạn như vậy trong bước thời gian (mặc dù trong thực tế, bạn thường không làm cho nó quá lớn vì bạn có thể mất một số vật lý). Những gì tôi mô tả tiếp theo là phương pháp Crank-Nicolson , một sơ đồ ngầm chính xác thứ hai (không gian & thời gian).txdtdx2

Khởi đầu

Để giải quyết PDE một cách tính toán, bạn cần phải phân biệt nó (làm cho các biến vừa với lưới). Đơn giản nhất là một lưới hình chữ nhật, Cartesian. Ở đây, đại diện cho chỉ số thời gian (và luôn luôn là một siêu tập lệnh) và j là chỉ số vị trí (luôn luôn là một chỉ mục). Bằng cách sử dụng một khai triển Taylor cho biến vị trí phụ thuộc, phương trình (1) trở thành i ψ n + 1 j - ψ jnj Trong trường hợp chúng tôi đã giả định rằngV=V(x). Điều xảy ra tiếp theo là một nhóm các chỉ số không gian và thời gian (bạn có thể muốn kiểm tra lại toán học): 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) Phương trình này có dạng (A0A-00Một+Một0Một-00Một+Một0Một-)(ψ 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
Trong đó được gọi là một ma trận ba đường chéo và cómột giải pháp nổi tiếng! (cộng ví dụ làm việc, trong đó có một bằng văn bản của tôi). Phương pháp rõ ràng cào ra toàn bộ phía bên trái (hoặc tôi nên nói dòng trên cùng?) Của phương trình (2) ngoại trừthuật ngữiψ n + 1 j .
(A0A00A+A0A00A+A0A)(ψ0n+1ψ1n+1ψJ1n+1)=(ψ0nψ1nψJ1n)
iψjn+1

Các vấn đề

Vấn đề lớn nhất mà tôi đã tìm thấy với các phương thức ngầm là chúng phụ thuộc rất nhiều vào các điều kiện biên. Nếu bạn có các điều kiện biên được xác định / thực hiện kém, bạn có thể nhận được các dao động giả trong các ô có thể dẫn đến kết quả xấu (xem bài đăng SciComp của tôi về một chủ đề tương tự). Điều này dẫn đến việc thực sự có độ chính xác bậc 1 trong không gian, thay vì thứ 2 mà sơ đồ của bạn phải đưa ra.

Các phương thức ngầm cũng được cho là khó song song, nhưng tôi chỉ sử dụng chúng cho các phương trình nhiệt 1D và không cần hỗ trợ song song, vì vậy tôi không thể xác minh cũng như từ chối yêu cầu.

Tôi cũng không chắc bản chất phức tạp của hàm sóng sẽ ảnh hưởng đến các tính toán như thế nào. Công việc mà tôi đã thực hiện sử dụng các phương trình động lực học Euler và do đó hoàn toàn có thật với cường độ không âm.

Tiềm năng phụ thuộc thời gian

Nếu bạn có tiềm năng phụ thuộc thời gian phân tích (ví dụ ), thì bạn chỉ cần sử dụng thời gian hiện tại, t , cho V j trên RHS của (2) và thời gian trong tương lai, t + d t , trên LHS. Tôi không tin rằng điều này sẽ tạo ra bất kỳ vấn đề nào, nhưng tôi chưa kiểm tra điều này nên tôi cũng không thể xác minh hoặc từ chối khía cạnh này.Vcos(ωt)tVjt+dt

Lựa chọn thay thế

Có một số lựa chọn thay thế thú vị cho phương pháp Crank-Nicolson. Đầu tiên là phương pháp "siêu bước thời gian". Trong phương pháp rõ ràng này, bạn thực hiện bước thời gian ( ) và sử dụng rễ của đa thức Chebyshev để có được một bộ tối ưu hóa thời gian bước nhanh chóng tổng hợp để d t nhanh hơn làm d t / N bước N lần (hiệu quả là bạn nhận được Δ T = N 2 d t để mỗi bước N tiến bạn N d tdtdx2dtdt/NNΔT=N2dtNNdtđúng giờ). (Tôi sử dụng phương pháp này trong nghiên cứu của mình vì bạn có một "thông lượng" được xác định rõ từ ô này sang ô khác được sử dụng để hợp nhất dữ liệu từ bộ xử lý này sang bộ xử lý khác, sử dụng sơ đồ Crank-Nicolson mà tôi không thể thực hiện được).

EDIT Một điều cần lưu ý là phương pháp này là thứ tự chính xác theo thời gian, nhưng nếu bạn sử dụng phương pháp Runge-Kutta 2 kết hợp, nó sẽ cung cấp cho bạn sơ đồ chính xác thứ 2 theo thời gian.

Cái khác được gọi là một hướng rõ ràng xen kẽ . Phương pháp này đòi hỏi bạn phải có các điều kiện biên đã biết và được xác định rõ. Sau đó, nó tiến hành giải phương trình bằng cách sử dụng đường biên trực tiếp trong tính toán (không cần áp dụng nó sau mỗi bước). Điều xảy ra trong phương pháp này là bạn giải quyết PDE hai lần, một lần trong lần quét lên và một lần trong lần quét xuống. Việc sử dụng quét lên trong khi những ứng dụng quét xuống 2ψ

2ψx2ψj1n+1ψjn+1ψjn+ψj+1ndx2
cho phương trình khuếch tán trong khi các thuật ngữ khác sẽ giữ nguyên. Bước thời giann+1sau đó được giải quyết bằng cách lấy trung bình hai lần quét định hướng.
2ψx2ψj+1n+1ψjn+1ψjn+ψj1ndx2
n+1

1
Câu trả lời tuyệt vời, chỉ có khiếu nại là bạn đánh bại tôi với nó!
Kyle

@ChrisWhite: Tôi đã suy nghĩ về cách có thể được thực hiện vào sáng sớm hôm nay và điều duy nhất tôi nghĩ ra là làm một lần cho và một lần cho tôi . Tôi sẽ xem tờ giấy đó (và quan trọng hơn là mã miễn phí họ đưa ra) và xem cách họ đề xuất để làm điều đó. RI
Kyle Kanos

@ChrisWhite Có lẽ sự lén lút là để tính toán các hàm riêng, mà tôi đã thấy được tính bằng cách đánh dấu thời gian tưởng tượng: bạn sắp xếp hướng bước sao cho hàm riêng năng lượng thấp nhất có giá trị âm ít nhất là và do đó sự phân rã chậm nhất. Khi lặp lại trên một đầu vào ngẫu nhiên, rất nhanh chóng chỉ còn lại hình dạng của hàm sinh năng lượng thấp nhất. Sau đó, bạn trừ điều này khỏi đầu vào ngẫu nhiên và thực hiện lại quá trình: bây giờ hàm sinh năng lượng thấp nhất tiếp theo là ưu thế. Và như vậy. Nghe có vẻ hơi tinh ranh (đặc biệt là ngày càng cao - hhν eigenfuncs) nhưng nó hoạt động! hν

1
@DavidKetcheson: Một phương trình phản ứng-khuếch tán có dạng . Trong trường hợp phương trình Schrodinger, R ( u ) = V u ; Sau đó tôi có thể hỏi làm thế nào mà nó không phải là một phương trình kiểu RD? Và, thật kỳ lạ, phương trình Schrodinger thực sự xuất hiện trong bài viết wiki khuếch tán phản ứng mà tôi đã tham khảo. Sự tương đương này tôi thực hiện cũng xuất hiện trong nhiều tạp chí và văn bản được xuất bảntu=Dx2u+R(u)R(u)=Vu(đi trước và tìm kiếm nó). Có lẽ tốt hơn là tôi nên tư vấn sử dụng các thư viện tiêu chuẩn (như MO phổ biến ở đây), chẳng hạn như PETSc, deal.ii hoặc pyCLAW?
Kyle Kanos

1
@KyleKanos: Bài viết của bạn rất hay. Trên thực tế, trong bài viết được đăng bởi DavidKetcheson, Crank-Nicolson được ủng hộ bởi tài liệu tham khảo đầu tiên. Việc so sánh với khuếch tán phản ứng là tốt; như bạn lưu ý, việc so sánh với khuếch tán phản ứng xuất hiện trong nhiều nguồn được công bố. Tôi nghĩ DavidKetcheson đang tìm kiếm thứ gì đó như "phương trình sóng phân tán" đã đề cập trước đó.
Geoff Oxberry

22

Đầu những năm 90, chúng tôi đã tìm kiếm một phương pháp để giải quyết TDSE đủ nhanh để thực hiện hoạt hình trong thời gian thực trên PC và đã tìm thấy một phương pháp rõ ràng, ổn định, đơn giản đáng kinh ngạc được mô tả bởi PB Visscher trong Máy tính trong Vật lý : " Thuật toán rõ ràng nhanh cho phương trình Schrödinger phụ thuộc vào thời gian ". Ghi chú Visscher rằng nếu bạn chia hàm sóng thành phần thực và phần ảo, , SE sẽ trở thành hệ thống:ψ=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

Xác định mật độ xác suất là

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)

làm cho thuật toán đơn nhất, do đó bảo toàn xác suất.

Với đủ tối ưu hóa mã, chúng tôi có thể có được hình ảnh động rất đẹp được tính toán trong thời gian thực trên máy 80486. Học sinh có thể "rút ra" bất kỳ tiềm năng nào, chọn tổng năng lượng và xem sự tiến hóa theo thời gian của gói gaussian.


Đó là một mẹo rất gọn gàng để giải quyết các thành phần thực và tưởng tượng! Cũng lưu ý rằng bạn có thể nhận được các phương trình lớn, tập trung bằng cách sử dụng $$ ... $$. Tôi đã tự do làm điều này cho bạn, tôi hy vọng bạn không phiền!
Kyle Kanos

Chúng tôi rất vui mừng khi tìm thấy thuật toán - thật dễ dàng để lập trình và chạy nhanh. Phần khó nhất là điều kiện ban đầu đúng, R ở t = 0 và tôi ở mức 0,5dt ... Tôi không bận tâm đến việc chỉnh sửa, tôi rất vui khi nhận được phương trình.

1
@ user40172 Chúng tôi đã làm điều tương tự cho các ống dẫn sóng cùng một lúc và chúng tôi đã giải quyết được BPM được mô tả trong câu trả lời của tôi. Lý do là tại thời điểm đó chúng tôi có thể chạy các FFT riêng biệt với CPU chính bằng bảng DSP. Chúng tôi nghĩ rằng chúng tôi đã rất thông minh, nhưng tôi phải nói rằng về cơ bản là một giải pháp phần cứng cho một vấn đề phần mềm có vẻ khá khó khăn trong năm 2014! Phiên bản mới nhất của Visual Studio C ++ tự động mã hóa mã trên CPU và nó thực hiện công việc tuyệt vời với FFT.

1
0.5dt

1
@Rusian Vì chúng tôi đang thực hiện tán xạ, chúng tôi đã sử dụng gói sóng Gaussian hạt tự do tiêu chuẩn nhưng đảm bảo bắt đầu "đủ xa" khỏi bất kỳ khu vực nào có tiềm năng khác không. Xem, ví dụ: trình

10

xt

Những gì bạn đang làm là một phiên bản trá hình của Phương pháp truyền tia để truyền quang qua ống dẫn sóng có tiết diện khác nhau (tương tự như tiềm năng thay đổi theo thời gian), vì vậy cũng rất hữu ích khi tìm kiếm điều này.

Cách tôi nhìn vào SSFM / BPM như sau. Nền tảng của nó là công thức sản phẩm Trotter của lý thuyết Lie:

(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)Ψđiểm kinh nghiệm(Kt). (Tôi đã húttôi yếu tố vào K= =D+Vtrên RHS để tôi có thể nói chuyện dễ dàng hơn theo thuật ngữ lý thuyết Lie). Cho kích thước củaN, môi trường sống tự nhiên của các nhà khai thác 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
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.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.