如何使用sympy解决矩阵方程?

8
在sympy中,给定一个矩阵方程 M * x + N * y = 0(或更复杂的情况),如何解出x?(其中M、N是矩阵,x、y是向量)我尝试使用普通符号来解决这个问题,但显然失败了。使用MatrixSymbol也不起作用。有没有什么方法可以解决这个问题,或者sympy无法解决它?

M,N的元素是符号还是仅仅是数字? - Hooked
1
矩阵M和N不应该由它们的元素定义,我只想得到结果x = M^-1 * ( - N * y )。 - Dirk
2
SymPy目前不支持在矩阵表达式上使用solve,但如果有足够多的人要求,它是可以支持的。也许你可以在GitHub上提出一个问题?http://github.com/sympy/sympy/issues/ - MRocklin
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所需的基本事项已经存在。这可能很容易实现。


嗯,还不错,但还需要更好的实现方式...必须有人来实现真正的东西... - Dirk
1
就像我说的那样,如果你想尝试一下,这应该很容易。只需要告诉solve将矩阵表达式与非交换符号视为相同即可。 - asmeurer
1
如果我没记错的话,solve(M*x + N*y, x) 的结果应该是$-M^{-1} N y$。 - ken
2
开了一个新问题:“对于非交换符号,solve(M * x + N * y,x)失败”:https://github.com/sympy/sympy/issues/12258 - ken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接