2016-06-23 3 views
0

Уравнение Шредингера для зависящего от времени гамильтониана:Решения зависит от времени уравнения Шредингера с использованием MATLAB ode45

$$i\hbar\frac{d}{dt}\psi(t) = H(t)\psi(t) \, .$$

Я пытаюсь реализовать решатель для уравнения Шредингера для зависящего от времени гамильтониана в 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.

ответ

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:

enter image description here

enter image description here

+0

Означает ли это, вы не должны делать интерполяцию в ode45? Изменяется ли член $ cos (t) $ внутри ode45? – kyle

+0

Термин 'cos (t)', безусловно, учитывается, как вы можете видеть в функции 'dpsi'. – edwinksl

+0

Спасибо. Что делать, если моя временная зависимость не так проста, так что «H» не может быть представлена ​​как единичная матрица? Что мне делать? Например, 'H = [t 1; 3t t^2]'? – kyle

Смежные вопросы