假设我有这个矩阵:
11 1 | 1 0 0 1 | 1
这个系统显然有无限的解决方案。
x1 = -x2 x3
= 1
x1 依赖于 x2,x2 是免费的,但我感兴趣的是 x3。 有没有一种算法可以找到如下所示的解决方案:[NaN, NaN, 1] 表示 x1、x2 和 x3?
我的猜测是你可以使用高斯消除算法的变体,但我不确定该怎么做。
我假设一个系统至少有一个解决方案(你可以使用标准高斯消除来检查它)。
引理:变量的值是固定的,当且仅当它是缩减行梯队形式中行中的唯一变量时。
证明: 如果它是行中的唯一变量,则对于齐次系统的任何解决方案,它必须为零。因此,它是原始系统的常数。
如果它不是行中的唯一变量,则其值不固定。事实上,行中的另一个变量是自由的,因此我们可以任意选择它的值。此自由变量的两个不同选择给出了两个不同的枢轴变量值。
所以最终的解决方案看起来像这样:
-
使用高斯消除法获取矩阵的缩减行梯队形式。
-
检查是否至少有一个解决方案。如果没有返回某些内容。
-
如果变量是行中唯一的变量,则返回包含变量值的向量,否则
Nan
返回。
在您的情况下,简化的梯队形式为:
1 1 0 0
0 0 1 1
最后一个变量的唯一值为 1。第二个变量是自由变量。第一个变量不是其行中的唯一变量。因此,结果是[Nan, Nan, 3]
.