如何用sympy求解矩阵方程?

9 投票
1 回答
9783 浏览
提问于 2025-04-18 01:03

在sympy这个库里,假设我们有一个矩阵方程:

M * x + N * y = 0

(或者更复杂的情况……)

我们想要怎么求出x呢?(这里M和N是矩阵,x和y是向量)

我试着用普通的符号来做这个,但显然失败了。使用MatrixSymbol也不行。请问有没有什么办法可以做到,还是说sympy做不到这一点?

1 个回答

8

正如MRocklin提到的,MatrixExpressions(矩阵表达式)目前还不支持这个功能,但非交换符号是可以的:

In [13]: M, N, x, y = symbols('M N x y', commutative=False)

In [15]: solve(M*x + N*y, x)
Out[15]:
⎡      -1⎤
⎣-N⋅y⋅M  ⎦

和MatrixExpressions不同,非交换符号没有形状的概念,所以你需要自己去管理这个形状。不过这也说明,基本的实现方式在MatrixExpression中已经存在了。实现起来可能会很简单。

撰写回答