找到 SymPy 中存在的奇异矩阵方程的答案

Finding an answer to a singular matrix equation if it exists in SymPy

假设我们有矩阵方程 A*x = b,其中 A 是方阵但奇异的。那么一般来说,方程要么没有解,要么有无穷多个解。如果确实有解决方案,我想使用 SymPy 根据自由变量 symbolically 找到它们的形式。

我知道如果我们能找到一个特定的解决方案 x,那么通过将 A 的零空间的向量添加到 x 我们可能会找到其余的,因此问题减少了只找到一个解决方案。在 Mathematica 中,函数 LinearSolve 将为您提供这样的解决方案,但不幸的是,在 SymPy 中,所有求解器似乎都要求 A 是非奇异的。

有谁知道我如何使用 SymPy 找到这样的解决方案(象征性地)?我一直在研究滚动我自己的算法来做到这一点,可能首先使用 A.rref()A 放入简化的行阶梯格式,但我对我的线性代数没有足够的信心知道是否这会稳定地工作。另一种可能性可能是计算伪逆,但函数 pinv() 抱怨奇异矩阵。

以防万一有人遇到这个问题,答案是使用最新版本的 SymPy 中的 linsolve 函数,它具有此功能。