WARNING
🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。
量子存储 — demo.py 代码详解
运行方式
cd docs/quantum/memory/code
python demo.pyCPU、NumPy。两张图:t1_t2_decay.png(write_store_read.png(等待越久读出保真度越低)。玩具参数 T1=1.0、T2=0.4(任意时间单位),不是某实验室拟合。
代码逐段详解
第1步:amp_damping — 振幅阻尼( )
激发态以概率
def amp_damping(rho, t, t1=T1):
p = 1.0 - np.exp(-t / t1)
e0 = np.array([[1, 0], [0, np.sqrt(1 - p)]], dtype=complex)
e1 = np.array([[0, np.sqrt(p)], [0, 0]], dtype=complex)
return e0 @ rho @ e0.conj().T + e1 @ rho @ e1.conj().T: 时 ,信道是恒等; 时 ,所有布居落到 。 e0 @ rho @ e0.conj().T:每一支 Kraus 都是。两支相加保证 CPTP(迹保持)。 - 对
,对角元 应按 掉。这就是能量弛豫。振幅阻尼也会顺带削弱非对角(相干寿命不会长过 ),但本图的 曲线用的是下面的纯退相位,好对比两条钟。
第2步:dephase — 只打非对角( )
def dephase(rho, t, t2=T2):
out = rho.copy()
out[0, 1] *= np.exp(-t / t2)
out[1, 0] *= np.exp(-t / t2)
return out.copy():不要改调用者手里的。后面写-存-读会反复从 rho0出发。- 语法
out[0, 1]:第 0 行第 1 列,即。 *=乘衰减因子。对角不动:纯退相位不改变布居,只丢相对相位。 - 对赤道态
, 从 指数掉到 0。这比 更快( T2=0.4 < T1=1)。
第3步:fidelity_pure — 纯态相对密度矩阵的保真度
对纯态
(纯态–纯态时这就是
def fidelity_pure(rho, psi):
return float(np.real(psi.conj() @ rho @ psi))psi.conj() @ rho @ psi:行向量乘 再乘 ,得到标量。 conj()在psi上,不是对。 np.real+float:数学上是实数;转 Python 标量好存进 list。
第4步:demo_t1_t2 两条曲线
rho1 = np.array([[0, 0], [0, 1]], dtype=complex)
plus = np.array([1, 1], dtype=complex) / np.sqrt(2)
rho_plus = np.outer(plus, plus.conj())
pop1 = [np.real(amp_damping(rho1, t)[1, 1]) for t in times]
coh = [np.abs(dephase(rho_plus, t)[0, 1]) for t in times][[0,0],[0,1]]:。 [1,1]是。 - 列表推导:对每个时刻单独作用信道。80 个点,矩阵 2×2,不必向量化。
- 左曲线从 1 掉向 0(
);右曲线从 0.5 掉向 0( )。同一张图两条钟,存储章节正文的「能量 vs 相位」。
第5步:写-存-读 — 两个信道叠在一起
rho = dephase(amp_damping(rho0, t), t)
fids.append(fidelity_pure(rho, psi))写入 outer 成
times = np.linspace(0, 3.0, 80)(T1/T2 图)和 linspace(0, 2.5, 40)(写-存-读)上限不同:前者要看到 amp_damping(rho1, t)[1, 1]:先得到 2×2,再取 np.abs(...) 取相干模长,因为退相位后
Kraus 完备性:sqrt(1-p) 与 sqrt(p) 就是为了满足它。exp 不会超出
两张图都 tight_layout + dpi=140。入口连续调用 demo_t1_t2() 和 demo_write_store_read(),没有 main 函数。
写-存-读里对每个 rho0 出发,而不是把上一步的 rho0 = np.outer(psi, psi.conj()) 与 overview 章构造
T2=0.4 < T1=1 写在模块级常数。若把 T2 改成大于 dephase 是独立玩具信道,代码不会报错——这是教学拆分,不是完整 Lindblad。
关键概念速查表
| 概念 | 数学 / 直觉 | 代码 |
|---|---|---|
| 布居 | amp_damping,Kraus | |
| 掉下来的概率 | amp_damping 开头 | |
| 非对角 | dephase | |
.copy() | 不改原 | dephase |
| 保真度 | fidelity_pure | |
outer | 纯态 | rho_plus / rho0 |
| 写-存-读 | 两信道串联 | dephase(amp_damping(...), t) |
[0,1] / [1,1] | 相干 / 布居 | 矩阵下标 |
源码位置
clone 后打开(相对仓库根目录):
docs/quantum/memory/code/demo.py