是否有complex=True的MatrixSymbol版本?

问题描述 投票:0回答:1

为了求解 (x+conjugate(x)=0) 这样的方程,Sympy 需要您告诉它 x 是一个复数变量,例如

x = symbols('x', complex=True)
solve((x-conjugate(x)).as_real_imag(),x)

其输出为 [{x: re(x), im(x): 0}],即 x 可以是任何纯实值。我想做一些与矩阵方程类似的事情,例如

n=2
X = MatrixSymbol('x',n,n,complex=True)
solve((X-conjugate(X)).as_real_imag(),X)

但是,MatrixSymbol不支持complex=True。

有什么替代方案吗?我是否应该创建 n^2 个变量(每个变量都用complex=True 实例化)并用这些变量构建我自己的矩阵,而不是使用 MatrixSymbol 对象?当 n 变大(即 n=5)时,如何扩大规模?

matrix sympy solver complex-numbers
1个回答
0
投票

您可以通过创建单个复数变量的矩阵而不是使用 MatrixSymbol 来实现此目的。您可以使用符号生成复杂变量,然后手动构建矩阵。例如:

from sympy import symbols, Matrix

n = 5  # Change n as needed
X = Matrix(n, n, lambda i, j: symbols(f'x_{i}_{j}', complex=True))

通过这种方式,您可以轻松扩展以获得更大的值 𝑛 。然后,您可以使用该矩阵继续求解方程。

© www.soinside.com 2019 - 2024. All rights reserved.