2

我试图找到一些初始状态的时间演化,其中 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 并计算时间演化?

4

0 回答 0