矩陣的QR分解和最小二乘法

轉載於:https://www.cnblogs.com/AndyJee/p/3846455.html

主要內容:

1、QR分解定義

2、QR分解求法

3、QR分解與最小二乘

4、Matlab實現

 

一、QR分解

R分解法是三種將矩陣分解的方式之一。這種方式,把矩陣分解成一個正交矩陣與一個上三角矩陣的積。

QR 分解經常用來解線性最小二乘法問題。QR 分解也是特定特徵值算法QR算法的基礎。

定義:

實數矩陣 A 的 QR 分解是把 A 分解爲Q、R,這裏的 Q正交矩陣(意味着 QTQ = I)而 R 是上三角矩陣。類似的,我們可以定義 A 的 QL, RQ 和 LQ 分解。

更一般的說,我們可以因數分解複數 m×n 矩陣(有着 mn)爲 m×n 酉矩陣(在 QQ = I 的意義上)和n×n 上三角矩陣的乘積。

如果 A非奇異的,則這個因數分解爲是唯一,當我們要求 R 的對角是正數的時候。

二、QR分解的求法

QR分解的實際計算有很多方法,例如Givens旋轉Householder變換,以及Gram-Schmidt正交化等等。每一種方法都有其優點和不足。

三、QR分解與最小二乘

最小二乘:

          對給定數據點{(Xi,Yi)}(i=0,1,…,m),在取定的函數類Φ 中,求p(x)∈Φ,使誤差的平方和E^2最小,E^2=∑[p(Xi)-Yi]^2。從幾何意義上講,就是尋求與給定點 {(Xi,Yi)}(i=0,1,…,m)的距離平方和爲最小的曲線y=p(x)。函數p(x)稱爲擬合函數或最小二乘解,求擬合函數p(x)的方法稱爲曲線擬合的最小二乘法。

          最小二乘的矩陣形式:Ax=b,其中A爲nxk的矩陣,x爲kx1的列向量,b爲nx1的列向量。如果n>k(方程的個數大於未知量的個數),這個方程系統稱爲Over Determined System,如果n<k(方程的個數小於未知量的個數),這個系統就是Under Determined System。

最小二乘與QR分解:

          正常來看,這個方程是沒有解的,但在數值計算領域,我們通常是計算 min ||Ax-b||,解出其中的x。比較直觀的做法是求解A'Ax=A'b,但通常比較低效。其中一種常見的解法是對A進行QR分解(A=QR),其中Q是nxk正交矩陣(Orthonormal Matrix),R是kxk上三角矩陣(Upper Triangular Matrix),然後min ||Ax-b|| = min ||QRx-b|| = min ||Rx-Q'b||,用MATLAB命令x=R\(Q'*b)可解得x。

最小二乘的Matlab實現:

① 一次函數使用polyfit(x,y,1)

②多項式函數使用 polyfit(x,y,n),n爲次數

擬合曲線

x=[0.5,1.0,1.5,2.0,2.5,3.0],

y=[1.75,2.45,3.81,4.80,7.00,8.60]。

解:MATLAB程序如下:

x=[0.5,1.0,1.5,2.0,2.5,3.0];

y=[1.75,2.45,3.81,4.80,7.00,8.60];

p=polyfit(x,y,2)

x1=0.5:0.5:3.0;

y1=polyval(p,x1);

plot(x,y,'*r',x1,y1,'-b')

計算結果爲:

p =0.5614 0.8287 1.1560

即所得多項式爲y=0.5614x^2+0.8287x+1.15560

③非線性函數使用 lsqcurvefit(fun,x0,x,y)

四、QR分解的Matlab實現

[Q,R]=qr(A) or [Q,R]=qr(A,0)    (二者的區別自行help或doc一下)
其中Q代表正規正交矩陣,
而R代表上三角形矩陣。

此外,原矩陣A不必爲正方矩陣; 如果矩陣A大小爲n*m,則矩陣Q大小爲n*m,矩陣R大小爲m*m。

五、參考文獻:

http://blog.sina.com.cn/s/blog_64367bb90100ikji.html

http://www.360doc.com/content/13/1015/09/12712639_321543226.shtml

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章