私のプログラムは連立一次方程式を解こうとします。そのために、行列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
a
この特定のケースでは、Eigenは後者の3つの方程式を正しく解きますが、との解も与えますb
。
私が達成したいのは、解が1つしかない方程式だけが解かれ、残りの方程式(ここでは最初の方程式)がシステムに保持されることです。
言い換えれば、私は、その時点で特定の連立方程式で解ける方程式と、複数の解があるために解けない方程式を見つける方法を探しています。
それを達成するための良い方法を提案できますか?
編集:ほとんどの場合、マトリックスは正方形ではないことに注意してください。過剰決定も発生する可能性があることに注意するために、ここにもう1行追加しました。