<分区>
所以我一直在努力寻找可以求解一组联立方程并且还可以处理无限解的可能性(即奇异矩阵)的代码。从我遇到的所有 C 中的示例代码 Gaussian Elimination 中,在行减少的步骤之一中除以零时会出现问题。肯定有一些数值方法可以解决这个问题。
标签 c++ c matrix linear-algebra
<分区>
所以我一直在努力寻找可以求解一组联立方程并且还可以处理无限解的可能性(即奇异矩阵)的代码。从我遇到的所有 C 中的示例代码 Gaussian Elimination 中,在行减少的步骤之一中除以零时会出现问题。肯定有一些数值方法可以解决这个问题。
最佳答案
高斯消元[1] 不适用于奇异矩阵。正如您在数字上注意到的那样,这通常会导致除以零或其他一些问题。如果您怀疑要对角化的矩阵可能是奇异的(或在数值上接近奇异),您应该检查奇异值分解 (SVD),它可以为您提供逆矩阵或类似的东西。 Numerical Recipes[1] 或 GSL[2] 是一个很好的资源,如果您想了解如何以及为什么。
[1] http://www.haoli.org/nr/bookcpdf.html (第 2.1 章)
[2] http://www.gnu.org/software/gsl/
关于c++ - 奇异矩阵的高斯消元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985004/