4. 单模压缩态的数学表示

单模压缩态是连续变量量子信息中最基础的非经典态之一。要真正在仿真中“造出”它,必须先把算符语言翻译成可计算的数值形式。本节从压缩算符的定义出发,推导它在福克基下的展开式,然后给出可直接运行的数值构造代码,并用归一性、光子数分布和压缩量三条线索验证结果是否正确。

一、压缩算符与福克基展开的推导

单模压缩算符定义为

S(ξ) = exp[ (ξ* a² − ξ a†²) / 2 ],其中 ξ = r e^{iθ} 为复压缩参数,r ≥ 0 为压缩幅度,θ 为压缩角。

取 θ = 0(即实压缩参数 ξ = r)作为推导起点,此时 S(r) = exp[ r(a² − a†²)/2 ]。直接对指数展开并不方便,更有效的办法是利用压缩算符对产生湮灭算符的变换关系:

S†(r) a S(r) = a cosh r − a† sinh r,S†(r) a† S(r) = a† cosh r − a sinh r。

由此可推出压缩态 |ξ⟩ = S(ξ)|0⟩ 在福克基下的展开。对 θ = 0 的情形,展开式只含偶数光子数项:

|r⟩ = (1/√cosh r) Σ_{n=0}^{∞} [ (√(2n)! / (2^n n!)) (tanh r)^n ] |2n⟩。

这个式子有三个关键特征值得注意。第一,只有偶数光子数项,因为压缩算符成对产生光子,宇称守恒。第二,系数随 n 增大按 (tanh r)^n 衰减,r 越大衰减越慢,高阶项权重上升,平均光子数随之增加。第三,归一化因子 1/√cosh r 保证总概率为 1,这正是数值验证的抓手。

当 θ ≠ 0 时,展开系数变为复数,相位因子 e^{iθ} 进入每一项,但模长结构与 θ = 0 相同。仿真中通常先构造 θ = 0 的实压缩态,再通过相位旋转算符 e^{−iθ a†a} 作用得到任意压缩角,这样数值实现更简洁。

单模压缩态:从参数到福克基数值态矢 输入参数 压缩幅度 r 压缩角 θ 截断维数 N 系数计算 c_n = √(2n)!/(2ⁿn!)·(tanh r)ⁿ 仅偶数 n 非零 归一化 1/√cosh r 数值态矢 |ψ⟩ = Σ c_n |n⟩ 长度 N+1 的复向量 θ 通过相位旋转加入 验证 Σ|c_n|² = 1 ⟨n⟩ = sinh²r Δx·Δp 判据 光子数分布随 r 的变化(示意) P(n) 光子数 n 0 2 4 6 8 10 12 14 r = 0.5 r = 1.2(分布展宽,高阶项增强) 偶数光子数项构成压缩态;r 增大时 tanh r 趋近 1,截断维数 N 需同步增大

二、数值构造:从公式到代码

把展开式写成代码,核心是三件事:算系数、处理截断、加入相位。下面用 Python 与 NumPy 实现,截断维数取 N(即保留 |0⟩ 到 |N⟩ 共 N+1 个基矢)。

import numpy as np
from math import factorial, sqrt, cosh, tanh

def squeezed_state(r, theta=0.0, N=60):
    """构造单模压缩态在福克基下的数值态矢。
    r: 压缩幅度; theta: 压缩角; N: 截断维数(保留 0..N)"""
    psi = np.zeros(N + 1, dtype=complex)
    norm = 1.0 / sqrt(cosh(r))
    for n in range(0, N // 2 + 1):
        m = 2 * n
        coeff = sqrt(factorial(m)) / (2**n * factorial(n))
        psi[m] = norm * coeff * (tanh(r) ** n)
    # 相位旋转 e^{-i theta a^dag a}
    phases = np.exp(-1j * theta * np.arange(N + 1))
    return psi * phases

# 示例参数
r, theta, N = 1.0, 0.0, 60
psi = squeezed_state(r, theta, N)
print("归一化:", np.vdot(psi, psi).real)
print("平均光子数:", np.sum(np.arange(N+1) * np.abs(psi)**2))
print("理论 sinh^2(r):", np.sinh(r)**2)

这段代码有两个实现细节需要说明。其一,循环只遍历 n 到 N//2,因为奇数项系数恒为零,直接跳过可省一半计算。其二,相位旋转用对角算符 e^{−iθn} 逐项相乘实现,避免了显式构造大矩阵。截断维数 N 的选取不是随意的:当 r 较大时,tanh r 接近 1,系数衰减变慢,若 N 太小,被截掉的高阶项会带走可观概率,归一化检查就会明显偏离 1。

三、验证归一性与物理量

运行上述示例(r = 1.0,N = 60),归一化结果应非常接近 1,平均光子数应接近 sinh²(1) ≈ 1.381。若把 N 降到 10 再跑一次,会看到归一化降到 0.99 以下,这就是截断误差的直接体现。因此验证流程建议按以下顺序进行:

  1. 归一性检查:计算 Σ|c_n|²,与 1 的偏差应小于 1e−10(N 足够大时)。
  2. 宇称检查:奇数项系数应严格为零,可打印 |c_1|、|c_3| 确认。
  3. 平均光子数检查:⟨n⟩ 与 sinh²r 对比,偏差反映截断是否充分。
  4. 压缩判据检查:计算正交分量方差,验证某一分量方差低于真空噪声 1/2。

正交分量方差可用矩阵方法计算。定义 x = (a + a†)/√2,p = (a − a†)/(i√2),在截断基下构造 a 的矩阵(次对角元为 √(n+1)),再求 ⟨x²⟩ − ⟨x⟩²。对 θ = 0 的压缩态,x 分量方差应为 e^{−2r}/2,p 分量方差为 e^{2r}/2,两者乘积恒为 1/4,这正是最小不确定态的特征。当 r = 1 时,x 方差约 0.0677,p 方差约 3.694,前者明显低于 0.5 的真空噪声,压缩得到确认。

截断维数的经验选取:保证被丢弃的总概率小于 1e−8。对 r ≤ 1.5,N 取 60~80 通常足够;r 接近 2 时建议 N ≥ 120,并同时监控归一化残差。

四、常见错误与排查

数值构造中最容易出错的地方有三处。第一,把归一化因子 1/√cosh r 漏乘,导致范数偏大,此时归一化结果会等于 cosh r 而非 1,很容易识别。第二,系数公式中 (2n)! 的平方根与 2ⁿn! 的位置写反,会使高阶项权重异常放大,表现为平均光子数远超 sinh²r。第三,相位旋转符号写反(用 e^{+iθn} 而非 e^{−iθn}),这不影响归一性和光子数分布,但会使压缩角方向相反,在后续干涉或测量仿真中造成系统性偏差。排查时建议固定 r、扫描 θ,观察 x 分量方差随 θ 的周期变化是否与理论一致。