4. 旋转门与参数化门
在单量子比特上,任何“纯旋转”都可以写成绕布洛赫球某条轴的转动。Qiskit 提供三类最常用的参数化旋转门:RX(θ)、RY(θ)、RZ(θ),分别对应绕 x、y、z 轴旋转角度 θ;而 U(θ, φ, λ) 是更一般的单比特酉门,可以覆盖包括相位在内的任意单比特操作。理解它们的矩阵形式、角度约定以及角度对布洛赫矢量的影响,是后续构建参数化电路、变分算法和量子机器学习模型的基础。
角度约定与矩阵形式
Qiskit 中旋转角以弧度为单位,旋转方向遵循右手定则:绕某轴正向旋转 θ,等价于从该轴正方向看向原点时逆时针转动。三个旋转门的矩阵为:
RX(θ) = [[cos(θ/2), -i·sin(θ/2)],
[-i·sin(θ/2), cos(θ/2)]]
RY(θ) = [[cos(θ/2), -sin(θ/2)],
[ sin(θ/2), cos(θ/2)]]
RZ(θ) = [[e^(-iθ/2), 0],
[0, e^( iθ/2)]]
注意矩阵中出现的是 θ/2,这来自 SU(2) 表示:布洛赫球上的几何旋转角是 θ,而态矢量在希尔伯特空间中的相位变化是 θ/2。因此 RX(2π) 并不等于单位矩阵,而是 −I,只有 RX(4π) 才回到 +I。这一点在参数扫描时会造成“态相同但全局相位不同”的现象,测量概率不受影响,但若做态层析或受控操作则必须留意。
旋转对布洛赫矢量的影响
设初始态为 |0⟩,对应布洛赫矢量 (0, 0, 1)。施加 RY(θ) 后,态变为 cos(θ/2)|0⟩ + sin(θ/2)|1⟩,布洛赫矢量落在 xz 平面内:
n = (sin θ, 0, cos θ)
当 θ = π/2 时,n = (1, 0, 0),即 |+⟩ 态;θ = π 时,n = (0, 0, −1),即 |1⟩。类似地,RX(θ) 把 |0⟩ 转到 yz 平面,n = (0, −sin θ, cos θ);RZ(θ) 只改变相对相位,对 |0⟩ 的布洛赫矢量没有可见影响,但作用在 |+⟩ 上会使其绕 z 轴转动,n = (cos θ, sin θ, 0)。这正是 RZ 常被用于调节干涉相位的几何原因。
用 U 门统一表达任意单比特旋转
U(θ, φ, λ) 的矩阵为:
U(θ, φ, λ) = [[cos(θ/2), -e^(iλ)·sin(θ/2)],
[e^(iφ)·sin(θ/2), e^(i(φ+λ))·cos(θ/2)]]
它把“绕某轴转多少”和“绕 z 轴补多少相位”拆成三个参数。常用等价关系包括:U(θ, 0, 0) = RX(θ)(差一个全局相位时需注意)、U(θ, −π/2, π/2) = RY(θ)、U(0, 0, λ) = P(λ) 相位门。实际构建任意单比特旋转时,一种稳妥做法是先确定目标布洛赫矢量方向 (nx, ny, nz),再解出极角与方位角:θ = arccos(nz),φ = atan2(ny, nx),然后用 RY(θ) 后接 RZ(φ) 组合实现(顺序与相位约定需按所用版本核对)。
参数扫描下的态变化
下面用一段可直接运行的 Qiskit 代码,对 RY(θ) 做 0 到 2π 的参数扫描,并计算布洛赫矢量分量,观察态在 xz 平面大圆上的运动:
import numpy as np
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
thetas = np.linspace(0, 2*np.pi, 9)
for t in thetas:
qc = QuantumCircuit(1)
qc.ry(t, 0)
sv = Statevector(qc)
bx, by, bz = sv.bloch_vector() # 返回 (x, y, z)
print(f"θ={t:.2f} n=({bx:+.3f}, {by:+.3f}, {bz:+.3f})")
预期输出中,θ = 0 时 n = (0, 0, 1);θ = π/2 时 n ≈ (1, 0, 0);θ = π 时 n ≈ (0, 0, −1);θ = 3π/2 时 n ≈ (−1, 0, 0);θ = 2π 时回到 (0, 0, 1)。若把 ry 换成 rx,则轨迹改到 yz 平面,x 分量恒为 0,y 分量取负号。若换成 rz 并先把初态制备为 |+⟩(qc.h(0)),则能看到 n 在 xy 平面内绕圈,z 分量保持为 0。
图中把 θ = 0、π/4、π/2、3π/4、π、3π/2 几个采样点标在大圆上,可以看到布洛赫矢量端点沿 xz 平面大圆匀速前进,θ 每增加 π/2 就前进四分之一圈。这正是“参数化门”的直观含义:改变一个连续参数,态就在球面上连续移动,而不是在离散门之间跳跃。
实践要点与常见误区
- 单位与周期:Qiskit 用弧度;态对 θ 的周期是 2π,但酉矩阵对 θ 的周期是 4π,做全局相位敏感的任务时要区分。
- RZ 的“隐形”:单独对 |0⟩ 施加 RZ 不改变测量结果,必须配合 H 门等制备叠加态才能观察到相位效应。
- U 门参数顺序:
U(θ, φ, λ)三个参数含义不同,写反会导致完全不同的态,建议用RX/RY/RZ组合验证等价性。 - 参数绑定:在变分电路中应使用
Parameter对象而非硬编码角度,便于后续用assign_parameters批量扫描。
把上述扫描封装成函数,输入旋转轴与角度数组,输出布洛赫矢量序列,就能快速比较 RX、RY、RZ 三种旋转在同一初态下的不同轨迹。这种“参数—态”对应关系的建立,是理解更复杂参数化电路(如 RY—CX 纠缠层)行为的第一步。