§3 LU分解法
——Gauss消去法的变形
知识预备:
1矩阵的初等行变换、初等矩阵及其逆、乘积
2矩阵的乘法
3上三角矩阵的乘积、单位下三角矩阵的乘积 4单位下三角矩阵的逆、可逆的上三角矩阵的逆
一、Gauss消去法的矩阵解释
Gauss消去法实质上是将矩阵A分解为两个三角矩阵相乘。 我们知道,矩阵的初等行变换实质就是左乘初等矩阵。
第一轮消元:相当于对A(1)
左乘矩阵L1,即
L(1)1AA(2)
其中
1(1)a(1)a1112a(1)1nLl2111l3101,A(2)a(2)22a(2)2n,ln1001a(2)a(2)n2nn
第二轮消元:对应于
L(2)2AA(3)
一般地
LkA(k)A(k1)k1,2,,n1 ……………(1)
其中
推荐精选
a(1)li1i1a(1)11
11Lklk1klnk整个消元过程为
(k)aik,lik(k),ik1,k2,,n1akk01u11u12u1nu22u2nLn1Ln2L2L1AA(n)记Uunn从而
………(2) 1111A(Ln1Ln2L2L1)1UL1L2Ln2Ln1ULU
其中L是单位下三角矩阵,即
1l121,lijLl31l321ln1ln21i2,3,,n,,…(3) a(jjj)j1,,n1(j)aij【注】消元过程等价于A分解成LU的过程
回代过程是解上三角方程组的过程。
二、矩阵的三角分解
1、若将A分解成LּU,即A=LּU,其中L为单位下三角矩阵,U为非奇异上三角矩阵,则称之为对A的Doolittle分解。
当A的顺序主子式都不为零时,消元运算可进行,从而A存在唯一的Doolittle分解。
证明:若有两种分解,A=L1U1,A=L2U2,则必有L1=L2,U1=U2。
因为L1U1=L2U2,而且L1,L2都是单位下三角矩阵,U1,U2都是可逆上三角矩阵,所以有
11L2L1U2U1推荐精选
因此 L2L1U2U1I(单位矩阵) 即
L1=L2,U1=U2、
2、若L是非奇异下三角矩阵,U是单位上三角矩阵时,A存在唯一的三角分解,A=LU,称其为A的Crout分解(对应于用列变换实施消元)
11
三、直接分解(LU分解)算法
LU分解算法公式——按矩阵乘法
1lu11u12u1n121u22u2nAl31l321unnll1n1n2 第一步:利用A中第一行、第一列元素确定U的第一行、L的第一列
元素。由
a1j(1,0,0,,0)(u1j,u2j,uij,0,,0)Tu1jai1(li1,li2,lii1,1,,0)(u11,0,,0)Tli1u11得 u1j=a1j (j1,2,,n) li1=ai1/u11(i2,3,,n)
(j1,2,,n)
(i2,3,,n)
第r步:利用A中第r行、第r列剩下的元素确定U的第r行、L的第r列元素(r=2,3,…,n).由
arj(lr1,lr2,lrr1,1,0,,0)(u1j,u2j,ujj,0,,0)lrkukjurjTk1r1(jr,r1,,n)得U的第r行元素为
urjarjlrkukj,k1r1jr,r1,,n推荐精选
由
air(li1,li2,lii1,1,0,,0)(u1r,u2r,urr,0,,0)likukrlirurrTk1r1(ir1,r2,,n)得
lir(airlikukr)/urrk1r1(r2,3,,n1,ir1,,n)…………
(4)
直接分解的紧凑格式:
u11 u12 u13 … … u1n 1 l21 u22 u23 … … u2n 2 l31 l32 ln1 ln2 unn n
方程组的三角分解算法(LU分解)
对于方程组Ax=b,设A=LU (Doolittle分解)。
由于 Axb1、求解Ly=b:
Lyb
Uxyy1b1,yibilikyk,(i2,3,,n) …………………(5)
k1i12、求解Ux=y:
xnyn/unn,xi(yiki1unikxk)/uii,(in1,n2,,2,1)…(6)
LU分解算法
步1,输入A,b;
步2,对j=1,2,…,n 求u1j:u1ja1j,推荐精选
对i=2,3,…,n 求li1:li1ai1/u11; 步3,对r=2,3,…,n 做(3.1)-(3.2): (3.1)urjarjlk1r1r1rkukj,(jr,r1,,n),
(3.2)lir(airlk1ikukr)/urr(ir1,,n;rn);
i1步4,y1b1,对i2,3,,n,求yi:yibilk1ikyk;
n步5,xnyn,对in1,,1求xi:xi(yi步6,输出xi(i1,2,,n);结束。
ki1uikxk)/uii
例子与程序: 【例】用LU分解求解方程组 223x23477x1 2245x37解:对系数矩阵A进行LU分解
u112,u122,u133,l212,l311u2ja2jl21u1j,所以u223,u231l32(a32l31u12)/u222,u222,u33(a33l31u13l32u23)6因此
1A2112122331 6先解Lyb,则y13,y212y15,y37y12y26。
推荐精选
再解
Uxy,解出x31,x2(5x3)/32,x1(32x23x3)/22
程序:LU_factorization
%Not Select Column LU_factorization clear all
n=3;a=[2 2 3;4 7 7;-2 4 5];b=[3;1;-7]; %n=3;a=[1 4 7;2 5 8;3 6 11];b=[1;1;1]; %LU_factorazation for i=2:n
a(i,1)=a(i,1)/a(1,1); end a
for r=2:n for j=r:n s=0.;
for k=1:r-1
s=s+a(r,k)*a(k,j); end
a(r,j)=a(r,j)-s; end
for i=r+1:n s=0.;
for k=1:r-1
s=s+a(i,k)*a(k,r); end
a(i,r)=(a(i,r)-s)/a(r,r); end a end
%Extract Lower/Upper Triangular Part l=tril(a); for i=1:n l(i,i)=1; end
u=triu(a);
推荐精选
l u
%Linear Lower Triangular Equation Solution y=l\\b
%Linear Upper Triangular Equation Solution x=u\\y
四、列主元LU分解
当用LU分解法解方程组时,从第r(r=1,2,…,n)步分解计算公式可知 urjarjr1lk1r1rkukj(jr,r1,,n)
lir(airlikukr)/urrk1(ir1,,n)
当urr很小时,可能引起舍入误差的累积、扩大。因此,可采用与列主元消去法类似方法,将直接三角分解法修改为列主元三角分解法(与列主元消去法在理论上是等价的),它通过交换A的行实现三角分解PA=LU,其中P为置换阵。
设第r-1步分解计算己完成,则有
u11l21u22Aln1r1ur1,r1lr,r1ln,r1arranru1n
ur1,narnann第r步计算时为了避免用绝对值很小的数作除数,引进中间量:
Siairlikukrk1,(ir,,n)推荐精选
则有:urrSr,lirSiSr(ir1,,n)
rin(1) 选主元:确定ir,使SirmaxSi
(2) 交换两行:当irr时,交换A的第r行与第ir行元素(相当于先
交换原始矩阵A第r行与第ir行元素后,再进行分解计算得到的结果,且lir1)
(3) 进行分解计算 附:列主元LU分解
a=[2 2 3;4 7 7;-2 4 5];b=[3;1;-7]; [l,u]=lu(a) y=l\\b x=u\\y
%x=inv(u)*inv(v)*b
[l,u,p]=lu(a) y=l\\(p*b) x=u\\y
(注:可编辑下载,若有不当之处,请指正,谢谢!)
推荐精选
因篇幅问题不能全部显示,请点此查看更多更全内容