薛定谔方程数值计算中波向量与密度矩阵的区别

计算科学 Python 数字 scipy 麻木的 微分方程
2021-12-21 12:12:19

我以两种方式在数值上求解了薛定谔方程的以下两级时间相关哈密顿量:

import numpy as np

def H(t):
    return np.array([[t,0.5],[0.5,-t]],dtype="complex64")

首先,将状态视为波向量:

from scipy.integrate import solve_ivp
def schrodinger(t, X):
    dXdt = -1j * H(t).dot(X)
    return dXdt

T=80.
t_list = np.arange(-T, T, 2*T / 1000.0)
init_state= np.array([1.,0.],dtype="complex64")
solution = solve_ivp(fun=lambda t, X: schrodinger(t, X), t_span=[-T,T], y0=init_state, t_eval=t_list, method="RK45", vectorized=True)

其次,状态被视为(矢量化)密度矩阵:

def schrodinger_rho(t, X):
    unit = np.eye(2, 2, dtype="complex64")
    dXdt = -1j * (np.kron(unit, H(t)) - np.kron(H(t).T, unit)).dot(X)
    return dXdt
T=80.
t_list = np.arange(-T, T, 2*T / 1000.0)
init_state= np.array([1.,0.,0.,0.],dtype="complex64")
solution_rho = solve_ivp(fun=lambda t, X: schrodinger_rho(t, X), t_span=[-T,T], y0=init_state, t_eval=t_list, method="RK45", vectorized=True)

数值结果如下:

波向量 密度矩阵

这是一个问题:为什么国家不能保持其统一性,比如说P0+P1=1,当状态被视为波向量?的值越大T,这种违反倾向越强。此外,当我使用method="BDF".

由于数值成本,我想将状态视为波向量。有什么办法可以改善这种现象吗?

0个回答
没有发现任何回复~