我试图在 Math.Net 中求解矩阵,当矩阵的实际解之一为 0 时,但我得到 -NaN- 作为结果。
这是一个示例矩阵,为简单起见已对其进行了简化。
1 0 1 | 10000
0 1 -1 | 1000
0 0 0 | 0
代码示例:
public void DoExample()
{
Matrix<double> A = Matrix<double>.Build.DenseOfArray(new double[,] {
{ 1, 0, 1 },
{ 0, 1, -1 },
{ 0, 0, 0 },
});
Vector<double> B = Vector<double>.Build.Dense(new double[] { 10000, 1000, 0 });
var result = A.Solve(B);
}
我希望得到的解决方案是[ 10000, 1000, 0 ].
正如你所看到的,我想要的结果已经是增广向量了。这是因为在本例中,我使用 Gauss-Jordan 手动将矩阵简化为简化行梯形形式 (RREF)。如果我能以某种方式在 Math.Net 中使用 Gauss-Jordan 运算来执行此操作,我可以检查 RREF 矩阵中是否存在全 0 行的情况。这可以做到吗?
否则,有什么方法可以识别 0 是使用现有 Math.Net 线性代数求解器运算的变量之一的唯一可能解吗?
Thanks!