问题描述
当我运行这段代码
import sympy as sp
sp.init_printing(pretty_print=False)
I = sp.Identity(3)
A = sp.MatrixSymbol('A',3,3)
A*I
I*A
sp.adjoint(A)*I
I*sp.adjoint(A)
我得到了预期的结果,
A
A
Adjoint(A)
Adjoint(A)
但是,如果我跑步
sp.adjoint(I)*A
我明白了
Adjoint(I)*A
为什么Sympy不能用I代替Adjoint(I)?
解决方法
Adjoint(MatrixExpr)
不求值,它只是一个符号对象:https://github.com/sympy/sympy/blob/master/sympy/matrices/expressions/adjoint.py。
因此,我假设sp.adjoint(I)
在任何矩阵上使用延迟加载来节省计算,直到实际需要。对函数求值后,便会计算伴随项并将其设置为I。
也许I.adjoint()
会如您所愿。