资源描述:
《矩阵地lu分解(自编matlab)某实验报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1矩阵的LU分解1.1LU分解原理定理:设ACÎn´n,如果A的顺序主子式A11≠0,a11a12a21a22≠0,…,a11a12a21a22…a12…a22⋮⋮an-11an-12⋮⋯an-1n-1≠0则存在唯一的主对角线上元素全为1的下三角矩阵L与唯一的上三角矩阵U,使得A=LU.证明:对矩阵A的阶数使用数学归纳法.显然,当n=1时,A11=1∙A11就是唯一的分解式。现假定对n-1阶矩阵,定理的结论成立。对A进行分块A=An-1α1α2Tαnn其中α1,α2∈Cn-1.由于n-1阶矩阵An-1的k阶顺序主子式就是A的k阶主子式(k=1,2,…,n-2),故它们都不为零
2、.从而由归纳法假设,An-1有唯一的LU分解An-1=Ln-1Un-1其中Ln-1的主对角线上的元素都1.由于An-1=a11a12a21a22…a12…a22⋮⋮an-11an-12⋮⋯an-1n-1=Ln-1Un-1≠0所以Ln-1及Un-1是n-1阶可逆矩阵先假设已有A=LU,其中L=Ln-10γT1,U=Un-1βγTbnnβ,γ∈Cn-1是待定向量。作乘积LU=Ln-1Un-1Ln-1βγTUn-1bnn+γTβ=An-1α1α2Tαnn=A则β,γ必须满足Ln-1β=α1,γTUn-1=α2T,bnn+γTβ=αnn注意到Ln-1及Un-1都是n-1阶可逆矩阵,则
3、由上式可惟一确定β=Ln-1-1α1,γT=α2TUn-1-1,bnn=αnn-γTβ这就证明了A的LU分解的存在性和唯一性.1.2LU分解算法当n阶矩阵满足定理的条件时,可以用初等变换的方法求出L和U.因为当A=LU时,由于L可逆,故必存在可逆矩阵P使得PL=I即PA=PLU=U.也就是说,可以先对A施行行的初等变换得出上三角矩阵U,而矩阵P可以通过对单位矩阵I进行相同的行初等变换得出,即P(A,I)=(PA,PI)=(U,P)于是A=P-1U,为保持P为下三角矩阵(从而P-1也是下三角矩阵),在进行行初等变换时,不能进行行的对换,上行的倍数应加到下行的对应元.1.3LU分
4、解用于解方程组矩阵的三角分解在求解线性方程组时十分方便.如对线性方程组Ax=b,设A=LU.我们先求解方程组Ly=b.由于L是下三角矩阵,则解向量y可以通过依次求出其分量y1,y2,⋯yn而求出,在求解方程组Ux=y.解向量x可以通过该方程组依次求出分量xn,⋯,x2,x1而快速得出.于是由两个方程组Ux=y,Ly=b的求解而给出LUx=Ly=b=Ax的解.1.4程序流程图1.5MATLAB程序functionf=LU_decom(A)[m,n]=size(A)ifm~=nfprintf('Error:mandnmustbeequal!m=%d,n=%d',m,n)end
5、fori=1:n-1if(det(A(1:i,1:i))==0)fprintf('Error:detA(%d,%d)=0!',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))6、urn;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=211410-221,b=121,先对A进性LU分解,并求解方程Ax=b的解.(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分解解线性方程组-----
7、-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;-