Sympy复杂矩阵的真实/虚构部分



这是我的问题。

我正在使用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没有属性为_coeffility。"

误差发生在操作sp.re(行)和sp.im(行)...sympy告诉我,行是一个不可变的矩阵,但我指定我想要一个可变的矩阵...

所以我处于死胡同,我没有解决方案...

有人可以帮我吗?非常感谢!

如果您直接将矩阵传递给它们,则大多数Synspy函数将无法正常工作。您需要使用矩阵的方法,或者如果没有这样的方法(如此处),请使用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)]

(我已经将abcd定义为仅在这里的普通符号,如果您将它们设置为真实的答案将更简单)。

最新更新