我试图用一个由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
复制相似问题