# Gibbs 态制备(Gibbs State Preparation) English · **简体中文** > 类别 C2 · 模块 [`oracq.algorithms.input_model.density`](../../api/algorithms/input_model/density.rst) · 阶段 V1 ## 概述 给定哈密顿量 $H$ 的块编码与逆温 $\beta \ge 0$,制备 Gibbs 态 $\rho = e^{-\beta H}/Z$($Z = \operatorname{Tr} e^{-\beta H}$)的近似纯化。实现走 QSVT 纯化路线(Chowdhury–Somma 2017、van Apeldoorn–Gilyén 2019、Gilyén et al. 2019, [arXiv:1806.01838](https://arxiv.org/abs/1806.01838)):先在 system 与 environment 上制备最大混合态的纯化($n$ 对 Bell 对,见[纯化访问](purification.md)),再对 system 作用零信号块正比于 $g(H/\alpha)$ 的 QSVT 块编码,其中谱变量 $x = \lambda/\alpha \in [-1,1]$ 上 $$ g(x) = \exp\!\bigl(-\tfrac{\beta\alpha}{2}(x+1)\bigr) \in (0, 1], \qquad c = \beta\alpha/2 . $$ $g$ 按奇偶分解为 $e^{-c}\cosh(cx)$ 与 $-e^{-c}\sinh(cx)$ 两支,各以修正 Bessel 截断逼近;后置选择 signal == 0 后,system 的约化密度矩阵正比于 $g(H/\alpha)^2 = e^{-\beta H}$(至多相差归一化)。 ## 接口与输入模型 ```python gibbs_purification(hamiltonian, beta, *, error=0.01) ``` API 入口:{obj}`gibbs_purification ` - `hamiltonian`:{obj}`BlockEncoding `,约定 $H$ 的谱含于 $[-\alpha, \alpha]$(input model 为 BE + DM;$\alpha$ = `be_alpha`)。 - `beta`:逆温 $\beta \ge 0$;$\beta = 0$ 时退化为最大混合态纯化(`qsp_degree = 0`、`gibbs_scale = 1.0`)。 - `error`:多项式一致逼近误差,必须在 $(0, 1)$ 内;每支截断尾部按 $\le$ `error`/8 控制。 返回 {obj}`ApproximatePurification `(`oracle_kind = "approximate_purification"`,操作签名为 `("system", "environment", "signal")`)。模块属性: | 属性 | 含义 | |---|---| | `algorithm` | `"gibbs_purification"` | | `beta` / `error` | 调用参数回显 | | `qsp_degree` | 偶/奇两支截断度数的较大者 | | `gibbs_scale` | 零信号块归一化 $2s$(与配分函数无关,不影响约化态) | | `success_condition` | `"signal == 0"` | | `width` / `environment_width` / `signal_qubits` | 三个寄存器的宽度 | 经典参考 {obj}`gibbs_state(hamiltonian, beta) `(小矩阵 $e^{-\beta H}/\operatorname{Tr}$)与 {obj}`trace_distance ` 供见证与下游复用。 ## 实现要点 生成链为 Bell 对制备 → 偶/奇支截断 → 相位合成 → LCU 相加。偶/奇支均为凸函数,端点匹配的虚部补全恒满足单位圆盘约束($f^2(x)$ 不超过端点连线),相位合成必然可行;每支经虚部补全合成相位后用 $(U_\Phi + U_{-\Phi})/2$ 提取实部,两支再经 {obj}`linear_combination ` 相加。缩放 $s = 1.5\max(\lVert g_{\mathrm{even}}\rVert_\infty, \lVert g_{\mathrm{odd}}\rVert_\infty, 10^{-3})$,两支合计一致误差不超过 `error`/4。 寄存器布局:`system(n) | environment(n) | signal(gibbs_be.signal_qubits)`,其中 environment 承载 Bell 对的另一半。适用边界:$\beta\alpha$ 过大时多项式度数超过合成上限(40),生成期抛出 {obj}`ValidationError `(提示减小 $\beta$ 或先缩小 $H$ 的谱尺度),不静默降级;输入必须是块编码而非稀疏 oracle。 ## 验证方案 类别 C2(近似连续语义,判定准则见 `../development/validation-plan.md` §2):后置选择后的约化密度矩阵须在容差内逼近经典参考 Gibbs 态。三层证据: - 结构:`tests/core/test_density.py:GibbsTests.test_beta_zero_is_maximally_mixed`($\beta=0$ 退化路径的属性与 $I/2$ 对拍)与 `test_invalid_inputs_fail_at_generation`($\beta < 0$、`error` 为 0 或 $\ge 1$、hamiltonian 非 BlockEncoding 等)。 - 数值:`GibbsTests.test_diagonal_hamiltonian_gibbs` 与 `test_non_diagonal_hamiltonian_gibbs`——对 2×2 对角 / 非对角哈密顿量($\beta = 0.6 / 0.8$、`error = 0.05`)在参考模拟器上取 signal == 0 分支,偏迹重归一后与 `gibbs_state` 经典参考对拍,迹距离 < 0.1。 - 绑定:本算法无独立绑定见证(输入已要求具体 BE)。 收敛见证(V1 新增):`test_error_convergence_decreases` 固定 $\beta = 0.8$ 扫 `error` ∈ {0.4, 0.2, 0.1},断言各档迹距离单调不增且每档 ≤ `error`——实测口径 5.6e-4 / 8.7e-5 / 8.7e-5(`error` 0.2 与 0.1 落到同一截断度数,距离相同,故断言不增而非严格下降);`test_error_bound_uniform_in_beta` 固定 `error = 0.1` 扫 $\beta$ ∈ {0.2, 0.5, 1.0},各点迹距离 ≤ `error`,实测 2.7e-6 / 1.5e-5 / 1.9e-4,随 $c = \beta\alpha/2$ 增长但始终远小于 `error`。 ## 已知缺口与计划阶段 无已知缺口,阶段 V1 见证已齐(对角/非对角对拍 + error 三档单调不增扫描 + β 网格一致性)。 ## 相关链接 - 源码:`src/oracq/algorithms/input_model/density.py` - 同模块算法:[纯化访问](purification.md) - API 参考:[密度矩阵输入模型与 Gibbs 态](../../api/algorithms/input_model/density.rst) - 验证矩阵:[验证覆盖矩阵](../../development/validation-coverage.md) ## 数值验证 论文级数值实验见 `tests/verification/verify_hamiltonian.py`(真实后端执行,无模拟替身)。实验设计:非对角哈密顿量 $H = \begin{pmatrix} 0.5 & 0.2 \\ 0.2 & -0.3 \end{pmatrix}$($\alpha = 0.7$,$\beta = 1.2$)与对角哈密顿量 $H = \operatorname{diag}(0.8, -0.4)$($\beta = 0.6$),`error = 0.02`;另有 $\beta = 0$ 退化例。在 reference / rir-pysparq / originir-ext 路径上执行纯化程序,取 signal == 0 分支,用 numpy 独立实现偏迹并重归一,与 `scipy.linalg.expm` 计算的经典 Gibbs 态 $e^{-\beta H}/Z$ 比较迹距离(`numpy.linalg.eigvalsh`),并报告后选择成功概率。 | 案例 | 规模 | 后端路径 | 指标 | 数值 | |---|---|---|---|---| | `gibbs-trace-distance-nondiag` | 13 量子位,$\beta = 1.2$ | reference、rir-pysparq、originir-ext | 迹距离 | 5.10e-5 | | 同上 | — | — | 成功概率 | 0.0953 | | `gibbs-trace-distance-diag` | 对角 $H$,$\beta = 0.6$ | reference、rir-pysparq | 迹距离 | 1.28e-5 | | 同上 | — | — | 成功概率 | 0.0992 | | `gibbs-beta0-maximally-mixed` | $\beta = 0$ 退化路径 | reference、rir-pysparq、originir-ext | 迹距离 | 0.0(精确 $I/2$) | 三例迹距离均远小于 `3×error = 0.06` 的判据(实测最高 5.1e-5),与页面所载收敛见证(迹距离随 `error` 单调不增且远小于 `error`)一致。 复现命令: ```bash PYTHONPATH=src <含 pysparq+uniqc 的解释器> tests/verification/verify_hamiltonian.py ``` 产物:`out/verification/hamiltonian.json`。