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

PennyLane量子库计算异常:Pauli算符张量积期望值不一致问题

问题原因解析

核心错误:混淆矩阵乘法与张量积

你物理推导里的关键错误是把矩阵乘法和张量积搞混了:

  • Pauli X算子在同一量子比特上的矩阵乘法确实是单位矩阵:$X \cdot X = I$;
  • 但X与自身的张量积(作用在不同量子比特)不是单位矩阵:$X \otimes X$是两比特的XX关联算子,它的平方才是单位矩阵,本身不是。

所以你说的$X(0) \otimes X(1) \otimes X(1)$等价于$X(0)$的结论不成立——这里的$X(1) \otimes X(1)$是两比特的XX算子,不是单位矩阵,整个三比特算子的期望值是$\langle X(0) \rangle \cdot \langle X(1) \rangle \cdot \langle X(1) \rangle$,和$\langle X(0) \rangle$完全不同。

代码中的算子实际含义

你的两段代码都是两比特系统,第一段里的qml.PauliX(0) @ qml.PauliX(1) @ qml.PauliX(1)是算子复合操作(即量子门的先后作用):

  1. 先对比特1应用X门;
  2. 再对比特1应用X门——两次X门作用抵消,等价于对比特1做单位操作;
  3. 最后对比特0应用X门。

整个复合操作等价于仅对比特0应用X门、比特1保持单位操作(即$X(0) \otimes I(1)$),所以它的期望值和第二段代码里的$\langle X(0) \rangle$理论上完全一致。

为什么你看到结果不同?

如果实际运行两段代码结果不一样,大概率是以下原因:

  • PennyLane版本问题:旧版本对算子复合的处理可能存在bug,建议升级到最新稳定版;
  • 代码书写错误:比如误把@写成其他符号、wires编号写错等;
  • 浮点计算误差:极小的数值差异可能来自浮点精度限制,但通常可以忽略。

补充:如果要实现三比特的$X(0) \otimes X(1) \otimes X(2)$

若你想测试三比特系统中$X(0) \otimes X(1) \otimes X(2)$的期望值,需要创建三比特设备,代码示例:

import pennylane as qml
dev = qml.device("default.qubit", wires=3)
@qml.qnode(dev)
def func(x, y, z):
    qml.RY(x, wires=0)
    qml.RY(y, wires=1)
    qml.RY(z, wires=2)
    return qml.expval(qml.PauliX(0) @ qml.PauliX(1) @ qml.PauliX(2))
print(func(10,5,3))

此时期望值为$\langle X(0) \rangle \cdot \langle X(1) \rangle \cdot \langle X(2) \rangle$,和$\langle X(0) \rangle$明显不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 07:22:02