数值分析实验6 (1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Lab06.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 ,det A 及解向量x 。
3.编写用Gauss 列主元素消去法解线性方程组Ax=b 的M 文件。要求输出Ax=b 中矩阵A 及向量b 、PA=LU 分解的L 与U 、det A 及解向量x ,交换顺序。 4.给定方程组
(1) ⎥⎥⎥⎦⎤
⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--11134.981.4987.023.116.427.199.103.601.3321x x x (2) ⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢
⎢⎣⎡----1
5
900001.58
20
1
2
151********.23
107104321x x x x 先用编写的程序计算,再将(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.Matlab 6.0及以上版本。 实验讲评:
实验成绩:
评阅教师:
2011年6 月 30日
Lab06.Gauss列主元素消去法实验
一算法描述
1编写用不选主元的直接三角分解法解线性方程组Ax=b的M文件程序如下
function [x,l,u]=malu(A,b)
format short
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);
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);
end
y=zeros(n,1);
y(1)=b(1);
for k=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);
for k=n-1:-1:1
x(k)=(y(k)-u(k,k+1:n)*x(k+1:n))/u(k,k);
end
2、Gauss列主元消去法解线性方程组程序如下:
function [Determ,x]=magauss2(A,b,flag)
%Gauss列主元素消去法解线性方程组Ax=b,A为系数矩阵,b为右端项%若flag=0,不显示中间消去过程,否则显示中间消去过程,默认为0 %输出项Determ为矩阵A的行列式值,x为解向量
if nargin<3,flag=0;end
Determ=1;
n=length(b);
for k=1:(n-1)
[ap,p]=max(abs(A(k:n,k)));
p=p+k-1;
if ap==0
printf('divide by zero!');
Determ=0;
end
%换行
if p>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);
if flag~=0,Ab=[A,b],end %展示消元过程
Determ=A(k,k).* Determ;
end
if A(n,n)==0
printf('divide by zero!');
Determ=0;
end
%回代求解
x=zeros(n,1);
x(n)=b(n)/A(n,n);
for i=(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.01 6.03 1.99;1.27 4.16 -1.23;0.987 -4.81 9.34]
b=[1;1;1]
[x1,l1,u1]=malu(A,b);
x1
l1
u1
A =
3.0100 6.0300 1.9900
1.2700 4.1600 -1.2300
0.9870 -4.8100 9.3400
b =
1
1
1
x1 =
1.0e+003 *
1.5926
-0.6319
-0.4936
l1 =
1.0000 0 0
0.4219 1.0000 0
0.3279 -4.2006 1.0000
u1 =
3.0100 6.0300 1.9900
0 1.6158 -2.0696
0 0 -0.0063