密度矩阵与噪声模型
需要模拟混态或噪声时使用 execute_density():
import numpy as np
from unitarylab import Circuit
qc = Circuit(2)
qc.h(0)
qc.cx(0, 1)
result = qc.execute_density(device="cpu", dtype=np.complex128)
print(result.state)
print(result.trace)
print(result.purity)
print(result.probabilities)execute_density(initial_state=None, device="cpu",
dtype=np.complex128, noise_model=None)initial_state 可以是 None、状态向量、密度矩阵或 DensityMatrixState。DensityMatrixResult 提供状态、迹、纯度、概率和期望值查询。
| 属性或方法 | 说明 |
|---|---|
state | 最终密度矩阵 |
trace | ,有效量子态应接近 1 |
purity | ;纯态接近 1,混态小于 1 |
probabilities、probability() | 计算基概率 |
marginal_probabilities() | 指定量子比特的边际概率 |
expectation() | 可观测量期望值 |
输入密度矩阵维度必须为 ,应满足厄米、半正定且迹为 1。状态向量输入会先转换为 。
噪声模型
from unitarylab.backend import AmplitudeDamping, BitFlip, NoiseModel, NoiseOperator
noise_model = NoiseModel([
NoiseOperator(BitFlip(0.02), gate_ids=("x", "rx")),
NoiseOperator(AmplitudeDamping(0.05), qubits=(1,)),
])
noisy_result = qc.execute_density(noise_model=noise_model)内置通道还包括 PhaseFlip、DepolarizingNoise 和 PhaseDamping。规则在匹配的 primitive gate 后应用;qubits 只匹配目标比特,gate_ids=None 匹配所有实体 primitive gate。
| 通道 | 主要参数 | 典型用途 |
|---|---|---|
BitFlip(p) | 翻转概率 p | 位翻转误差 |
PhaseFlip(p) | 相位翻转概率 p | 相位错误 |
DepolarizingNoise(p) | 退极化概率 p | 对称 Pauli 噪声 |
AmplitudeDamping(gamma) | 衰减率 gamma | 能量弛豫 |
PhaseDamping(gamma) | 衰减率 gamma | 退相干 |
概率和衰减参数必须位于有效范围。多条匹配规则会按配置顺序应用,增加规则可能改变最终通道组合。
当前密度矩阵后端不支持线路测量、状态坍缩或 shots/counts,也不支持公开自定义 Kraus 通道、门前噪声、相关多比特噪声或 readout error。CUDA 密度矩阵后端需要安装 unitarylab[cuda]。
密度矩阵包含 个复数元素,通常比状态向量消耗更多内存。建议先在少量量子比特上验证噪声规则,并同时保留无噪声结果作为基线。
相关页面
最后更新于