matrix - sympy 复数矩阵的实部/虚部

标签 matrix complex-numbers 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 没有属性 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)]

(我在这里将 abcd 定义为普通符号,如果你将它们设置为真实的,答案就会简单得多)。

关于matrix - sympy 复数矩阵的实部/虚部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21550298/

相关文章:

python - 使用 numpy 将矩阵 int 值映射到 str 的有效方法

python-3.x - 显示格式化的未评估 = 在 ipython 笔记本中使用 sympy 评估

r - 将熔化与矩阵或data.frame一起使用可提供不同的输出

arrays - 如何根据一列元素的频率对矩阵的行进行排序?

r - 如何用复数在 R 中绘制函数?

c++ - 如何在 C++ 中使用复数 "i"

perl - 在 Perl 的 PDL::Complex 中转置

sympy - 在 sympy 中求解微分方程组的语法

python - 如何在 SymPy 中获得等式的两边?

excel - 将矩阵转换为 3 列表 ('reverse pivot' 、 'unpivot' 、 'flatten' 、 'normalize' )