1. 单模量子光场相干态仿真与光子数分布验证

任务拆解与数值路线

单模相干态在光子数基下可展开为 |α⟩ = e−|α|²/2 Σn (αn/√(n!)) |n⟩。本案例取平均光子数 n̄ = |α|² = 4,即 α = 2(取实数相位,便于对照)。数值上需要做三件事:选定截断维数 N、构造系数 cn、归一化后与泊松分布 P(n) = e−n̄ n̄n/n! 逐项比对。

截断维数的选取原则是让被丢弃的尾部概率足够小。对 n̄ = 4,取 N = 30 时尾部 Σn>30P(n) 已在 10−10 量级,足以作为验证基准;同时保留一个 N = 12 的对照,用来观察截断不足时归一化偏差如何显现。

数值构造链(α = 2, N = 30) 输入参数 α=2, N=30 系数递推 c₀=e^(−2), cₙ=cₙ₋₁·α/√n 归一化校验 Σ|cₙ|² → 1 概率分布 Pₙ = |cₙ|² 比对 光子数概率分布对比 P(n) n 0 4 8 12 16 20 24 数值仿真 Pₙ=|cₙ|² 泊松解析 P(n) 峰值 n≈4, P≈0.195 截断维数对照 N=30:Σ|cₙ|² ≈ 1 − 1e−10 N=12:Σ|cₙ|² ≈ 0.99998 N=8 :Σ|cₙ|² ≈ 0.978 N 过小 → 归一化偏差可见

系数构造与归一化实现

直接计算 αn/√(n!) 在 n 较大时会出现阶乘溢出,因此用递推关系 cn = cn−1 · α/√n 逐项生成,从 c0 = e−|α|²/2 出发。下面用 Python 完成构造、归一化与泊松对比,输出最大绝对偏差作为验证指标。

import numpy as np
from math import factorial

alpha = 2.0          # 实数相位,n̄ = |alpha|^2 = 4
N = 30               # 截断维数

# 1) 递推构造系数 c_n
c = np.zeros(N + 1, dtype=complex)
c[0] = np.exp(-0.5 * abs(alpha) ** 2)
for n in range(1, N + 1):
    c[n] = c[n - 1] * alpha / np.sqrt(n)

# 2) 归一化校验
norm = np.sum(np.abs(c) ** 2)
c_norm = c / np.sqrt(norm)
print(f"归一化前 Σ|c|^2 = {norm:.12f}")
print(f"归一化后 Σ|c|^2 = {np.sum(np.abs(c_norm)**2):.12f}")

# 3) 仿真概率分布
P_sim = np.abs(c_norm) ** 2

# 4) 泊松解析分布
n_arr = np.arange(N + 1)
P_pois = np.exp(-4.0) * 4.0 ** n_arr / np.array([factorial(k) for k in n_arr])

# 5) 对比验证
max_dev = np.max(np.abs(P_sim - P_pois))
print(f"最大绝对偏差 = {max_dev:.3e}")
print(f"P_sim[4] = {P_sim[4]:.6f}, P_pois[4] = {P_pois[4]:.6f}")

预期输出:归一化前 Σ|c|² 与 1 的差在 10−10 量级,归一化后严格为 1.000000000000;最大绝对偏差约 10−11 量级,P(4) 两者均约为 0.195367。若把 N 改为 8,归一化前 Σ|c|² 会降到约 0.978,此时即使归一化,P(n) 在 n 接近 8 处也会与泊松值出现可见偏离——这正是截断维数不足的典型信号。

结果判读与验证要点

  • 归一化残差:归一化前 Σ|c|² 与 1 的偏差应远小于 10−6;若明显偏小,说明 N 不够,需增大截断维数。
  • 逐项偏差:仿真 Pn 与泊松 P(n) 的最大绝对偏差应随 N 增大单调下降,这是数值正确性的直接证据。
  • 峰值位置:n̄ = 4 时峰值落在 n = 3 与 n = 4(两者概率相等,约 0.1954),可作为快速目视检查点。
  • 均值与方差:由 Pn 计算 ΣnPn 应等于 4,方差 Σn²Pn − (ΣnPn)² 也应等于 4,这是相干态泊松统计的核心特征。
验证时建议同时打印归一化残差、最大逐项偏差、均值与方差四个量。前两个反映截断与数值精度,后两个反映物理统计性质是否正确,四者同时通过才能确认仿真链路无误。