4. 薛定谔方程数值求解基础
单量子比特受驱动演化的核心方程是含时薛定谔方程。在封闭系统中,态矢量随时间的演化由幺正算符描述:|ψ(t)⟩ = U(t)|ψ(0)⟩,其中 U(t) = exp(-iHt/ħ)(哈密顿量不显含时间时)。幺正性保证了态矢量内积守恒,即总概率恒为 1。这一性质是数值求解时必须守住的底线:任何数值方法若导致布居数之和偏离 1,就说明积分步长、截断或算法选择出了问题。
当哈密顿量含时(例如驱动场幅度随时间变化),解析解往往不存在,需要数值积分。常用方法包括:固定步长的四阶龙格–库塔(RK4)、基于矩阵指数的分段近似,以及 QuTiP 内部默认的自适应积分器。RK4 的局部截断误差为 O(dt⁵),实现简单,但对刚性系统或强驱动需要较小步长;自适应方法会根据局部误差自动调整步长,在保证精度的同时减少计算量。QuTiP 的 mesolve 在无耗散(c_ops 为空)时本质上就是求解含时薛定谔方程,返回的密度矩阵演化等价于纯态幺正演化。
sesolve;mesolve 的优势在于同一套接口可平滑扩展到含耗散的情形,便于后续章节对比。下面以固定驱动下的单量子比特为例。取驱动沿 x 方向,哈密顿量写作 H = (ω₀/2)σ_z + (Ω/2)cos(ω_d t)σ_x,其中 ω₀ 为比特频率,Ω 为拉比频率,ω_d 为驱动频率。为便于观察,采用旋转坐标近似后,共振驱动(ω_d = ω₀)下布居数呈标准正弦振荡,振荡角频率为 Ω。下面的代码在实验室坐标系下直接数值求解,不引入旋转坐标近似,因此会看到快速载波叠加在慢速包络上。
import numpy as np
import matplotlib.pyplot as plt
from qutip import sigmaz, sigmax, basis, mesolve
# 参数(示例假设值,单位:2π×GHz 量纲下取弧度制)
w0 = 2 * np.pi * 5.0 # 比特频率
Omega = 2 * np.pi * 0.2 # 拉比频率
wd = w0 # 共振驱动
# 含时哈密顿量:H0 + H1 * cos(wd*t)
H0 = 0.5 * w0 * sigmaz()
H1 = 0.5 * Omega * sigmax()
def drive_coeff(t, args):
return np.cos(wd * t)
H = [H0, [H1, drive_coeff]]
# 初态 |0>,无耗散
psi0 = basis(2, 0)
c_ops = []
tlist = np.linspace(0, 50, 2000)
result = mesolve(H, psi0, tlist, c_ops,
e_ops=[sigmaz(), sigmax()])
# 激发态布居数 P1 = (1 - <σz>)/2
P1 = 0.5 * (1 - result.expect[0])
plt.plot(tlist, P1)
plt.xlabel("时间 t")
plt.ylabel("激发态布居数 P1")
plt.show()
运行后应观察三点。第一,P1 在 0 与 1 之间振荡,峰值接近 1,说明驱动实现了完整的拉比翻转;若峰值明显低于 1,通常是驱动失谐或积分时间不足。第二,振荡包络的周期约为 2π/Ω,本例中 Ω = 2π×0.2,故完整翻转周期约 5 个时间单位,50 个时间单位内应看到约 10 个包络周期。第三,曲线上的快速细纹来自 cos(ω_d t) 载波,其周期远小于包络,采样点不足时会出现混叠,因此 tlist 需足够密(本例 2000 点)。
关于数值精度,有两个实用判据。其一是概率守恒:对每个时刻检查 Tr(ρ) = 1,QuTiP 返回的密度矩阵可直接用 result.states[i].tr() 验证,偏差应在 1e-8 量级。其二是收敛性:把 tlist 加密一倍或把积分器容差收紧(mesolve(..., options={"atol":1e-10,"rtol":1e-8})),若曲线形状与峰值位置基本不变,说明结果已收敛。若峰值随步长明显漂移,应优先怀疑采样不足而非物理效应。
还需注意坐标系约定。本文哈密顿量中 σ_z 的本征态 |0⟩ 对应能量 +ω₀/2,|1⟩ 对应 −ω₀/2,因此初态取 |0⟩ 时 P1 从 0 起振。若改用 basis(2,1) 作初态,曲线相位整体平移半个包络周期,这是初态选择而非求解错误。全文与图示均采用这一约定,切换时需明确说明。
e_ops 写成 [sigmaz()] 却直接用返回值当布居数。QuTiP 返回的是 ⟨σz⟩,取值范围 [−1,1],必须换算 P1 = (1−⟨σz⟩)/2,否则会误判“布居数出现负值”。把上述流程固化为可复用的检查顺序:先确认哈密顿量各项系数与符号,再确认初态与 e_ops 的对应关系,然后检查 tlist 是否覆盖至少两个包络周期且采样密度足以刻画载波,最后用概率守恒与步长收敛两项判据验收。做到这四步,固定驱动下的态演化结果就具备了可解释、可复现的基础,也为后续引入耗散与更复杂驱动波形做好了准备。