利用矩阵LU分解解线性方程组【问题】将矩阵做三角分解可以简化线性方程组的求解问题,LU分解是一种比较基础的矩阵三角分解方法,对其原理和算法做分析。【解】对Axb求解,可以先对矩阵A做LU分解定理设A为n阶矩阵,如果A的顺序主子式0(1,2,,)kDkn,则A可以唯一地分解为一个单位下三角矩阵L和一个上三角矩阵U的乘积,即ALU根据此定理,利用矩阵乘法,直接导出矩阵LU分解的计算公式,设111212122212nnnnnnaaaaaaAaaa,2112111nnlLll,11121222nnnnuuuuuUu由L是单位下三角矩阵和U是上三角矩阵知道0(),1(1,2,,n),u0()ikiikjlkilikj根据ALU,由矩阵乘法可得min{i,j}11,nijikkjikkjkkalulu,1,2,,ijn先计算矩阵U的元()ijuij,有111,1iiijikkjikkjijiikkaluluul故11,iijijikkjkualu1,2,,n;i,1,,.jiin特别地,当i=1时,11(1,2,,n)jjuaj再计算矩阵L的元()ijlij,有111,jjijikkjikkjijjjkkalululu由此可得11,jijikkjkijjjalulu1,2,,;1,2,,.jnijjn特别地,当j=1时,1111(2,3,,)iialinu综上所述,ALU的分解公式如下:1111111111(1,2,,n)(2,3,,),1,2,,n;,1,,.,1,2,,;1,2 ,,.jjiiiijijikkjkjijikkjkijjjuajalinuualuijiinaluljnijjnu这样,可以算得矩阵L和U,则有,.AxbLybUxy分别求解可以解得方程组的解x。【结果】设9189271845045,90126927459135A12168b对A做LU分解得到23100091892721000918912100081540009311ALU,10151y根据Lyb解得方程组的1,0,15,1Ty,再有Uxy解得(1111,,,)9999Tx【附】MATLAB程序实现LU分解%LU分解functionf1=LUresolve(a);[n,n]=size(a);%行数l=[];u=[];forj=1:1:nu(1,j)=a(1,j);endfori=2:1:nl(i,1)=a(i,1)/u(1,1);endfori=2:1:(n-1)sum1=0;fork=1:1:(i-1)sum1=l(i,k)*u(k,i)+sum1;endu(i,i)=a(i,i)-sum1;sum2=0;sum3=0;forj=(i+1):1:nfork=1:1:(i-1)sum2=sum2+l(i,k)*u(k,j);sum3=sum3+l(j,k)*u(k,i);endu(i,j)=a(i,j)-sum2;l(j,i)=(a(j,i)-sum3)/u(i,i);endendfori=1:1:(n-1)l(i,i)=1;l(i,n)=0;endl(n,n)=1;sum4=0;fork=1:1:(n-1)sum4=sum4+l(n,k)*u(k,n);endu(n,n)=a(n,n)-sum4;lu