1、Lab.Gauss列主元素消去法实验【实验目的和要求】1使学生深入理解并掌握Gauss消去法和Gauss列主元素消去法步骤;2通过对Gauss消去法和Gauss列主元素消去法的程序设计,以提高学生程序设计的能力;3对具体问题,分别用Gauss消去法和Gauss列主元素消去法求解。通过对结果的分析比较,使学生感受Gauss列主元素消去法优点。【实验内容】1根据Matlab语言特点,描述Gauss消去法和Gauss列主元素消去法步骤。2编写用不选主元的直接三角分解法解线性方程组Ax=b的M文件。要求输出Ax=b中矩阵A及向量b,A=LU分解的L与U,detA及解向量x。3编写用Gauss列主元素消
2、去法解线性方程组Ax=b的M文件。要求输出Ax=b中矩阵A及向量b、PA=LU分解的L与U、detA及解向量x,交换顺序。4给定方程组(1) (2) 先用编写的程序计算,再将(1)中的系数3.01改为3.00,0.987改为0.990;将(2)中的系数2.099999改为2.1,5.900001改为9.5,再用Gauss列主元素消去法解,并将两次计算的结果进行比较。【实验仪器与软件】 1CPU主频在1GHz以上,内存在128Mb以上的PC;2Matlab 6.0及以上版本。实验讲评:实验成绩: 评阅教师:年 月 日Gauss列主元素消去法实验报告一、算法描述 1、编写用不选主元的直接三角分解法
3、解线性方程组Ax=b的M文件程序如下function x,l,u=malu(A,b)format shortn=length(b);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:n u(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);endy=zeros(n,1);y(1)=b(1);for k=2:n y(k)=b(k)-l(k,1:k-1)*y(1:k
4、-1);endx=zeros(n,1);x(n)=y(n)/u(n,n);for k=n-1:-1:1 x(k)=(y(k)-u(k,k+1:n)*x(k+1:n)/u(k,k);end二、Gauss列主元消去法解线性方程组程序如下function Determ,x=magauss2(A,b,flag)%Gauss列主元素消去法解线性方程组Ax=b,A为系数矩阵,b为右端项%若flag=0,不显示中间消去过程,否则显示中间消去过程,默认为0%输出项Determ为矩阵A的行列式值,x为解向量if nargink t=A(k,:); A(k,:)=A(p,:);A(p,:)=t; t=b(k);b
5、(k)=b(p);b(p)=t; Determ=-Determ; end %消元计算 m=A(k+1:n,k)./A(k,k); A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-m*A(k,k+1:n); b(k+1:n)=b(k+1:n)-m*b(k); A(k+1:n,k)=zeros(n-k,1); if flag=0,Ab=A,b,end %展示消元过程 Determ=A(k,k).* Determ;endif A(n,n)=0 printf(divide by zero!); Determ=0;end%回代求解x=zeros(n,1);x(n)=b(n)/A(n,n);f
6、or i=(n-1):-1:1 x(i)=(b(i)-A(i,i+1:n)*x(i+1:n)/A(i,i); endDeterm=A(n,n).* Determ; 三、计算过程直接三角分解法(1):A=3.01 6.03 1.99;1.27 4.16 -1.23;0.987 -4.81 9.34b=1;1;1x1,l1,u1=malu(A,b);x1l1u1A = 3.0100 6.0300 1.9900 1.2700 4.1600 -1.2300 0.9870 -4.8100 9.3400b = 1 1 1x1 = 1.0e+003 * 1.5926 -0.6319 -0.4936l1 =
7、1.0000 0 0 0.4219 1.0000 0 0.3279 -4.2006 1.0000u1 = 3.0100 6.0300 1.9900 0 1.6158 -2.0696 0 0 -0.0063A=3.00 6.03 1.99;1.27 4.16 -1.23;0.990 -4.81 9.34b=1;1;1x1,l1,u1=malu(A,b);x1l1u1A = 3.0000 6.0300 1.9900 1.2700 4.1600 -1.2300 0.9900 -4.8100 9.3400b = 1 1 1x1 = 119.5273 -47.1426 -36.8403l1 = 1.00
8、00 0 0 0.4233 1.0000 0 0.3300 -4.2306 1.0000u1 = 3.0000 6.0300 1.9900 0 1.6073 -2.0724 0 0 -0.0844(2)A=10,-7,0,1;-3,2.09999,6,2;5,-1,5,-1;2,1,0,2b=8;5.900001;5;1x1,l1,u1=malu(A,b);x1l1u1A = 10.0000 -7.0000 0 1.0000 -3.0000 2.1000 6.0000 2.0000 5.0000 -1.0000 5.0000 -1.0000 2.0000 1.0000 0 2.0000b =
9、8.0000 5.9000 5.0000 1.0000x1 = 0.0000 -1.0000 1.0000 1.0000l1 = 1.0e+005 * 0.0000 0 0 0 -0.0000 0.0000 0 0 0.0000 -2.5000 0.0000 0 0.0000 -2.4000 0.0000 0.0000u1 = 1.0e+006 * 0.0000 -0.0000 0 0.0000 0 -0.0000 0.0000 0.0000 0 0 1.5000 0.5750 0 0 0 0.0000A=10,-7,0,1;-3,2.1,6,2;5,-1,5,-1;2,1,0,2b=8;5.
10、9;5;1x1,l1,u1=malu(A,b);x1l1u1A = 10.0000 -7.0000 0 1.0000 -3.0000 2.1000 6.0000 2.0000 5.0000 -1.0000 5.0000 -1.0000 2.0000 1.0000 0 2.0000b = 8.0000 5.9000 5.0000 1.0000x1 = NaN NaN NaN NaNl1 = 1.0000 0 0 0 -0.3000 1.0000 0 0 0.5000 Inf 1.0000 0 0.2000 Inf NaN 1.0000u1 = 10.0000 -7.0000 0 1.0000 0
11、 0 6.0000 2.3000 0 0 -Inf -Inf 0 0 0 NaN高斯列主元消去法:(1)A1=3.01 6.03 1.99;1.27 4.16 -1.23;0.987 -4.81 9.34b=1;1;1condA1=cond(A1)%(1)中A的条件数Determ1,x1=magauss2(A1,b,1)A2=3.00 6.03 1.99;1.27 4.16 -1.23;0.990 -4.81 9.34b=1;1;1condA2=cond(A2)Determ2,x2=magauss2(A2,b,1)运行结果如下A1 = 3.0100 6.0300 1.9900 1.2700 4
12、.1600 -1.2300 0.9870 -4.8100 9.3400b = 1 1 1condA1 = 3.0697e+004Ab = 3.0100 6.0300 1.9900 1.0000 0 1.6158 -2.0696 0.5781 0 -6.7873 8.6875 0.6721Ab = 3.0100 6.0300 1.9900 1.0000 0 -6.7873 8.6875 0.6721 0 0 -0.0015 0.7381Determ1 = -0.0305x1 = 1.0e+003 * 1.5926 -0.6319 -0.4936A2 = 3.0000 6.0300 1.9900
13、1.2700 4.1600 -1.2300 0.9900 -4.8100 9.3400b = 1 1 1condA2 = 2.3028e+003Ab = 3.0000 6.0300 1.9900 1.0000 0 1.6073 -2.0724 0.5767 0 -6.7999 8.6833 0.6700Ab = 3.0000 6.0300 1.9900 1.0000 0 -6.7999 8.6833 0.6700 0 0 -0.0200 0.7350Determ2 = -0.4070x2 = 119.5273 -47.1426 -36.8403(2)A1=10,-7,0,1;-3,2.0999
14、9,6,2;5,-1,5,-1;2,1,0,2b=8;5.900001;5;1condA1=cond(A1)%(1)中A的条件数Determ1,x1=magauss2(A1,b,1)A2=10,-7,0,1;-3,2.1,6,2;5,-1,5,-1;2,1,0,2b=8;5.9;5;1condA2=cond(A2)Determ2,x2=magauss2(A2,b,1) A1 = 10.0000 -7.0000 0 1.0000 -3.0000 2.1000 6.0000 2.0000 5.0000 -1.0000 5.0000 -1.0000 2.0000 1.0000 0 2.0000b =
15、 8.0000 5.9000 5.0000 1.0000condA1 = 5.8745Ab = 10.0000 -7.0000 0 1.0000 8.0000 0 -0.0000 6.0000 2.3000 8.3000 0 2.5000 5.0000 -1.5000 1.0000 0 2.4000 0 1.8000 -0.6000Ab = 10.0000 -7.0000 0 1.0000 8.0000 0 2.5000 5.0000 -1.5000 1.0000 0 0 6.0000 2.3000 8.3000 0 0 -4.8000 3.2400 -1.5600Ab = 10.0000 -
16、7.0000 0 1.0000 8.0000 0 2.5000 5.0000 -1.5000 1.0000 0 0 6.0000 2.3000 8.3000 0 0 0 5.0800 5.0800Determ1 = -762.0009x1 = 0.0000 -1.0000 1.0000 1.0000A2 = 10.0000 -7.0000 0 1.0000 -3.0000 2.1000 6.0000 2.0000 5.0000 -1.0000 5.0000 -1.0000 2.0000 1.0000 0 2.0000b = 8.0000 5.9000 5.0000 1.0000condA2 =
17、 5.8746Ab = 10.0000 -7.0000 0 1.0000 8.0000 0 0 6.0000 2.3000 8.3000 0 2.5000 5.0000 -1.5000 1.0000 0 2.4000 0 1.8000 -0.6000Ab = 10.0000 -7.0000 0 1.0000 8.0000 0 2.5000 5.0000 -1.5000 1.0000 0 0 6.0000 2.3000 8.3000 0 0 -4.8000 3.2400 -1.5600Ab = 10.0000 -7.0000 0 1.0000 8.0000 0 2.5000 5.0000 -1.
18、5000 1.0000 0 0 6.0000 2.3000 8.3000 0 0 0 5.0800 5.0800Determ2 = -762x2 = 0.0000 -1.0000 1.0000 1.0000四、算法分析在(1)中:直接三角解法与高斯列主元消去解法的结果是一样的,而经过改变某些值后,其结果还是一样,看不出来那个方法好在(2)中直接三角解法出现结果:三角解法结果出现一个不确定的值NaN说明该算法求解该问题存在很大的误差,二高斯列主元消去则很小,所以高斯列主元消去法的与实际结果很接近.五、总结通过实验,深入并基本掌握高斯消去法和高斯列主元消去法的步骤,经过实际问题的求解,感受到高斯列主元消去法的优点,以及算法的不同产生的误差很大,对我们的问题求解有很大的影响