1、解线性方程组 第三章线性方程组数值解法3. 1 直接法一、 Gauss 消去法设 有消 元: 用 Matlab实现顺序 Gauss消去法在 Matlab程序编辑器中输入:function x=nagauss(a,b,flag) %解线形方程组 ax=b,a为系数矩阵, b为右端列向量, flag若为 0,则显示中间过程,否则不显示,默认为 0, x为解向量if nargink,t=a(k,:); a(k,:)=a(p,:); a(p,:)=t; end% 消元 a(k+1):n,(k+1):(n+1)=a(k+1):n,(k+1):(n+1)-a(k+1):n,k)/a(k,k)*a(k,(k
2、+1):(n+1);a(k+1):n,k)=zeros(n-k,1);if flag=0,a,endend %回代x=zeros(n,1);x(n)=a(n,n+1)/a(n,n);for k=n-1:-1:1x(k,:)=(a(k,n+1)-a(k,(k+1):n)*x(k+1):n)/a(k,k);end程序运行结果 : 记 ,则(三角因子分解)Gauss消元,初等行变换,化原方程组为上三角型。三矩阵三角分解法定义 3.1 叫 的三角(因子)分解,其中 是是上三角。下三角 , 为单位下三角阵(对角元全为 1),为上三角阵,则称 为 Doolittle分解 ;若 是下三角, 是单位上三角,则
3、称定义 3.2 若为 Crout分解。定义 3.2 若为什么要讨论三角分解?若在消元法进行前能实现三角分解 , 则 从而容易回代求解。1直接三角分解法 (Doolittle分解为例)由矩阵乘法.(k)例 3 1用 Matlab实现 LU分解在 Matlab程序编辑器中输入:function L,U=nalu(a) % a为可逆方阵; L返回单位下三角矩阵; U返回上三角矩阵n=length(a);U=zeros(n,n);L=eye(n,n);U(1,:)=a(1,:);L(2:n,1)=a(2:n,1)/U(1,1);for k=2:nU(k,k:n)=a(k,k:n)-L(k,1:k-1)*U(1:k-1,k:n);L(k+1:n,k)=(a(k+1:n,k)-L(k+1:n,1:k-1)*U(1:k-1,k)/U(k,k);end程序运行结果 :2平方根法定理 3.1 设 A对称正定,则有非奇异下三角阵 L, 使分解方法:设