天天看點

LU分解

在高等工程數學一書中, LU分解(LU Decomposition)是矩陣分解中最普通的一種,也是最經典的一種,它可以将一個矩陣分解為一個機關下三角矩陣和一個上三角矩陣的乘積,有時是它們和一個置換矩陣的乘積。LU分解主要應用在其數值分析中,用來解線性方程、求反矩陣或計算行列式等。将所給的系數矩陣A轉變成等價兩個矩陣L和U的乘積 ,其中L和U分别是機關下三角矩陣和上三角矩陣。當A的所有順序主子式都不為0時,矩陣A可以分解為A=LU(所有順序主子式不為0,矩陣不一定不可以進行LU分解)。其中L是下三角矩陣,U是上三角矩陣。

LU分解在本質上是高斯消元法的一種表達形式。實質上是将A通過初等行變換變成一個上三角矩陣,其變換矩陣就是一個機關下三角矩陣。這正是所謂的杜爾裡特算法(Doolittle algorithm):從下至上對矩陣A做初等行變換,将對角線左下方的元素變成零,然後再證明這些行變換的效果等同于左乘一系列機關下三角矩陣,這一系列機關下三角矩陣的乘積的逆就是L矩陣,它也是一個機關下三角矩陣。這類算法的複雜程度一般在(三分之二的n三次方) 左右。

Doolittle分解

對于非奇異矩陣(任n階順序主子式不全為0)的方陣A,都可以進行Doolittle分解,得到A=LU,其中L為機關下三角矩陣,U為上三角矩陣;這裡的Doolittle分解實際就是Gauss變換;

Crout分解

對于非奇異矩陣(任n階順序主子式不全為0)的方陣A,都可以進行Crout分解,得到A=LU,其中L為下三角矩陣,U為機關上三角矩陣;

列主元三角分解

對于非奇異矩陣的方陣A,采用列主元三角分解,得到PA=LU,其中P為一個置換矩陣,L,U與Doolittle分解的規定相同;

全主元三角分解

對于非奇異矩陣的方陣A,采用全主元三角分解,得到PAQ=LU,其中P,Q為置換矩陣,L,U與Doolittle分解的規定相同;

直接三角分解

對于非奇異矩陣的方陣A,利用直接三角分解推導得到的公式(Doolittle分解公式或者Crout分解公式),可以進行遞歸操作,以便于計算機程式設計實作;

下面介紹一下其在MATLAB中的程式實作:

%LU分解法求解Ax=b, 假定A矩陣可進行LU分解以及對角線元素均不為0
function [x] = Dool(A,b)
n=length(A);A(2:n,1)=A(2:n,1)/A(1,1);
for t=2:n-1                     %進行LU分解
    A(t,t:n)=A(t,t:n)-A(t,1:t-1)*A(1:t-1,t:n);
    A(t+1:n,t)=(A(t+1:n,t)-A(t+1:n,1:t-1)*A(1:t-1,t))/A(t,t);
end
A(n,n)=A(n,n)-A(n,1:n-1)*A(1:n-1,n);
L=tril(A,-1)+eye(n);U=triu(A);  %矩陣A分解出L和U
for t=2:n                       %解Lx=b
    b(t)=b(t)-L(t,1:t-1)*b(1:t-1);
end
b(n)=b(n)/U(n,n);               %解Ux=b
for t=1:n-1;
    k=n-t;b(k)=(b(k)-U(k,k+1:n)*b(k+1:n))/U(k,k);
end
x=b;                            %方程Ax=b的解即為x
           

至此,關于LU分解的介紹基本完畢,請大家繼續關注!!

繼續閱讀