高斯变换与矩阵三角分解.ppt
,第五节 高斯变换阵与矩阵的三角分解一、Gauss变换阵,定义Gauss变换阵为,数值分析,数值分析,数值分析,数值分析,Gauss变换阵的性质:,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,Gauss变换阵的作用:,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,顺序高斯消元的基本思想:将矩阵A的下三角部分消为零,即,二、矩阵的三角分解1.顺序高斯消元与LU分解的等价性,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,进行到第k步消元时,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,其中,数值分析,数值分析,数值分析,数值分析,消元过程全部完成后,原来的二维数组中存放的元素实际上是一个新的矩阵,记为,数值分析,数值分析,function A=lud(A)%功能:对方阵A作三角分解A=LU,其中,%L为单位下三角阵,U为上三角阵,%输入:方阵A。%输出:紧凑存储A=LU.%注意:当A的主元=0时退出Matlab.,LU分解的MATLAB程序,n,n=size(A);%确定A的维数,for k=1:n-1 for i=k+1:n if A(k,k)=0 quit;end A(i,k)=A(i,k)/A(k,k);A(i,k+1:n)=A(i,k+1:n)-A(i,k)*A(k,k+1:n);endend,数值分析,数值分析,2.矩阵三角分解的基本定理,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,2.矩阵三角分解的基本定理,数值分析,数值分析,主要结论,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,3.Cholesky分解(平方根分解),(1),(用直接三角分解法),数值分析,数值分析,(k),若已求出了L的前k-1列元素,则为求第k列元素,先用L的第k行乘 LT的第k列,数值分析,数值分析,再用L的第k行乘 LT的第j列(j=k+1,k+2,n)有,数值分析,数值分析,Cholesky分解公式,数值分析,数值分析,数值分析,数值分析,4.列主元LU分解,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,MATLAB实现 l,u,p=lu(A),数值分析,数值分析,Lupd.m%功能:对方阵A作列主元三角分解PA=LU,其中,%L为单位下三角阵,U为上三角阵,排列阵P%用向量p表示。%输入:方阵A。%输出:紧凑存储LU=LU,以及p。%注意:当A奇异时退出Matlab.function LU,p=lupd(A)%初始化n=length(A);p=1:n;LU=A;,%分解过程for k=1:n%搜索列主元ik s,i=max(abs(LU(k:n,k);ik=i+k-1;,数值分析,数值分析,%判断矩阵的奇异性if s=0 quit;end%行交换 if ik=k m=p(k);p(k)=p(ik);p(ik)=m;lk=LU(k,:);LU(k,:)=LU(ik,:);LU(ik,:)=lk;end,%用消元法计算LU=LU if k=n break;end LU(k+1:n,k)=LU(k+1:n,k)/LU(k,k);LU(k+1:n,k+1:n)=LU(k+1:n,k+1:n)-LU(k+1:n,k)*LU(k,k+1:n);end,数值分析,数值分析,5.全主元LU分解,数值分析,数值分析,Lupqd.m%功能:对方阵A作全主元三角分解PAQT=LU,其中,%L为单位下三角阵,U为上三角阵,排列阵P%和Q分别用向量p,q表示。%输入:方阵A。%输出:紧凑存储LU=LU,以及p和q。%注意:当A奇异时退出Matlab.function LU,p,q=lupqd(A)%初始化n=length(A);p=1:n;q=p;LU=A;,数值分析,数值分析,%分解过程for k=1:n%搜索全主元(ik,jk)xk,I=max(abs(LU(k:n,k:n);%列最大值及所在行s,j=max(xk);ik=I(j)+k-1;jk=j+k-1;%判断矩阵的奇异性if s=0 quit;end%行交换和列交换 if ik=k m=p(k);p(k)=p(ik);p(ik)=m;lk=LU(k,:);LU(k,:)=LU(ik,:);LU(ik,:)=lk;end,数值分析,数值分析,if jk=k m=q(k);q(k)=q(jk);q(jk)=m;ck=LU(:,k);LU(:,k)=LU(:,jk);LU(:,jk)=ck;end%用消元法计算LU=LU if k=n break;end LU(k+1:n,k)=LU(k+1:n,k)/LU(k,k);LU(k+1:n,k+1:n)=LU(k+1:n,k+1:n)-LU(k+1:n,k)*LU(k,k+1:n);end,数值分析,数值分析,Matlab调用格式:l,u,p=lu(a)r=chol(a),数值分析,数值分析,二版习题,P114-11,三版习题 P76-26,27 P137-6,数值分析,数值分析,