这是我的问题。
我正在使用 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 是一个不可变矩阵,但我指定我想要一个可变矩阵...
所以我陷入了死胡同,而且我没有解决方案......
有人可以帮助我吗? 非常感谢!
最佳答案
如果您直接将 Matrix 传递给大多数 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
定义为普通符号,如果你将它们设置为真实的,答案就会简单得多)。
关于matrix - sympy 复数矩阵的实部/虚部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21550298/