matlab矩阵分解
矩陣分解是指根據(jù)一定的原理用某種算法將一個矩陣分解成若干個矩陣的乘積。常見的矩陣分解有LU分解(三角分解)、QR分解(正交變換)、Cholesky分解,以及Schur分解、Hessenberg分解、奇異分解等。
?
(1) LU分解(三角分解)
矩陣的LU分解就是將一個矩陣表示為一個交換下三角矩陣和一個上三角矩陣的乘積形式。線性代數(shù)中已經(jīng)證明,只要方陣A是非奇異(即行列式不等于0)的,LU分解總是可以進行的。
MATLAB提供的lu函數(shù)用于對矩陣進行LU分解,其調用格式為:
[L,U]=lu(X):產(chǎn)生一個上三角陣U和一個變換形式的下三角陣L(行交換),使之滿足X=LU。注意,這里的矩陣X必須是方陣。
[L,U,P]=lu(X):產(chǎn)生一個上三角陣U和一個下三角陣L以及一個置換矩陣P,使之滿足PX=LU。當然矩陣X同樣必須是方陣。
(設P?是一個?m×n?的?(0,1)?矩陣,如?m≤n且?P*P′=E,則稱?P為一個?m×n的置換矩陣。)
實現(xiàn)LU分解后,線性方程組Ax=b的解x=U\(L\b)或x=U\(L\Pb),這樣可以大大提高運算速度。
?
例7-2??用LU分解求解例7-1中的線性方程組。
命令如下:
A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
b=[13,-9,6,0]';
[L,U]=lu(A);
x=U\(L\b)
或采用LU分解的第2種格式,命令如下:
[L,U ,P]=lu(A);
x=U\(L\P*b)
?
(2) QR分解(正交變換)
對矩陣X進行QR分解,就是把X分解為一個正交矩陣Q和一個上三角矩陣R的乘積形式。QR分解只能對方陣進行。MATLAB的函數(shù)qr可用于對矩陣進行QR分解,其調用格式為:
[Q,R]=qr(X):產(chǎn)生一個一個正交矩陣Q和一個上三角矩陣R,使之滿足X=QR。
[Q,R,E]=qr(X):產(chǎn)生一個一個正交矩陣Q、一個上三角矩陣R以及一個置換矩陣E,使之滿足XE=QR。
實現(xiàn)QR分解后,線性方程組Ax=b的解x=R\(Q\b)或x=E(R\(Q\b))。
?
例7-3??用QR分解求解例7-1中的線性方程組。
命令如下:
A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
b=[13,-9,6,0]';
[Q,R]=qr(A);
x=R\(Q\b)
或采用QR分解的第2種格式,命令如下:
[Q,R,E]=qr(A);
x=E*(R\(Q\b))
?
(3) Cholesky分解
如果矩陣X是對稱正定的,則Cholesky分解將矩陣X分解成一個下三角矩陣和上三角矩陣的乘積。設上三角矩陣為R,則下三角矩陣為其轉置,即X=R'R。MATLAB函數(shù)chol(X)用于對矩陣X進行Cholesky分解,其調用格式為:
R=chol(X):產(chǎn)生一個上三角陣R,使R'R=X。若X為非對稱正定,則輸出一個出錯信息。
[R,p]=chol(X):這個命令格式將不輸出出錯信息。當X為對稱正定的,則p=0,R與上述格式得到的結果相同;否則p為一個正整數(shù)。如果X為滿秩矩陣,則R為一個階數(shù)為q=p-1的上三角陣,且滿足R'R=X(1:q,1:q)。
實現(xiàn)Cholesky分解后,線性方程組Ax=b變成R‘Rx=b,所以x=R\(R’\b)。
?
例7-4??用Cholesky分解求解例7-1中的線性方程組。
命令如下:
A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
b=[13,-9,6,0]';
R=chol(A)
??? Error using ==> chol
Matrix must be positive definite
命令執(zhí)行時,出現(xiàn)錯誤信息,說明A為非正定矩陣。
(4)?任意方陣的Schur分解
任意一個n階方陣X可以分解為X=URU',其中U為酉矩陣,R為上三角schur矩陣且其主對角線上的元素為X的特征值。
酉矩陣的相關性質:
設有A,B矩陣
(1)若A是酉矩陣,則A的逆矩陣也是酉矩陣
(2)若A,B是酉矩陣,則AB也是酉矩陣
(3)若A是酉矩陣,則|detA|=1
(4)A是酉矩陣的充分必要條件是,它的n個列向量是兩兩正交的單位向量
[U,R]=schur(X)
(5)?任意方陣的Hessenberg分解
任意一個n階方陣X可以分解為X=PHP',?其中P為酉矩陣, H的第一子對角線下的元素均為0,即H為Hessenberg矩陣。
[P,H]=hess(X)
(6)?任意方陣的特征值分解EVD
任意一個n階方陣X可以分解為XV=VD,其中D為X的特征值對角陣,V為X的特征向量矩陣。
[V,D]=eig(X)
[V,D]=eig(X,Y)計算廣義特征值矩陣D和廣義特征值向量矩陣V,使得XV=YVD。
(7)任意矩陣的奇異值分解SVD
任意一個m*n維的矩陣X可以分解為X=USV',U,V均為酉矩陣,S為m*n維的對角矩陣,其對角線元素為X的從大到小排序的非負奇異值。U,V為正交陣,S為對角陣,svd(A)恰好返回S的對角元素,而且就是A的奇異值(定義為:矩陣A’*A的特征值的算數(shù)平方根)
[U,S,V]=svd(X)
(8)?任意矩陣的幾何均值分解GMD
任意矩陣m*n維的矩陣X可以分解為X=QRP', Q,P均為酉矩陣,R為k*k維的實正線上三角矩陣,其主對角線元素均等于X的所有K個正奇異值的幾何均值,k=rank(X)。
(PS:?一個n?×?n的實對稱矩陣?M?是正定的當且僅當對于所有的非零實系數(shù)向量z,都有?zTMz > 0。其中zT?表示z的轉置。
對于復數(shù)的情況,定義則為:一個n?×?n的埃爾米特矩陣?M?是正定的當且僅當對于每個非零的復向量z,都有z*Mz > 0。其中z*?表示z的共軛轉置。由于?M是埃爾米特矩陣,經(jīng)計算可知,對于任意的復向量z,z*Mz必然是實數(shù),從而可以與0比較大小。因此這個定義是自洽的。正定方陣M的所有的特征值?λi都是正的。)
總結
以上是生活随笔為你收集整理的matlab矩阵分解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab中矩阵的左除右除
- 下一篇: Set Matrix Zeroes