c++ - 奇异矩阵的高斯消元

标签 c++ c matrix linear-algebra

<分区>

所以我一直在努力寻找可以求解一组联立方程并且还可以处理无限解的可能性(即奇异矩阵)的代码。从我遇到的所有 C 中的示例代码 Gaussian Elimination 中,在行减少的步骤之一中除以零时会出现问题。肯定有一些数值方法可以解决这个问题。

最佳答案

高斯消元[1] 不适用于奇异矩阵。正如您在数字上注意到的那样,这通常会导致除以零或其他一些问题。如果您怀疑要对角化的矩阵可能是奇异的(或在数值上接近奇异),您应该检查奇异值分解 (SVD),它可以为您提供逆矩阵或类似的东西。 Numerical Recipes[1] 或 GS​​L[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/

相关文章:

c++ - 与 unordered_map 相互依赖的类型

c++ - 为什么我可以使用比分配的内存更多的内存?

C/D画线包

arrays - 在矩阵中定位相邻元素的有效方法

c++ - 无法通过引用传递的参数维护 const 正确性

c++ - c++ 中的模板语法只是模板 <typename T> 吗?

在特定目录中创建零字节文件

C 从输入文件中读取大矩阵

r - 乘以矩阵 R

c++ - 为什么不可能构建一个可以确定 C++ 函数是否会更改特定变量的值的编译器?