【发布时间】:2012-07-10 13:12:21
【问题描述】:
我的程序试图求解一个线性方程组。为此,它组装矩阵coeff_matrix 和向量value_vector,并使用Eigen 来解决它们,如下所示:
Eigen::VectorXd sol_vector = coeff_matrix
.colPivHouseholderQr().solve(value_vector);
问题在于,系统既可能被过度确定,也可能被低估。在前一种情况下,Eigen 给出正确或不正确的解决方案,我使用coeff_matrix * sol_vector - value_vector 检查解决方案。
但是,请考虑以下方程组:
a + b - c = 0
c - d = 0
c = 11
- c + d = 0
在这种特殊情况下,Eigen 正确求解了后三个方程,但也给出了 a 和 b 的解。
我想要实现的是只求解只有一个解的方程,其余方程(这里的第一个方程)将保留在系统中。
换句话说,我正在寻找一种方法来找出当时在给定方程组中哪些方程可以求解,哪些不能,因为会有多个解。
您能提出任何实现这一目标的好方法吗?
编辑:请注意,在大多数情况下,矩阵不是正方形的。我在这里又添加了一行,只是为了注意也可能发生过度决定。
【问题讨论】:
标签: c++ linear-algebra eigen