1矩阵的LU分解1.1LU分解原理定理:设ACnn,如果A的顺序主子式𝐴11≠0,|1111|≠0,…,|1111…1…⋮⋮111⋮11|≠0则存在唯一的主对角线上元素全为1的下三角矩阵L与唯一的上三角矩阵U,使得A=LU.证明:对矩阵A的阶数使用数学归纳法.显然,当n=1时,𝐴11=1∙𝐴11就是唯一的分解式。现假定对n-1阶矩阵,定理的结论成立。对A进行分块A=()其中.由于n-1阶矩阵的k阶顺序主子式就是A的k阶主子式(k=1,2,…,n-2),故它们都不为零.从而由归纳法假设,有唯一的LU分解=𝑳𝑼其中𝑳的主对角线上的元素都1.由于||=|1111…1…⋮⋮111⋮11|=|𝑳𝑼|≠0所以𝑳及𝑼是n-1阶可逆矩阵先假设已有A=LU,其中L=(𝑳0𝛾𝑇1),U=(𝑼𝜷𝜸𝑇𝒃)𝜷,𝜸是待定向量。作乘积𝑳𝑼=(𝑳𝑼𝑳𝜷𝜸𝑇𝑼𝒃+𝜸𝑇𝜷)=()=A则𝜷,𝜸必须满足𝑳𝜷=,𝜸𝑇𝑼=,𝒃+𝜸𝑇𝜷=注意到𝑳及𝑼都是n-1阶可逆矩阵,则由上式可惟一确定𝜷=𝑳,𝜸𝑇=𝑼,𝒃=𝜸𝑇𝜷这就证明了A的LU分解的存在性和唯一性.1.2LU分解算法当n阶矩阵满足定理的条件时,可以用初等变换的方法求出L和U.因为当A=LU时,由于L可逆,故必存在可逆矩阵P使得𝑷𝑳=𝑰即PA=PLU=U.也就是说,可以先对A施行行的初等变换得出上三角矩阵U,而矩阵P可以通过对单位矩阵I进行相同的行初等变换得出,即P(A,I)=(PA,PI)=(U,P)于是=𝑷𝑼,为保持P为下三角矩阵(从而𝑷也是下三角矩阵),在进行行初等变换时,不能进行行的对换,上行的倍数应加到下行的对应元.1.3LU分解用于解方程组矩阵的三角分解在求解线性方程组时十分方便.如对线性方程组𝒙=𝒃设=𝑳𝑼.我们先求解方程组𝑳𝒚=𝒃.由于𝑳是下三角矩阵,则解向量𝒚可以通过依次求出其分量𝑦1𝑦𝑦而求出,在求解方程组𝑼𝒙=𝒚.解向量𝒙可以通过该方程组依次求出分量𝑥𝑥𝑥1而快速得出.于是由两个方程组𝑼𝒙=𝒚,𝑳𝒚=𝒃的求解而给出𝑳𝑼𝒙=𝑳𝒚=𝒃=𝒙的解.1.4程序流程图输入矩阵A判断A是否为n×n矩阵?计算A的n-1阶顺序主子式是否为0?输出:“无法进行LU分解”设定n阶单位矩阵L和全零矩阵U输出L,U是是否否计算U的第一行U1j=A1jj=1,2,…,n计算L的第一列U的第r行(逐行算出)L的第r列(逐列算出)1.5MATLAB程序functionf=LU_decom(A)[m,n]=size(A)ifm~=nfprintf('Error:mandnmustbeequal!m=%d,n=%d\n',m,n)endfori=1:n-1if(det(A(1:i,1:i))==0)fprintf('Error:detA(%d,%d)=0!\n',i,i)flag='failure'return;elseflag='ok';endendL=eye(n);U=zeros(n);fori=1:nU(1,i)=A(1,i);endforr=2:nL(r,1)=A(r,1)/U(1,1);endfori=2:nforj=i:nz=0;forr=1:i-1z=z+L(i,r)*U(r,j);endU(i,j)=A(i,j)-z;endifabs(U(i,i))epsflag='failure'return;endfork=i+1:nm=0;forq=1:i-1m=m+L(k,q)*U(q,i);endL(k,i)=(A(k,i)-m)/U(i,i);endendLU1.6实际数据计算已知矩阵A=(211410221),𝒃=(121),先对A进性LU分解,并求解方程A𝒙=𝒃的解.(1)A的LU分解在MATLAB命令行中输入A=[211;410;-221];并调用以上函数可得如下结果A=[211;410;-221];LU_decom(A)m=3n=3L=100210-1-31U=2110-1-200-4(2)解方程组,程序及结果如下%-----用LU分解解线性方程组------y=zeros(n,1);y(1)=b(1);fori=2:ny(i)=b(i)-sum(L(i,1:i-1)'.*y(1:i-1));endyx(n)=y(n)/U(n,n);fori=n-1:-1:1x(i)=(y(i)-sum(U(i,i+1:n)'.*x(i+1)))/U(i,i);endx=x'运行结果如下:y=102x=-0.50001.0000-0.50001.7数据分析调用MATLAB固有的LU分解函数,以及解方程组相关函数对以上数据进行计算,运行结果如下:A=[211;410;-221];b=[121]';[L,U]=lu(A)L=0.50000.20001.00001.000000-0.50001.00000U=4.00001.0000002.50001.0000000.8000X=inv(A)*bX=0.25001.0000-0.5000经比对结果相同,可见以上程序可行。