朗道-齐纳问题的数值解

计算科学 量子力学
2021-12-20 06:34:47

我尝试使用中点法并数值求解原始朗道-齐纳 (LZ) 问题的薛定谔方程:2×2哈密​​顿量

(αtδδαt)

有初始条件ψ=(1,0)(基态)在某些t=1000,然后说α=0.01δ=0.04. 我花了很多时间片(108)这给出了一个时间步长~105.

我的目标是从 LZ 公式中得到准确的值,但无论我采取多小的时间步长,在对渐近行为中出现的振荡进行平均后,我总是有 0.1% 的误差。

有没有人遇到过这个问题?

这是我的 Matlab 代码:

alpha=0.01;

delta=0.04;

N=100000001;

ti=-1000;

tf=1000;

time=linspace(ti,tf,N);

sec=time(2)-time(1);

c1=[1,zeros(1,N-1)];

c2=[0,zeros(1,N-1)];

p=exp(-2*pi*delta^2/(alpha*2));

disp(sqrt(p))

for t=2:N

c1(t)=c1(t-1)-1i*sec*(alpha*(time(t-1)+sec/2)*(c1(t-1)-1i*sec/2*
(alpha*time(t-1)*c1(t-1)+delta*c2(t-1)))+delta*(c2(t-1)-1i*sec/2*(-alpha*time(t-
1)*c2(t-1)+delta*c1(t-1))));

c2(t)=c2(t-1)-1i*sec*(-alpha*(time(t-1)+sec/2)*(c2(t-1)-1i*sec/2*(-

alpha*time(t-1)*c2(t-1)+delta*c1(t-1)))+delta*(c1(t-1)-1i*sec/2*(alpha*time(t-

1)*c1(t-1)+delta*c2(t-1))));

end

disp(sum(abs(c1(end-(N-1)/50:end))/((N-1)/50+1)));

也张贴在物理 SE

1个回答

我最近遇到了类似的问题,我认为这是一个纯粹的数字问题。当你绘制|c1(t)|2你看到即使在t=1000,它以大于您的误差的幅度快速振荡。对于 ti、tf 和 N 的较大值,结果仍然会发生变化。您是否尝试过除中点方法之外的其他集成例程?我不是这个领域的专家,但也许有一些集成例程可以更有效地使用 osciallting 函数。

但是,我想知道你是如何得到你的方程的c1(t)c2(t). 当我建立一个类似于你的哈密顿量时,我得到:

c˙1=iαtc1iδc2
c˙2=iδc1+iαtc2

然后我的方程(使用中点方法)只包含方程的第一个和,即:

c1(t)=c1(t-1)-1i*sec*(alpha*(time(t-1)+sec/2)*(c1(t-1)-1i*sec/2*(alpha*time(t-1)*c1(t-1)+delta*c2(t-1))));

c2(t)=c2(t-1)-1i*sec*(-alpha*(time(t-1)+sec/2)*(c2(t-1)-1i*sec/2*(-alpha*time(t-1)*c2(t-1)+delta*c1(t-1))));

(或更好的可读性:

c1(t+Δt)=c1(t)iΔt[α(t+Δt)(c1(t)iΔt2[αtc1(t)+δc2(t)])]

但是,由此产生的结果没有任何意义,我不知道我的错误可能在哪里......