1、,第五节 高斯变换阵与矩阵的三角分解 一、Gauss变换阵,定义Gauss变换阵为,数值分析,数值分析,数值分析,数值分析,Gauss变换阵的性质:,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,Gauss变换阵的作用:,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,顺序高斯消元的基本思想:将矩阵A的下三角部分消为零,即,二、矩阵的三角分解 1. 顺序高斯消元与LU分解的等价性,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,进行到第k
2、步消元时,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,其中,数值分析,数值分析,数值分析,数值分析,消元过程全部完成后,原来的二维数组中存放的元素实际上是一个新的矩阵,记为,数值分析,数值分析,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-1for i=k+1:n if A(k,k) =0 quit; endA(i,k) =A(
3、i,k)/ A(k,k);A(i,k+1:n)= A(i,k+1:n)- A(i,k) *A(k,k+1:n);end end,数值分析,数值分析,2. 矩阵三角分解的基本定理,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,2. 矩阵三角分解的基本定理,数值分析,数值分析,主要结论,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,数值分析,3. Cholesky分解(平方根分解),(1),(用直接三角分解法),数值分析,数值分析,(k),若已求出了L的前k-1列元素,则为求第k列元素, 先用L的第k行乘 LT的第k列,数值分析,数值分析,
4、再用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.
5、 function LU,p=lupd(A) %初始化 n=length(A); p=1:n; LU=A;,%分解过程 for k=1:n%搜索列主元iks,i=max(abs(LU(k:n,k); ik=i+k-1;,数值分析,数值分析,%判断矩阵的奇异性 if s=0 quit; end %行交换if ik=km=p(k); p(k)=p(ik); p(ik)=m;lk=LU(k,:); LU(k,:)=LU(ik,:); LU(ik,:)=lk;end,%用消元法计算LU=LUif k=n break; endLU(k+1:n,k)=LU(k+1:n,k)/LU(k,k);LU(k+1:
6、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%搜索全主
7、元(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=km=p(k); p(k)=p(ik); p(ik)=m;lk=LU(k,:); LU(k,:)=LU(ik,:); LU(ik,:)=lk;end,数值分析,数值分析,if jk=km=q(k); q(k)=q(jk); q(jk)=m;ck=LU(:,k); LU(:,k)=LU(:,jk); LU(:,jk)=ck; end %用消元法计算LU=LUif k=n break; endLU(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 , 27P137-6,数值分析,数值分析,