QuTiP:解决不一致的 Qobj 形状
QuTiP: Resolving inconsistent Qobj shapes
之前在 QuTiP TypeError: Incompatible Qobj shapes with tensor product 中对此进行了探讨,但我不确定那里的答案。
假设我定义了A = tensor(qeye(2), qeye(2))
和B = qeye(4)
,我无法将它们相乘,因为对象形状不一致。
但是,矩阵具有相同的维度,我想 "flatten" A
允许它乘以 B
。如果我有可分离运算符和不可分离运算符的组合,我该如何将它们一起使用?换句话说,B
不能进一步简化,所以我应该对 A
做些什么才能使它们相乘?
编辑:看起来笨重的 Qobj(A.data.toarray()) 可以工作,但我会保持开放状态,以防有人有更好的想法或理解 QuTiP 为什么这样做。
是的,使用 Qobj.data
可以得到表示状态或运算符的矩阵。
因此 A.data * B.data
允许您将它们相乘。完成后,您可以将其封装在 Qobj(A.data * B.data)
中,使其成为一个量子对象。
之前在 QuTiP TypeError: Incompatible Qobj shapes with tensor product 中对此进行了探讨,但我不确定那里的答案。
假设我定义了A = tensor(qeye(2), qeye(2))
和B = qeye(4)
,我无法将它们相乘,因为对象形状不一致。
但是,矩阵具有相同的维度,我想 "flatten" A
允许它乘以 B
。如果我有可分离运算符和不可分离运算符的组合,我该如何将它们一起使用?换句话说,B
不能进一步简化,所以我应该对 A
做些什么才能使它们相乘?
编辑:看起来笨重的 Qobj(A.data.toarray()) 可以工作,但我会保持开放状态,以防有人有更好的想法或理解 QuTiP 为什么这样做。
是的,使用 Qobj.data
可以得到表示状态或运算符的矩阵。
因此 A.data * B.data
允许您将它们相乘。完成后,您可以将其封装在 Qobj(A.data * B.data)
中,使其成为一个量子对象。