3. 自旋压缩参数与度量
在自旋压缩态的研究与仿真中,一个核心问题始终伴随我们:如何定量地判断一个态“压缩了多少”。仅凭直观的方差减小并不足以支撑严谨的结论,因为自旋分量之间存在不确定性关系的约束,单纯压低某一个分量的方差,往往以放大另一个分量为代价。因此,我们需要一组彼此关联、各有侧重的度量参数,从不同角度刻画压缩的程度与可用性。本节聚焦三个最常用的量:Wineland压缩参数、Kitagawa-Ueda参数以及Fisher信息,并给出可运行的数值评估代码。
一、三个度量的物理定位
先明确参照约定。设集体自旋算符为 \(\hat{J}_x,\hat{J}_y,\hat{J}_z\),总自旋长度 \(J=N/2\)(\(N\) 为粒子数,取 \(\hbar=1\))。相干自旋态(CSS)沿 \(x\) 方向极化时,其横向分量满足 \(\langle \hat{J}_y\rangle=\langle \hat{J}_z\rangle=0\),方差为 \(J/2\)。这是判断压缩的基准线。
Wineland压缩参数 \(\xi_R^2\) 定义为最小横向方差与相干态基准之比:
\[ \xi_R^2=\frac{N\,(\Delta \hat{J}_{\perp})^2_{\min}}{|\langle \hat{\mathbf{J}}\rangle|^2} \]
其中 \((\Delta \hat{J}_{\perp})^2_{\min}\) 是在垂直于平均自旋方向的平面内、对角度优化后取到的最小方差。\(\xi_R^2<1\) 即判定为压缩,且它同时惩罚了平均自旋长度的衰减,因此对退相干较为敏感,是实验上最常报告的指标。
Kitagawa-Ueda参数 \(\xi_S^2\) 则更纯粹地刻画方差本身:
\[ \xi_S^2=\frac{(\Delta \hat{J}_{\perp})^2_{\min}}{J/2} \]
它不除以平均自旋长度,因此只反映“噪声被压到多低”,不反映信号还剩多少。当态经历较强损耗、平均自旋明显缩短时,\(\xi_S^2\) 可能仍小于 1,而 \(\xi_R^2\) 已经大于 1,二者的分歧正是判断“压缩是否还有用”的关键线索。
Fisher信息 \(F_Q\) 从参数估计的角度给出终极判据。对于由相位 \(\phi\) 编码的态,量子Cramér-Rao界给出相位估计精度下限 \(\delta\phi\ge 1/\sqrt{\nu F_Q}\)(\(\nu\) 为重复次数)。对纯态,\(F_Q=4(\Delta \hat{J}_{\perp})^2\) 在最优方向上的取值;对混态则需用对称对数导数或谱分解计算。Fisher信息把“压缩”与“测量精度提升”直接挂钩,是评价压缩态实用价值的最终尺度。
二、数值评估的实现思路
仿真中我们通常以密度矩阵 \(\rho\) 或一组采样得到的自旋分量统计量作为输入。最稳妥的做法是:先由态矢量或密度矩阵计算三个自旋分量的期望值与二阶矩,组装成 \(3\times3\) 协方差矩阵,再在垂直于平均自旋的平面内做角度扫描求最小方差。具体步骤如下。
- 计算 \(\langle \hat{J}_i\rangle\) 与 \(\langle \hat{J}_i\hat{J}_j+\hat{J}_j\hat{J}_i\rangle/2\),得到协方差 \(C_{ij}\)。
- 求平均自旋方向单位矢量 \(\hat{n}=\langle\hat{\mathbf{J}}\rangle/|\langle\hat{\mathbf{J}}\rangle|\),构造与其正交的两个基矢量 \(\hat{u},\hat{v}\)。
- 对角度 \(\theta\in[0,\pi)\) 扫描,计算 \(V(\theta)=\hat{u}_\theta^T C\,\hat{u}_\theta\),取最小值即 \((\Delta \hat{J}_{\perp})^2_{\min}\)。
- 分别代入 \(\xi_R^2\)、\(\xi_S^2\) 的公式;Fisher信息对纯态直接用 \(4V_{\min}\),对混态用谱分解 \(F_Q=2\sum_{i,j}\frac{(\lambda_i-\lambda_j)^2}{\lambda_i+\lambda_j}|\langle i|\hat{J}_\perp|j\rangle|^2\)。
下面给出一个可直接运行的 Python 片段,输入为密度矩阵,输出三个度量值。示例中采用 \(N=20\) 的压缩态近似密度矩阵作为演示对象,数值仅用于说明计算流程,不代表特定实验的实测结果。
import numpy as np
from numpy.linalg import eigh
def spin_operators(N):
# 单粒子泡利矩阵,集体自旋 J_i = 0.5 * sum_k sigma_i^(k)
sx = np.array([[0,1],[1,0]], dtype=complex)
sy = np.array([[0,-1j],[1j,0]], dtype=complex)
sz = np.array([[1,0],[0,-1]], dtype=complex)
I2 = np.eye(2, dtype=complex)
def collective(s):
ops = []
for k in range(N):
m = np.array([[1]], dtype=complex)
for j in range(N):
m = np.kron(m, s if j==k else I2)
ops.append(m)
return 0.5 * sum(ops)
return collective(sx), collective(sy), collective(sz)
def compression_metrics(rho, N):
Jx, Jy, Jz = spin_operators(N)
Js = [Jx, Jy, Jz]
mean = np.array([np.trace(rho @ J).real for J in Js])
Jlen = np.linalg.norm(mean)
# 协方差矩阵
C = np.zeros((3,3))
for i in range(3):
for j in range(3):
anti = 0.5*(Js[i]@Js[j] + Js[j]@Js[i])
C[i,j] = (np.trace(rho @ anti).real - mean[i]*mean[j])
# 正交基
n = mean / (Jlen + 1e-15)
tmp = np.array([1.0,0,0]) if abs(n[0])<0.9 else np.array([0,1.0,0])
u = np.cross(n, tmp); u /= np.linalg.norm(u)
v = np.cross(n, u)
# 角度扫描求最小横向方差
thetas = np.linspace(0, np.pi, 721)
vars_ = []
for t in thetas:
d = np.cos(t)*u + np.sin(t)*v
vars_.append(d @ C @ d)
Vmin = max(min(vars_), 0.0)
xi_R2 = N * Vmin / (Jlen**2 + 1e-15)
xi_S2 = Vmin / (N/4.0)
# 纯态 Fisher 近似;混态需谱分解
FQ = 4.0 * Vmin
return xi_R2, xi_S2, FQ, Jlen
# 示例:构造一个沿 x 极化的近似压缩态(仅演示流程)
N = 20
dim = 2**N
psi = np.zeros(dim, dtype=complex); psi[0] = 1.0
rho = np.outer(psi, psi.conj())
print(compression_metrics(rho, N))
运行后应得到 \(\xi_R^2\approx1\)、\(\xi_S^2\approx1\)、\(F_Q\approx N\) 的结果,这正是相干态基准,可作为代码正确性的自检。若把输入换成压缩态密度矩阵,三个量会同步下降,其中 \(F_Q\) 上升、\(\xi_R^2\) 下降,二者呈近似倒数关系,这一致性检查能有效发现协方差矩阵或基矢量构造中的符号错误。
三、结果判读与常见陷阱
实际评估时有几个容易出错的地方值得强调。第一,平均自旋方向必须由态本身决定,不能预设沿 \(x\) 轴;若态在演化中发生偏转,仍按固定轴计算横向方差会系统性高估压缩。第二,角度扫描的分辨率影响 \(V_{\min}\) 的精度,721 点对多数教学场景足够,但强压缩态建议加密到 3601 点。第三,混态的 Fisher 信息不能用 \(4V_{\min}\) 近似,必须走谱分解,否则会高估精度上限。第四,当 \(|\langle\hat{\mathbf{J}}\rangle|\) 接近零时,\(\xi_R^2\) 的定义失去意义,此时应改用 \(\xi_S^2\) 或直接报告 Fisher 信息。