zne¶
模块¶
fieldqkit.core.zne
关键函数¶
apply_zne_cz_triplingzne_linear_extrapolate
函数说明¶
apply_zne_cz_tripling(qct)¶
- 作用:对电路中的每个
cz门做三倍插入(原门后追加两个同门)。 - 当前缩放方案:
1x -> 3x(仅针对cz)。 - 返回:浅拷贝后的新电路对象(
gates列表已替换)。
zne_linear_extrapolate(probs_1, probs_3)¶
- 作用:利用 scale=1 与 scale=3 的结果做线性零噪声外推。
- 公式:
$$ f(0) \approx \frac{3f(1)-f(3)}{2} $$
- 可用于概率向量、标量期望值等可线性处理量。
边界与数值行为¶
zne_linear_extrapolate本身不做裁剪/归一化。- 在
run_auto路径中:- 概率外推后会做
clip([0,1])+ 归一化。 - observable 外推会按业务路径做必要裁剪(部分分支会限制在
[-1, 1])。
- 概率外推后会做
与运行流程联动¶
QuantumHardwareClient._run_with_backend在zne=True时:- 额外构造一条 CZ-tripled 线路(scale=3)。
- 收集
samples_zne。 - 对概率/observable 调用
zne_linear_extrapolate形成最终输出。
shadow算法同样沿用1x/3x + 线性外推机制。
示例¶
import numpy as np
from fieldqkit.core.zne import zne_linear_extrapolate
probs_1 = np.array([0.52, 0.48])
probs_3 = np.array([0.56, 0.44])
probs_0 = zne_linear_extrapolate(probs_1, probs_3)
print(probs_0)
e1, e3 = 0.31, 0.22
e0 = zne_linear_extrapolate(e1, e3)
print(e0)