§2.2.1高斯消元法的MATLAB程序function[RA,RB,n,X]=gaus(A,b)B=[Ab];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;ifzhica0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendifRA==RBifRA==ndisp('请注意:因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1);C=zeros(1,n+1);forp=1:n-1fork=p+1:nm=B(k,p)/B(p,p);B(k,p:n+1)=B(k,p:n+1)-m*B(p,p:n+1);endendb=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);forq=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);endelsedisp('请注意:因为RA=RBn,所以此方程组有无穷多解.')endend运行命令及结果a=[2.511.484.53;1.480.93-1.30;2.683.04-1.48];b=[0.05;1.03;-0.53];[RA,RB,n,X]=gaus(A,b)请注意:因为RA=RB=n,所以此方程组有唯一解.RA=3RB=3n=3X=1.4531-1.5892-0.2749§2.2.2列主元素消元法的MATLAB程序function[RA,RB,n,X]=liezhu(A,b)B=[Ab];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;ifzhica0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendifRA==RBifRA==ndisp('请注意:因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1);C=zeros(1,n+1);forp=1:n-1[Y,j]=max(abs(B(p:n,p)));C=B(p,:);B(p,:)=B(j+p-1,:);B(j+p-1,:)=C;fork=p+1:nm=B(k,p)/B(p,p);B(k,p:n+1)=B(k,p:n+1)-m*B(p,p:n+1);endendb=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);forq=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);endelsedisp('请注意:因为RA=RBn,所以此方程组有无穷多解.')endend运行命令及结果a=[2.511.484.53;1.480.93-1.30;2.683.04-1.48];b=[0.05;1.03;-0.53];[RA,RB,n,X]=liezhu(A,b)请注意:因为RA=RB=n,所以此方程组有唯一解.RA=3RB=3n=3X=1.4531-1.5892-0.2749§2.2.3LU分解法的MATLAB程序functionhl=zhjLU(A)[nn]=size(A);RA=rank(A);ifRA~=ndisp('请注意:因为A的n阶行列式hl等于零,所以A不能进行LU分解.A的秩RA如下:'),RA,hl=det(A);returnendifRA==nforp=1:nh(p)=det(A(1:p,1:p));endhl=h(1:n);fori=1:nifh(1,i)==0disp('请注意:因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:'),hl;RAreturnendendifh(1,i)~=0disp('请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:')forj=1:nU(1,j)=A(1,j);endfork=2:nfori=2:nforj=2:nL(1,1)=1;L(i,i)=1;ifijL(1,1)=1;L(2,1)=A(2,1)/U(1,1);L(i,1)=A(i,1)/U(1,1);L(i,k)=(A(i,k)-L(i,1:k-1)*U(1:k-1,k))/U(k,k);elseU(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j);endendendendhl;RA,U,Lendend运行命令及结果a=[2.511.484.53;1.480.93-1.30;2.683.04-1.48];hl=zhjLU(A)请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:RA=3U=2.51001.48004.530000.9300-3.971100-0.0837L=1.0000000.58961.000001.06771.56961.0000hl=2.51000.143913.6410U=[2.51001.48004.530000.9300-3.971100-0.0837];L=[1.0000000.58961.000001.06771.56961.0000];b=[0.05;1.03;-0.53];U1=inv(U);L1=inv(L);X=U1*L1*b,x=A\bX=-111.8440110.953125.7324x=1.4531-1.5892-0.2749例2.1:用高斯消元法求解下面的非齐次线性方程组。.142,16422,0,13432143214324321xxxxxxxxxxxxxxx解1.在MATLAB工作窗口输入程序A=[1-11-3;0-1-11;2-2-46;1-2-41];b=[1;0;-1;-1];[RA,RB,n,X]=gaus(A,b)运行后输出结果请注意:因为RA=RB=n,所以此方程组有唯一解.RA=4,RB=4,n=4,X=[0-0.50.50]’例2.2用列主元素消元法解线性方程组。.142,16422,13,0432143214321432xxxxxxxxxxxxxxx.解1.在MATLAB工作窗口输入程序A=[0-1-11;1-11-3;2-2-46;1-2-41];b=[0;1;-1;-1];[RA,RB,n,X]=liezhu(A,b)运行后输出结果请注意:因为RA=RB=n,所以此方程组有唯一解.RA=4,RB=4,n=4,X=[0-0.50.50]’例2.3将矩阵A直接进行LU分解,然后解矩阵方程bAX。3010342110100201A,5121b解1.在MATLAB工作窗口输入程序A=[1020;0101;1243;0103];hl=zhjLU(A)运行后输出结果请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:RA=4U=10200101002100022.再在工作窗口输入U=[1020;0101;0021;0002];L=[1000;0100;1210;0101];b=[1;2;-1;5];U1=inv(U);L1=inv(L);X=U1*L1*b,x=A\b运行后输出方程组的解X=8.500000000000000.50000000000000-3.750000000000001.50000000000000L=1000010012100101hl=1124