假设我们有矩阵方程A*x = b
,其中A
是平方但是奇异的。一般来说,这个方程要么没有解,要么有无穷多个解。如果它确实有解决方案,我想找到他们的形式符号在自由变量方面使用SymPy。
我知道如果我们能找到一个特定的解x
,那么通过将A
的零空间的向量添加到x
上,我们可以找到其余的,所以问题被简化为只找到一个解。在Mathematica中,函数LinearSolve
会给你这样一个解决方案,但不幸的是,在SymPy中,所有的求解器似乎都要求a是非奇异的。
有谁知道我如何使用SymPy找到这样的解决方案(符号) ?我一直在研究滚动我自己的算法来做到这一点,可能是通过使用A.rref()
把A
变成行简化阶梯形格式,但我对我的线性代数没有足够的信心,不知道这是否会稳定地工作。另一种可能是计算伪逆,但是函数pinv()
抱怨奇异矩阵。
以防有人遇到这个问题,答案是使用最新版本的SymPy中的linsolve
函数,它具有此功能。