我有一个线性方程组,它组成了一个 NxM
矩阵(即非平方矩阵),我需要解决它-或者至少尝试来解决它,以表明该系统没有解。(很可能没有解决办法)
据我所知,如果我的矩阵不是平方(过定或欠定),那么没有精确解可以找到-我认为这是正确的吗?是否有一种方法将我的矩阵转换成一个方阵,以计算行列式,应用高斯消去,克拉默规则等?
可能值得一提的是,我的未知数的系数可以为零,因此在某些情况下,可能有一个零列或零行。
矩阵是否是方阵并不是决定解空间的因素。矩阵的秩与列数的比较决定了这一点(参见秩-零定理)。一般来说,一个线性方程组可以有0个、一个或无限个解,这取决于它的秩和零关系。
为了回答你的问题,然而,你可以使用高斯消去法找到矩阵的秩,如果这表明解存在,找到一个特解x0和矩阵的零空间Null(a)。然后,您可以将所有解描述为x = x0 + xn,其中xn表示Null(A)的任何元素。例如,如果一个矩阵是满秩的,那么它的零空间将是空的,并且线性系统将至多有一个解。如果它的秩也等于行数,那么就有一个唯一解。如果零空间是一维的,那么你的解就是一条经过x0的直线,这条直线上的任何一点都满足线性方程
好的,首先:非平方方程组可以有精确解
[ 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)。您可能想从最小二乘解决方法开始,如果存在,则找到确切的解决方案,如果不存在,则找到"最佳"近似解决方案(在某种意义上)。
取Ax = b
,其中A有m列n行。我们不能保证有一个且只有一个解,这在许多情况下是因为我们有比未知数更多的方程(m大于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
最小二乘建议是一个非常好的建议。
我将补充说,您可以尝试奇异值分解(SVD),它将为您提供最佳答案,并免费提供有关零空间的信息。