我有一个线性方程组,构成一个 NxM
矩阵(即非方形)我需要解决 - 或者至少尝试解决以显示系统没有解决方案。 (更可能的是,没有解决方案)
据我所知,如果我的矩阵不是正方形(过度或不足),那么就找不到精确解 - 我是否正确地想到这一点?有没有办法将矩阵转换为方阵以计算确定性,应用高斯消元法,克莱默定律等?
值得一提的是,我的未知数的系数可能为零,所以在某些极少数情况下,可能会有零列或零行。
答案 0 :(得分:8)
矩阵是否为正方形不是决定解空间的因素。它是矩阵的排名与确定该列的列数相比较(参见the rank-nullity theorem)。通常,对于线性方程组,您可以得到零个,一个或无穷多个解,这取决于它的等级和无效关系。
然而,要回答您的问题,您可以使用高斯消元法找到矩阵的秩,如果这表明存在解,则找到特定解x0和矩阵的零空间Null(A)。然后,您可以将所有解决方案描述为x = x0 + xn,其中xn表示Null(A)的任何元素。例如,如果矩阵是满秩,则其零空间将为空,并且线性系统将具有至多一个解。如果它的等级也等于行数,那么您有一个唯一的解决方案。如果零空间的维度为1,那么您的解决方案将是一条穿过x0的线,该线上的任何点都满足线性方程。
答案 1 :(得分:4)
好的,首先:非方形方程组可以有一个精确的解决方案
[ 1 0 0 ][x] = [1]
[ 0 0 1 ][y] [1]
[z]
显然有一个解决方案(实际上,它有一个一维解决方案系列:x = z = 1)。即使系统超定而不是欠定,它仍然可以有解决方案:
[ 1 0 ][x] = [1]
[ 0 1 ][y] [1]
[ 1 1 ] [2]
(X = Y = 1)。您可能希望首先查看最小二乘解决方案方法,如果存在,则找到确切的解决方案,如果不存在则找到“最佳”近似解决方案(在某种意义上)。
答案 2 :(得分:1)
最小二乘建议非常好。
我将补充一点,您可以尝试使用奇异值分解(SVD),它将为您提供最佳答案,并免费提供有关零空间的信息。
答案 3 :(得分:1)
取Ax = b
,其中A具有m列和n行。我们不能保证只有一个解决方案,这在很多情况下是因为我们的方程组比未知数多(n更大)。这可能是因为重复测量,实际上是我们想要的,因为我们对噪声的影响保持谨慎。
如果我们观察到找不到真正意义上的解决方案,则没有办法找到b遍历A跨越的列空间。 (因为x仅采用列的组合)。
但是,我们可以在A跨过的空间中寻找最接近b的点。我们如何找到这一点? 在飞机上行走,最接近的飞机可以到达飞机外面的某个点,直到您在下面。从几何角度来讲,这是我们的视轴垂直于平面的情况。
现在这是我们可以用数学公式表示的东西。垂直矢量使我们联想到正交投影。这就是我们要做的。最简单的情况是告诉我们执行a.T b
。但是我们可以取整个矩阵A.T b
。
对于我们的方程式,让我们将转换应用于双方:A.T Ax = A.T b
。
最后一步是采用A.T A
的逆来求解x:
x = (A.T A)^-1 * A.T b