时间依赖哈密顿量的薛定谔方程是:
我尝试在ode45
中为时间相关的哈密顿量实现薛定谔方程的求解器。但是,因为哈密顿量$ H(t)$取决于时间。我不知道如何在ode45
中进行插值。你能给我一些提示吗?
psi0 = [0 1];
H = [1 0;0 1]*cos(t); %this is wrong, I do not know how to implement this and pass it to ode45
hbar = 1;
t = [0:1:100];
[T, psi] = ode45(dpsi, t, psi);
function dpsi = f(t, psi, H, psi0)
dpsi = (1/i)*H*psi;
我也试着想出一个矩阵插值解决方案 MATLAB: Interpolation that involve a matrix
答案 0 :(得分:2)
H
只是一个单位矩阵,因此我们可以将其与psi
向量相乘以获取psi
向量本身。然后,我们将i*hbar
带到等式的右侧,以便最终的等式采用ode45
接受的形式。最后,我们使用以下代码来解决psi
:
function schrodinger_equation
psi0 = [0;1];
hbar = 1;
t = [0 100];
[T,psi] = ode45(@(t,psi)dpsi(t,psi,hbar),t,psi0);
for i = 1:length(psi0)
figure
plot(T,real(psi(:,i)),T,imag(psi(:,i)))
xlabel('t')
ylabel('Re(\psi) or Im(\psi)')
title(['\psi_0 = ' num2str(psi0(i))])
legend('Re(\psi)','Im(\psi)','Location','best')
end
end
function rhs = dpsi(t,psi,hbar)
rhs = 1/(1i*hbar)*cos(t).*ones(2,1);
end
请注意,我已经分别绘制了psi
的两个组件,对于每个这样的图,我还分别绘制了实部和虚部。以下是psi0
的两个不同值的图: