求解線性方程組(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…