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分解的介绍基本完毕,请大家继续关注!!

猜你喜欢

转载自blog.csdn.net/dyq1995/article/details/85617920