QuTiP TypeError:与张量积不兼容的Qobj形状

QuTiP TypeError:与张量积不兼容的Qobj形状,qutip,Qutip,我正在尝试执行这个简单的操作 tensor(hadamard_transform(1), hadamard_transform(1), identity(2), identity(2)) * basis(16,1) 但是我有 Traceback (most recent call last): File "<ipython-input-163-ae66af2f799c>", line 1, in <module> tensor(hadamard_trans

我正在尝试执行这个简单的操作

tensor(hadamard_transform(1), hadamard_transform(1), identity(2), identity(2)) * basis(16,1)
但是我有

Traceback (most recent call last):

  File "<ipython-input-163-ae66af2f799c>", line 1, in <module>
    tensor(hadamard_transform(1), hadamard_transform(1), identity(2), identity(2)) * basis(16,1)

  File "/home/abdallaessam/anaconda2/envs/Quantum/lib/python2.7/site-packages/qutip/qobj.py", line 515, in __mul__
    raise TypeError("Incompatible Qobj shapes")

TypeError: Incompatible Qobj shapes

如何解决这个问题?

我想我知道是什么导致了你的问题

让我们从指定的运算符开始

a = tensor(hadamard_transform(1), hadamard_transform(1), identity(2), identity(2))
这告诉你的是,你基本上有四个量子门,作用于四个独立的量子位。前两个门是哈达玛门,作用于前两个量子位,然后你就有了对第二个量子位没有任何影响的身份

当你写
basis(16,1)
QuTiP基本上将其解释为一个存在于16维希尔伯特空间中的量子位,而不是四个量子位的张量积

b = tensor([basis(2,0), basis(2,0), basis(2,0), basis(2,1)])
为了解决你的问题,你应该把你的ket向量指定为四个量子位的张量积

b = tensor([basis(2,0), basis(2,0), basis(2,0), basis(2,1)])

然后编写
a*b
以获得所需的输出。

虽然这是一个解决方法,但是否有一个展平函数或允许您执行这些乘法的东西?我从低维空间的显式张量积开始,然后最终使用不能写成张量积但必须是高维空间中单个算子的算子?