首页 > 解决方案 > 如何用 qutip/python 调用时间相关的哈密顿?

问题描述

我正在尝试实现一些代码来描述系统的连贯控制。问题是我想使用以下形式的汉密尔顿: {H}_ij = u(t) * h_ij * exp(omega_ij * t) 用于第 i^th 行和第 j^th 列,h_ij = conj(h_ji)并且 h_ii = 0。由于每个术语的时间依赖性不同,因此无法使用使用用户手册中详述的前三个选项编写时间依赖性 hamiltonian 的技术来编写此 hamiltonian ( http://qutip.org/downloads /4.4.0/qutip-doc-4.4.pdf#subsection.3.5.6)更准确地说是在第 61 页。

然而,它可以通过第四个(过时的)选项来实现:

最后的选项 #4,将哈密顿量表示为 Python 函数,是 QuTiP 1.x 中时间依赖性的原始方法。但是,这种方法比前面提到的方法效率要低一些。然而,与其他选项相比,该方法可用于实现时间相关的哈密顿量,这些哈密顿量不能表示为具有时间相关系数的常数算子的函数。

我认为这正是我想要的,但我不明白如何将哈密顿量实现为 python 函数。有人可以给我看一个“汉密尔顿作为 Python 函数”的例子吗?

编辑:这是我迄今为止尝试过的:


import numpy as np
import qutip


psi_0 = qutip.ket2dm(qutip.basis(2, 0))
psi_1 = qutip.ket2dm(qutip.basis(2, 1))
time = np.linspace(0, 10)

H_zeros = qutip.Qobj([[0, 0], [0, 0]])


def Hamiltonian_1(t, args):
    return [[0, np.exp(1j * t)], [np.exp(- 1j * t), 0]]


def Hamiltonian_2(t):
    return [[0, np.exp(1j * t)], [np.exp(- 1j * t), 0]]


def Hamiltonian_3(t, args):
    return qutip.Qobj([[0, np.exp(1j * t)], [np.exp(- 1j * t), 0]])


def Hamiltonian_4(t):
    return qutip.Qobj([[0, np.exp(1j * t)], [np.exp(- 1j * t), 0]])


# result = qutip.mesolve(Hamiltonian_1, psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve(Hamiltonian_2, psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve(Hamiltonian_3, psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve(Hamiltonian_4, psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([Hamiltonian_1], psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([Hamiltonian_2], psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([Hamiltonian_3], psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([Hamiltonian_4], psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([H_zeros, Hamiltonian_1], psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([H_zeros, Hamiltonian_2], psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([H_zeros, Hamiltonian_3], psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([H_zeros, Hamiltonian_4], psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([H_zeros, [H_zeros, Hamiltonian_1]], psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([H_zeros, [H_zeros, Hamiltonian_2]], psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([H_zeros, [H_zeros, Hamiltonian_3]], psi_0, time, [], [psi_0, psi_1])
# result = qutip.mesolve([H_zeros, [H_zeros, Hamiltonian_4]], psi_0, time, [], [psi_0, psi_1])

在这个简单的案例中,我尝试了不同定义的 hamiltonian 函数(Hamiltonian_1 到 4),并且我尝试了 mesolve 函数的多种组合(暂时在此代码中注释)......它们都不起作用。

谢谢你,保罗

标签: pythonqutip

解决方案


推荐阅读