为了求解 (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)时,如何扩大规模?
您可以通过创建单个复数变量的矩阵而不是使用 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))
通过这种方式,您可以轻松扩展以获得更大的值 𝑛 。然后,您可以使用该矩阵继续求解方程。