求解线性方程组(1)
最小二乘分析
在本文中将讨论线性方程组中的一种情况的求解,即考虑线性方程组
Ax=b
其中,
A∈Rm∗n,b∈Rm,m≥n,rank(A)=n
,在这种情况下,未知数的数量小于方程的数量,所以在很大可能上
b
不在
A
的值域空间中,即方程组无解,但是此时可以得到该线性方程方程的最小二乘解,即存在
x∗
使得对于所有的
x∈Rn
都有
||Ax−b||2≥||Ax∗−b||2
即称
x∗
为该线性方程的最小二乘解,当
b
在
A
的解空间中时,
x∗
自然就是该方程的解,最小二乘解可以通过以下公式直接计算出来:
x∗=(ATA)−1ATb
证明过程如下:
构造目标函数
f(x)=||Ax−b||2=(Ax−b)T(Ax−b)=12xT(2ATA)x−xT(2ATb)+bTb
显然函数
f
为二次型函数,由于
rank(A)=n
,因此该二次型为正定二次型,利用局部极小点的一阶必要条件可以得到极小点满足
∇f(x)=2ATAx−2ATb=0
该方程的唯一解为
x∗=(ATA)−1ATb
,即为最小二乘解,最小二乘法对于直线拟合等应用是很方便的算法。
递推最小二乘法
上一节介绍了最小二乘法,我们可以用其来做直线拟合,如果要在拟合的数据中增加几组数据可以通过递推最小二乘法的方式来进行,即根据上次拟合的结果做部分修正即可,即利用上次拟合得到的最小二乘解
x∗
来得到数据点增加后的最小二乘解
x∗
。
某个优化问题为了寻找合适的
x
,使得
||A0x−b(0)||2
最小,已知该问题的解为
x(0)=G−10AT0b(0)
,其中
G0=AT0A0
,如果增加了新的数据,用矩阵
A1
和向量
b1
来表示,那么这个问题即为寻找
x
使得
||[A0A1]x−[b(0)b(1)]||2
达到最小
其迭代公式为:
G1=G0+AT1A1x(1)=x(0)+G−11AT1(b(1)−A1x(0))
证明过程暂略,在一般情况下的迭代公式为:
Gk+=Gk+ATk+1Ak+1x(k+1)=x(k)+G−1k+1ATk+1(b(k+1)−Ak+1x(k))
对于线性方程组的求解,后面还将会介绍最小范数解和一般情况下的解法,以及伪逆等知识,To be continue…