Skip to content

jcxbly/iSWAP

Repository files navigation

超导量子计算中 iSWAP 门的动力学演化仿真教程

这份教程演示一个最小但完整的仿真流程:

  1. 构造 qubit-coupler-qubit 三体系统。
  2. 给 tunable coupler 定义脉冲信号。
  3. 对含时哈密顿量做数值时间演化。
  4. 从演化算符中抽取两比特有效门。
  5. 计算 iSWAP 门保真度与泄漏。

配套脚本是 simulate_iswap.py。它只依赖 numpyscipymatplotlib,适合作为理解动力学的起点。

如果需要直接生成包含无退相干和含退相干结果的完整报告,运行:

python3 iswap_report.py

报告和图表会输出到 results/

1. 物理图像

iSWAP 门的理想矩阵为

U_iSWAP =
[[1, 0,  0, 0],
 [0, 0,  i, 0],
 [0, i,  0, 0],
 [0, 0,  0, 1]]

它的核心作用是在单激发子空间中完成

|10> -> i |01>
|01> -> i |10>

在超导电路里,常见做法是让两个 fixed-frequency qubit 通过一个 tunable coupler 间接相互作用。coupler 远失谐时,两个 qubit 基本解耦;对 coupler 施加 flux pulse 后,有效交换耦合增强,单激发会在两个 qubit 之间振荡。选择合适的脉冲时长,就能得到 iSWAP。

2. 最小模型

这里把每个器件都近似成二能级系统:

q1 -- c -- q2

使用旋波近似下的交换耦合哈密顿量:

H(t) / hbar =
  omega_1 a_1^dag a_1
+ omega_c(t) a_c^dag a_c
+ omega_2 a_2^dag a_2
+ g_1c (a_1^dag a_c + a_1 a_c^dag)
+ g_2c (a_2^dag a_c + a_2 a_c^dag)

在脚本中,a 被二能级 lowering operator sigma_- 替代,因此总希尔伯特空间维度是 2 x 2 x 2 = 8

更真实的 transmon 仿真通常需要三能级或更多能级,并加入非谐性项。这个最小模型先帮助你看清 iSWAP 的动力学机制。

3. Coupler 脉冲

脚本使用一个平顶脉冲:

omega_c(t): omega_c_idle -> omega_c_on -> omega_c_idle

上升沿和下降沿用 smoothstep 平滑:

smoothstep(x) = x^2 (3 - 2x)

这样避免频率突变造成过强的非绝热激发。主要参数在 Params 中:

wq1     = 2pi * 5.000 GHz
wq2     = 2pi * 5.000 GHz
wc_idle = 2pi * 6.500 GHz
wc_on   = 2pi * 5.450 GHz
g1c     = 2pi * 0.080 GHz
g2c     = 2pi * 0.080 GHz
rise    = 4.0 ns
hold    = 51.5 ns
dt      = 0.02 ns

这些参数不是某个真实芯片的标定值,而是为了让单激发交换清楚可见,并给出一个接近 iSWAP 的示例门点。

4. 时间演化

含时薛定谔方程为

dU(t)/dt = -i H(t) U(t)

脚本把时间离散成很多小步,在每一步中取中点哈密顿量:

U_step = expm(-1j * H(t + dt/2) * dt)
U = U_step @ U

这相当于 piecewise-constant 近似。只要 dt 足够小,就能稳定地捕捉门演化。

5. 从三体演化抽取两比特门

完整演化算符 U8 x 8。实际两比特门只关心 coupler 回到基态 |0_c> 的计算子空间:

|00> -> |0 0 0>
|01> -> |0 0 1>
|10> -> |1 0 0>
|11> -> |1 0 1>

脚本把这些行列取出来,得到一个 4 x 4 的投影映射 K。如果 coupler 或非计算态残留了人口,K 就不是严格酉矩阵,这部分会体现为 leakage。

平均泄漏定义为

L = 1 - Tr(K^dag K) / 4

6. 门保真度

对于可能有泄漏的投影映射 K,脚本使用

F_avg = [Tr(K^dag K) + |Tr(U_target^dag K)|^2] / [d(d+1)]

其中 d = 4U_target = U_iSWAP

实际实验中,iSWAP 脉冲还会积累单比特动态相位。因此脚本会优化两个 virtual-Z 角度:

K_corrected = [Rz(theta1) tensor Rz(theta2)] K

然后报告相位校正后的保真度。

7. 运行教程代码

在当前目录运行:

python3 simulate_iswap.py

输出包括:

  • 脉冲长度。
  • coupler idle/on 频率。
  • 原始保真度。
  • virtual-Z 校正后的保真度。
  • 平均泄漏。
  • 投影两比特映射 K
  • 单激发初态 |100> 的人口演化图 iswap_population.png

生成完整报告:

python3 iswap_report.py

输出包括:

  • results/iswap_report.md:中文结果报告。
  • results/summary.json:参数和保真度摘要。
  • results/waveforms.png:量子比特和耦合器波形。
  • results/coherent_population.png:无退相干动力学。
  • results/decoherent_population.png:含退相干动力学。

8. 如何调参得到更好的 iSWAP

最重要的两个参数是:

  1. wc_on:决定 coupler 靠近 qubit 的程度,也决定有效交换强度和泄漏风险。
  2. hold:决定交换演化持续多久。

建议步骤:

  1. 固定 wc_on,扫描 hold,观察 |100>|001> 的交换峰值。
  2. 在交换接近完整时,计算 iSWAP fidelity。
  3. 再扫描 wc_on,寻找高保真、低泄漏的区域。
  4. 调整 rise,在速度和泄漏之间折中。

一个非常粗略的有效模型是:

H_eff / hbar ~= J_eff (|10><01| + |01><10|)

J_eff * T ~= pi / 2

时会接近 iSWAP。真实三体模型中还会有动态相位和泄漏,所以最终仍需要数值优化。

9. 下一步:更真实的 transmon-coupler-transmon

如果要向真实器件靠近,可以把每个模式从二能级扩展到三能级或四能级:

H / hbar =
  sum_j [omega_j n_j - alpha_j n_j(n_j - 1)/2]
+ sum_<jk> g_jk (a_j^dag a_k + a_j a_k^dag)

然后检查:

  • |02>|20> 等非计算态泄漏。
  • coupler 高激发态残留。
  • qubit 频率不完全相等时的 detuning。
  • flux pulse 的频谱泄漏。
  • decoherence 下的过程保真度。

这份最小教程的结构仍然适用:定义脉冲、构造含时哈密顿量、传播、投影、相位校正、计算保真度。

About

iSWAP gate dynamics simulation for superconducting qubit-coupler-qubit systems

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors