这是我的问题。
我正在使用sympy和一个复杂的矩阵P(P的所有元素都是复数值)。 我想提取第一行的实部/虚部。
所以,我使用以下序列:
import sympy as sp
P = sp.Matrix([ [a+sp.I*b,c-sp.I*d], [c-sp.I*d,a+sp.I*b] ])
Row = P.row(0)
Row.as_mutable()
Re_row = sp.re(Row)
Im_row = sp.im(Row)
但是代码返回了以下错误:
“AttributeError:ImmutableMatrix没有属性as_coefficient。”
在操作sp.re(Row)和sp.im(Row)期间发生错误... Sympy告诉我,Row是一个不可变矩阵,但我指定我想要一个可变的矩阵......
所以我走到了尽头,我没有解决方案......
有人可以帮助我吗? 非常感谢你!
答案 0 :(得分:2)
如果您直接将矩阵传递给他们,大多数SymPy功能将无效。您需要使用Matrix的方法,或者如果没有这样的方法(如此处所示),请使用applyfunc
In [34]: Row.applyfunc(re)
Out[34]: [re(a) - im(b) re(c) + im(d)]
In [35]: Row.applyfunc(im)
Out[35]: [re(b) + im(a) -re(d) + im(c)]
(我已将a
,b
,c
和d
定义为此处的普通符号,如果您将它们设置为真实,则答案会更多更简单)。