我正在尝试将符号与由 定义的矩阵相乘QuTip quantum object
,但出现此错误:
TypeError: Incompatible object for multiplication
我用了:
from qutip import *
import sympy as sp
w0 = sp.Symbol('\omega_{0}')
w0*destroy(4)
我错过了什么?
该对象destroy(4)
包含的信息不仅仅是歼灭算子的矩阵表示,因此它表示为Qobj
qutip 中的类型。该类型Qobj
目前不支持与 type 相乘sympy.Symbol
。请注意,您可以查看右侧的__rmul__
方法Qobj
以查找支持乘以的类型。Qobj
如果您对使用这些运算符的矩阵表示感到满意,您可以执行以下操作以将符号与对应的矩阵相乘destroy(4)
。以下将起作用:
w0 * destroy(4).data.todense()
这将是一个包含符号的 numpy 矩阵,您可以将其与计算中其他运算符对应的矩阵相乘(效率大大降低!)。
否则这可能值得在他们的 github 上发布一个问题。__rmul__
根据如何分派到numbers.Number
这里,可能会实现一个实现。