假设我们有矩阵方程 A*x = b
,其中 A
是正方形但是奇异的 . 然后一般来说,方程式要么没有解决方案要么没有多少解决方案 . 如果确实有解决方案,我想使用SymPy以自由变量的形式象征性地找到它们的形式 .
我知道如果我们能找到一个特定的解决方案 x
,那么通过将 A
的零空间中的向量添加到 x
上,我们可以找到其余的,所以问题就减少到找到一个解决方案 . 在Mathematica中,函数 LinearSolve
将为您提供这样的解决方案,但不幸的是在SymPy中,所有求解器似乎都要求A是非奇异的 .
有谁知道如何使用SymPy找到这样的解决方案(象征性地)?我一直在研究滚动我自己的算法来做到这一点,可能首先使用 A.rref()
将 A
放入缩减的行梯形格式,但我对我的线性代数没有足够的信心来知道这是否能够稳定运行 . 另一种可能性可能是计算伪逆,但函数 pinv()
抱怨奇异矩阵 .
1 回答
如果有人遇到这个问题,答案是在最新版本的SymPy中使用
linsolve
功能,它具有此功能 .