我试图找到一些初始状态的时间演化,其中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)
与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)
来计算时间演化,其中tz=[(tlist[0],z[0]),...,(tlist[-1],z[-1])]
。我在第t = tz[0]
行收到错误TypeError: 'float' object is not subscriptable
。我不明白为什么会出现这个错误,因为tz的输入是元组列表,而不是浮点。然后mesolve
函数应该取每个列表元素并计算哈密顿量,至少我认为它是这样做的
当我对某些H0、Hp和z使用args = (H0,Hp,z)
并且使用qt.mesolve(hamiltonian_t,psi_init,tlist,[],[],H_args)
时,此函数通常用于查找时间演化,但我的问题涉及到一个z变量,该变量对于tlist中的每个t都不同。有人能帮我正确定义这个函数吗,这样qutip.mesolve()
就可以对tlist中的每个时间使用相应的z并计算时间演变
目前没有回答
相关问题 更多 >
编程相关推荐