Gauss列主元素消去法实验参考.docx
《Gauss列主元素消去法实验参考.docx》由会员分享,可在线阅读,更多相关《Gauss列主元素消去法实验参考.docx(18页珍藏版)》请在冰豆网上搜索。
![Gauss列主元素消去法实验参考.docx](https://file1.bdocx.com/fileroot1/2023-4/28/f4059b1a-9df0-45a7-9723-bf1015c84ef5/f4059b1a-9df0-45a7-9723-bf1015c84ef51.gif)
Gauss列主元素消去法实验参考
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列主元素消去法解线性方程组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列主元素消去法解,并将两次计算的结果进行比较。
【实验仪器与软件】
1.CPU主频在1GHz以上,内存在128Mb以上的PC;
2.Matlab6.0及以上版本。
实验讲评:
实验成绩:
评阅教师:
年月日
Gauss列主元素消去法实验报告
一、算法描述
1、编写用不选主元的直接三角分解法解线性方程组Ax=b的M文件程序如下
function[x,l,u]=malu(A,b)
formatshort
n=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);
fork=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);
end
y=zeros(n,1);
y
(1)=b
(1);
fork=2:
n
y(k)=b(k)-l(k,1:
k-1)*y(1:
k-1);
end
x=zeros(n,1);
x(n)=y(n)/u(n,n);
fork=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为解向量
ifnargin<3,flag=0;end
Determ=1;
n=length(b);
fork=1:
(n-1)
[ap,p]=max(abs(A(k:
n,k)));
p=p+k-1;
ifap==0
printf('dividebyzero!
');
Determ=0;
end
%换行
ifp>k
t=A(k,:
);A(k,:
)=A(p,:
);A(p,:
)=t;
t=b(k);b(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);
ifflag~=0,Ab=[A,b],end%展示消元过程
Determ=A(k,k).*Determ;
end
ifA(n,n)==0
printf('dividebyzero!
');
Determ=0;
end
%回代求解
x=zeros(n,1);
x(n)=b(n)/A(n,n);
fori=(n-1):
-1:
1
x(i)=(b(i)-A(i,i+1:
n)*x(i+1:
n))/A(i,i);
end
Determ=A(n,n).*Determ;
三、计算过程
直接三角分解法
(1):
A=[3.016.031.99;1.274.16-1.23;0.987-4.819.34]
b=[1;1;1]
[x1,l1,u1]=malu(A,b);
x1
l1
u1
A=
3.01006.03001.9900
1.27004.1600-1.2300
0.9870-4.81009.3400
b=
1
1
1
x1=
1.0e+003*
1.5926
-0.6319
-0.4936
l1=
1.000000
0.42191.00000
0.3279-4.20061.0000
u1=
3.01006.03001.9900
01.6158-2.0696
00-0.0063
A=[3.006.031.99;1.274.16-1.23;0.990-4.819.34]
b=[1;1;1]
[x1,l1,u1]=malu(A,b);
x1
l1
u1
A=
3.00006.03001.9900
1.27004.1600-1.2300
0.9900-4.81009.3400
b=
1
1
1
x1=
119.5273
-47.1426
-36.8403
l1=
1.000000
0.42331.00000
0.3300-4.23061.0000
u1=
3.00006.03001.9900
01.6073-2.0724
00-0.0844
(2)
A=[10,-7,0,1;-3,2.09999,6,2;5,-1,5,-1;2,1,0,2]
b=[8;5.900001;5;1]
[x1,l1,u1]=malu(A,b);
x1
l1
u1
A=
10.0000-7.000001.0000
-3.00002.10006.00002.0000
5.0000-1.00005.0000-1.0000
2.00001.000002.0000
b=
8.0000
5.9000
5.0000
1.0000
x1=
0.0000
-1.0000
1.0000
1.0000
l1=
1.0e+005*
0.0000000
-0.00000.000000
0.0000-2.50000.00000
0.0000-2.40000.00000.0000
u1=
1.0e+006*
0.0000-0.000000.0000
0-0.00000.00000.0000
001.50000.5750
0000.0000
A=[10,-7,0,1;-3,2.1,6,2;5,-1,5,-1;2,1,0,2]
b=[8;5.9;5;1]
[x1,l1,u1]=malu(A,b);
x1
l1
u1
A=
10.0000-7.000001.0000
-3.00002.10006.00002.0000
5.0000-1.00005.0000-1.0000
2.00001.000002.0000
b=
8.0000
5.9000
5.0000
1.0000
x1=
NaN
NaN
NaN
NaN
l1=
1.0000000
-0.30001.000000
0.5000Inf1.00000
0.2000InfNaN1.0000
u1=
10.0000-7.000001.0000
006.00002.3000
00-Inf-Inf
000NaN
高斯列主元消去法:
(1)
A1=[3.016.031.99;1.274.16-1.23;0.987-4.819.34]
b=[1;1;1]
condA1=cond(A1)%
(1)中A的条件数
[Determ1,x1]=magauss2(A1,b,1)
A2=[3.006.031.99;1.274.16-1.23;0.990-4.819.34]
b=[1;1;1]
condA2=cond(A2)
[Determ2,x2]=magauss2(A2,b,1)
运行结果如下
A1=
3.01006.03001.9900
1.27004.1600-1.2300
0.9870-4.81009.3400
b=
1
1
1
condA1=
3.0697e+004
Ab=
3.01006.03001.99001.0000
01.6158-2.06960.5781
0-6.78738.68750.6721
Ab=
3.01006.03001.99001.0000
0-6.78738.68750.6721
00-0.00150.7381
Determ1=
-0.0305
x1=
1.0e+003*
1.5926
-0.6319
-0.4936
A2=
3.00006.03001.9900
1.27004.1600-1.2300
0.9900-4.81009.3400
b=
1
1
1
condA2=
2.3028e+003
Ab=
3.00006.03001.99001.0000
01.6073-2.07240.5767
0-6.79998.68330.6700
Ab=
3.00006.03001.99001.0000
0-6.79998.68330.6700
00-0.02000.7350
Determ2=
-0.4070
x2=
119.5273
-47.1426
-36.8403
(2)
A1=[10,-7,0,1;-3,2.09999,6,2;5,-1,5,-1;2,1,0,2]
b=[8;5.900001;5;1]
condA1=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,2]
b=[8;5.9;5;1]
condA2=cond(A2)
[Determ2,x2]=magauss2(A2,b,1)
A1=
10.0000-7.000001.0000
-3.00002.10006.00002.0000
5.0000-1.00005.0000-1.0000
2.00001.000002.0000
b=
8.0000
5.9000
5.0000
1.0000
condA1=
5.8745
Ab=
10.0000-7.000001.00008.0000
0-0.00006.00002.30008.3000
02.50005.0000-1.50001.0000
02.400001.8000-0.6000
Ab=
10.0000-7.000001.00008.0000
02.50005.0000-1.50001.0000
006.00002.30008.3000
00-4.80003.2400-1.5600
Ab=
10.0000-7.000001.00008.0000
02.50005.0000-1.50001.0000
006.00002.30008.3000
0005.08005.0800
Determ1=
-762.0009
x1=
0.0000
-1.0000
1.0000
1.0000
A2=
10.0000-7.000001.0000
-3.00002.10006.00002.0000
5.0000-1.00005.0000-1.0000
2.00001.000002.0000
b=
8.0000
5.9000
5.0000
1.0000
condA2=
5.8746
Ab=
10.0000-7.000001.00008.0000
006.00002.30008.3000
02.50005.0000-1.50001.0000
02.400001.8000-0.6000
Ab=
10.0000-7.000001.00008.0000
02.50005.0000-1.50001.0000
006.00002.30008.3000
00-4.80003.2400-1.5600
Ab=
10.0000-7.000001.00008.0000
02.50005.0000-1.50001.0000
006.00002.30008.3000
0005.08005.0800
Determ2=
-762
x2=
0.0000
-1.0000
1.0000
1.0000
四、算法分析
在
(1)中:
直接三角解法
与高斯列主元消去解法的结果是一样的,而经过改变某些值后,其结果还是一样,看不出来那个方法好在
(2)中直接三角解法出现
结果:
三角解法结果出现一个不确定的值NaN说明该算法求解该问题存在很大的误差,二高斯列主元消去则很小,所以高斯列主元消去法的与实际结果很接近.
五、总结
通过实验,深入并基本掌握高斯消去法和高斯列主元消去法的步骤,经过实际问题的求解,感受到高斯列主元消去法的优点,以及算法的不同产生的误差很大,对我们的问题求解有很大的影响