我试图用一个由QuTip quantum object
定义的矩阵来乘一个符号,但是我得到了以下错误:
TypeError: Incompatible object for multiplication
我用:
from qutip import *
import sympy as sp
w0 = sp.Symbol('\omega_{0}')
w0*destroy(4)
我错过了什么吗?
发布于 2021-12-29 15:42:08
对象destroy(4)
包含的信息比湮没算子的矩阵表示要多得多,因此它在qutip中被表示为Qobj
类型。类型Qobj
目前不支持sympy.Symbol
类型的乘法。请注意,您可以在__rmul__
方法Qobj
下面查找支持哪些类型与右边的Qobj
相乘。
如果您乐于使用这些运算符的矩阵表示,您可以执行以下操作,将符号与对应于destroy(4)
的矩阵相乘。下列措施将起作用:
w0 * destroy(4).data.todense()
这将是一个包含符号的numpy矩阵,您可以将它与计算中与其他运算符相对应的矩阵相乘(大大降低了效率!)
否则,这可能值得在他们的github上发布一个问题。基于__rmul__
如何被分派到numbers.Number
这里,实现可能是可能的。
https://stackoverflow.com/questions/70490407
复制相似问题