Matrix 辛复矩阵的实部/虚部

Matrix 辛复矩阵的实部/虚部,matrix,complex-numbers,sympy,Matrix,Complex Numbers,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:ImmutableMa

这是我的问题

我使用了辛矩阵和复矩阵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没有作为_系数的属性。”

错误发生在sp.re(行)和sp.im(行)操作过程中。。。 Sympy告诉我行是一个不可变矩阵,但我指定我想要一个可变矩阵

所以我在死胡同里,我没有解决办法

有人能帮我吗?
多谢各位

如果直接将矩阵传递给大多数辛函数,它们将不起作用。您需要使用矩阵的方法,或者如果没有这种方法(这里就是这种情况),请使用
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
定义为普通符号,如果将它们设置为实数,答案会简单得多)