Hamiltonian 与可观测量¶
上一课用量子门改变状态。Hamiltonian 描述状态怎样连续演化。把 ℏ 吸收到单位中,对于不随时间变化的 Hamiltonian,有 |ψ(t)⟩ = exp(−iHt)|ψ(0)⟩。
对一个共振驱动的两能级系统,取 H = ΩX/2。从 0 开始,激发概率为 sin²(Ωt/2),Z 期望值为 1 − 2p(1) = cos(Ωt)。这些公式假设系统孤立、理想,驱动恒定且失谐为零。
"""Evolve a two-level system with a matrix exponential and inspect observables."""
from __future__ import annotations
import json
import numpy as np
from scipy.linalg import expm
def experiment() -> dict[str, object]:
omega, duration = 2.0, 0.4
x = np.array([[0, 1], [1, 0]], dtype=complex)
z = np.diag([1, -1])
hamiltonian = omega * x / 2
state = expm(-1j * hamiltonian * duration) @ np.array([1, 0])
return {
"omega_rad_per_us": omega,
"duration_us": duration,
"probability_one": float(abs(state[1]) ** 2),
"z_expectation": float(np.vdot(state, z @ state).real),
"hamiltonian_expectation": float(np.vdot(state, hamiltonian @ state).real),
"norm_squared": float(np.vdot(state, state).real),
}
if __name__ == "__main__":
print(json.dumps(experiment(), sort_keys=True))
python examples/learning/foundations/hamiltonian_observables.py
{
"duration_us": 0.4,
"hamiltonian_expectation": 0.0,
"norm_squared": 1.0,
"omega_rad_per_us": 2.0,
"probability_one": 0.15164664532641736,
"z_expectation": 0.6967067093471654
}
这个小计算使用 SciPy 的矩阵指数作独立参考,没有调用 CASCAQit 模拟器。把输出与 sin²(0.4)、cos(0.8) 比较,范数平方应保持为一。
可观测量的期望值表示重复测量的平均值,不一定是某一次测量能取到的值。这里的 Hamiltonian 期望值始终为零,激发概率却在变化。因此,平均能量不变,并不意味着每个基态的概率都不变。
练习:保持 Ω = 2 rad/µs,选一个让激发概率为一的时长。此时 Z 期望值是多少?如果 Ω 和时长同时翻倍,脉冲面积是否不变?
答案
取 t = π/Ω = π/2 µs,Z 变为 −1。Ω 和时长同时翻倍,会把面积 Ωt 增加到四倍。对于这里的恒定驱动,要在 Ω 翻倍时保持演化相同,需要把时长减半。加入相互作用、失谐或噪声后,仅保持脉冲面积通常不够。
下一课:中性原子与相互作用。