4. 薛定谔方程数值求解基础

单量子比特受驱动演化的核心方程是含时薛定谔方程。在封闭系统中,态矢量随时间的演化由幺正算符描述:|ψ(t)⟩ = U(t)|ψ(0)⟩,其中 U(t) = exp(-iHt/ħ)(哈密顿量不显含时间时)。幺正性保证了态矢量内积守恒,即总概率恒为 1。这一性质是数值求解时必须守住的底线:任何数值方法若导致布居数之和偏离 1,就说明积分步长、截断或算法选择出了问题。

当哈密顿量含时(例如驱动场幅度随时间变化),解析解往往不存在,需要数值积分。常用方法包括:固定步长的四阶龙格–库塔(RK4)、基于矩阵指数的分段近似,以及 QuTiP 内部默认的自适应积分器。RK4 的局部截断误差为 O(dt⁵),实现简单,但对刚性系统或强驱动需要较小步长;自适应方法会根据局部误差自动调整步长,在保证精度的同时减少计算量。QuTiP 的 mesolve 在无耗散(c_ops 为空)时本质上就是求解含时薛定谔方程,返回的密度矩阵演化等价于纯态幺正演化。

在 QuTiP 中,若只关心纯态演化,也可用 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 点)。

数值求解链路 哈密顿量 H(t) H₀ + H₁·cos(ω_d t) 初态 |ψ(0)⟩ = |0⟩ c_ops = [](封闭) mesolve 积分 自适应步长 · 幺正 观测量 ⟨σz⟩, ⟨σx⟩ P1 = (1−⟨σz⟩)/2 激发态布居数 P1(t) 振荡 t P1 0 1 包络(周期 ≈ 2π/Ω) 载波细纹(cos ω_d t) 峰值≈1:完整翻转 采样需足够密,否则载波混叠;P1 始终落在 [0,1] 内即幺正性保持

关于数值精度,有两个实用判据。其一是概率守恒:对每个时刻检查 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 是否覆盖至少两个包络周期且采样密度足以刻画载波,最后用概率守恒与步长收敛两项判据验收。做到这四步,固定驱动下的态演化结果就具备了可解释、可复现的基础,也为后续引入耗散与更复杂驱动波形做好了准备。