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

QuTiP中如何交换张量内子态位置且保持psi的ket属性

QuTiP 张量积量子态指定位置子系统交换实现方案

核心实现方法(推荐)

直接使用QuTiP量子对象(Qobj)内置的permute方法完成子系统顺序重排,该方法会自动保留量子态的右矢属性,不需要手动构造交换算符,操作无数值误差。

QuTiP中张量积的子系统索引从0开始计数:原有3体态的三个子系统索引依次为0(第一个fock态)、1(第二个fock态)、2(第三个fock态),要交换第二个和第三个位置的子系统,只需要给permute传入新顺序的原索引列表[0,2,1]即可,对应新张量积的第0位放原0号系统、第1位放原2号系统、第2位放原1号系统。

代码示例:

# 原有态定义(替换成你实际的N、constants取值即可)
N = 5
constants = 0.8
psi = constants * tensor(fock(N,0), fock(N,1), fock(N,2))

# 执行子系统交换
psi = psi.permute([0, 2, 1])

结果验证

可以直接和目标态做差求模长验证正确性,同时检查态类型确认保持ket属性:

psi_target = constants * tensor(fock(N,0), fock(N,2), fock(N,1))

# 验证态完全一致,输出为0
print("态差值模长:", (psi - psi_target).norm())
# 验证态类型为右矢,输出'ket'
print("态类型:", psi.type)

补充说明

  • 该方法会自动修正Qobj的dims维度标记,后续做偏迹、张量积、演化等操作不会出现维度不匹配问题,比手动reshape数组、手动构造SWAP算符的方案更稳妥。
  • 如果需要以量子算符作用的形式完成交换(例如要把交换操作嵌入量子电路逻辑),可以构造作用在索引1、2位置的两体SWAP算符,扩展到3体全空间后作用在态上,效果和permute完全一致,但实现更繁琐,无特殊需求直接用permute即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:36:13