You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qiskit中cu()函数报错:缺少必需参数'target_qubit'求助

问题解决:cu() 参数缺失报错与参数疑问解答

一、报错原因与修复

你的报错核心是Qiskit中cu()方法的参数数量和顺序不符合要求。Qiskit的cu门完整参数签名为:

circuit.cu(theta, phi, lam, gamma, control_qubit, target_qubit)

必须传入4个相位参数(theta/phi/lam/gamma),再依次传入控制量子位、目标量子位。

你写的circuit.cu(-pi/2, -pi/2, pi/2, 1, 3)只传了3个相位参数,程序会把1误判为第四个相位参数gamma,把3当成控制位,最终缺少目标位参数,因此触发missing required positional argument: 'target_qubit'报错。

修复示例

如果不需要额外全局相位,直接将gamma设为0即可:

# 正确调用:补充gamma参数(设为0)
circuit.cu(-pi/2, -pi/2, pi/2, 0, 1, 3)

你的测试代码中circuit.cu(-pi/2, -pi/2, pi/2,0, 1, 3)是正确的,但另一条circuit.cu(-pi/2, 0 , 0, 3,2, 1)参数顺序错误,应调整为:

# theta=-pi/2, phi=0, lam=0, gamma=0,控制位2,目标位1
circuit.cu(-pi/2, 0, 0, 0, 2, 1)

另外,你代码里的circuit.cu3(-pi/2, 2, 1)也存在参数缺失问题,cu3是旧版受控U门,参数为cu3(theta, phi, lam, control, target),正确写法示例:

circuit.cu3(-pi/2, 0, 0, 2, 1)  # 补充phi和lam参数

二、cu门参数疑问解答

Qiskit的cu门包含4个相位参数,其中:

  • theta/phi/lam是U门的核心旋转参数,直接决定门的量子态变换效果,对应单量子位U门U(theta, phi, lam)的三个旋转角度;
  • gamma是全局相位,量子力学中全局相位不会影响测量结果(测量仅依赖概率幅的模长平方),因此实际计算中它不会改变电路输出。但它是门数学定义的一部分,Qiskit保留该参数是为了保证门定义的完整性。

这就是为什么你会觉得“只有三个有效参数”——gamma无实际观测效果,但语法上必须传入它,才能让程序正确识别后续的控制位和目标位。


内容的提问来源于stack exchange,提问作者rat fat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:15:10