我试图找到一些初始状态的时间演化,其中 z 变量(时间演化的梯度)也是时间相关的。通常,qutip.mesolve()
当 z 变量为常数且哈密顿量定义如下时,该函数可用于此目的:
def hamiltonian_t(t,args):
""" evaluate the hamiltonian at time t. """
H0 = args[0]
Hp = args[1]
z = args[2]
return (1-t*z)*H0 + t*z*Hp
这是一个从 H0 演化到 Hp 的哈密顿量。然后我使用qt.mesolve(hamiltonian_t,psi_init,tlist,[],[],H_args)
with args = (H0,Hp,z)
。
但是对于当前与时间相关的 z 变量的问题,我尝试将哈密顿量定义如下:
def hamiltonian_t(tz,args):
""" evaluate the hamiltonian at time t. """
H0 = args[0]
Hp = args[1]
t = tz[0]
z = tz[1]
return (1-t*z)*H0 + t*z*Hp
这里args = (H0,Hp)
有一些 H0 和 Hp。然后我尝试使用qt.mesolve(hamiltonian_t,psi_init,tz,[],[],H_args)
来计算时间演化 where tz=[(tlist[0],z[0]),...,(tlist[-1],z[-1])]
。我TypeError: 'float' object is not subscriptable
在线收到错误消息t = tz[0]
。我不明白为什么会出现此错误,因为 tz 的输入是元组列表而不是浮点数。然后该mesolve
函数应该获取每个列表元素并评估哈密顿量,至少我认为它是这样做的。
args = (H0,Hp,z)
当我有一些 H0、Hp 和 z 并且我使用时,此函数通常适用于查找时间演化qt.mesolve(hamiltonian_t,psi_init,tlist,[],[],H_args)
,但我的问题涉及 tlist 中每个 t 不同的 z 变量。谁能帮我正确定义这个函数,以便qutip.mesolve()
可以在 tlist 中每次使用相应的 z 并计算时间演化?