数学与统计学院信息与计算科学系
《数值分析》上机实验报告
实验题目: 1.
2.
姓 名: 陈忆 程鑫 邓柳
学 号: 11201010103 11201010104
11201010106
专 业: 信息与计算科学
班 级: 112010101
上课老师: 刘瑞华
成绩评定
上机实验报告
一、
第二篇:数值分析上机实验报告八
实验报告八
题目: 线性方程组的迭代法
摘要:
对于工程技术中产生的大型稀疏矩阵方程组,利用迭代法解是最合适的。
前言:(目的和意义)
掌握Jacobi迭代法、Gauss-Serdel迭代法、SOR方法的基本原理和应用。
数学原理:
Jacobi迭代法,对于线性方程组Ax=b,如果A为非奇异方阵,即
则可将A分解为A=D-L-U,其中D为对角阵。其元素为A的对角元素,L与U为A的下三角阵和上三角阵:
于是Ax=b转化为:
与之对应的迭代公式为:
Gauss-Serdel迭代法,在Jacobi迭代过程中,计算?已经得到,不必再用?,即原来的迭代公式可以改进为,于是得到Gauss-Serdel迭代公式:
SOR方法,全称为逐次超松弛迭代法,它是Gauss-Serdel迭代法的一种加速方法,是解大型稀疏矩阵方程组的有效方法之一,逐次超松弛迭代公式为:
其中
程序设计:
本实验采用Matlab编写主程序如下
Jacobi迭代法:
A=[5,2,1;-1,4,2;2,-3,10];
MAXTIME=50;
eps=1e-4;
[n,m]=size(A);
x=zeros(n,1);
y=zeros(n,1);
k=0;
disp('迭代过程X的值情况如下:')
disp('X=');
while 1
disp(x');
for i=1:1:n
s=0.0;
for j=1:1:n
if j~=i
s=s+A(i,j)*x(j);
end
y(i)=(A(i,n+1)-s)/A(i,i);
end
end
for i=1:1:n
maxeps=max(0,abs(x(i)-y(i)));
end
if maxeps<=eps
for i=1:1:n
x(i)=y(i);
end
return;
end
for i=1:1:n
x(i)=y(i);
y(i)=0.0;
end
k=k+1;
if k>MAXTIME
error('超过最大迭代次数,退出');
return;
end
end
Gauss-Serdel迭代法:
A=[5,2,1;-1,4,2;2,-3,10];
[n,m]=size(A);
Maxtime=50;
Eps=10E-4;
x=zeros(1,n);
disp('x=');
for k=1:Maxtime
disp(x);
for i=1:n
s=0.0;
for j=1:n
if i~=j
s=s+A(i,j)*x(j);
end
end
x(i)=(A(i,n+1)-s)/A(i,i);
end
if sum((x-floor(x)).^2)<Eps
break;
end;
end;
X=x;
disp('迭代结果:');
X
SOR方法:
A=[5,2,1;-1,4,2;2,-3,10];
b=[-12,20,3]';
w=1.45;
Maxtime=100;
Eps=1E-5;
format long;
n=length(A);
k=0;
x=ones(n,1);
y=x;
disp('迭代过程:');
disp('x=');
while 1
y=x;
disp(x');
for i=1:n
s=b(i);
for j=1:n
if j~=i
s=s-A(i,j)*x(j);
end
end
if abs(A(i,i))<1E-10 | k>=Maxtime
error('已达最大迭代次数或矩阵系数近似为0,无法进行迭代');
return;
end
s=s/A(i,i);
x(i)=(1-w)*x(i)+w*s;
end
if norm(y-x,inf)<Eps
break;
end
k=k+1;
end
disp('最后迭代结果:');
X=x'
format short;
结果分析和讨论:
1. 设方程组
(1) 考察用Jacobi迭代法,Gauss-Seidel迭代法解此方程组的收敛性;
(2) 用Jacobi迭代法,Gauss-Seidel迭代法解此方程组,要求当时迭代终止。
结果是:
两种方法都收敛。
用Jacobi迭代法要迭代18次,
Gauss-Seidel迭代法需8次,
2. 用SOR方法解方程组,要求当时迭代终止。
迭代8次时达到精度要求
结论:
和Jacobi迭代法相比Gauss-Seidel迭代法用新分量代替旧分量精度会高一些。而SOR计算公式简单,程序设计容易,占用计算机内存较少,但需要选择好的加速因子,它是Gauss-Serdel迭代法的一种加速方法,是解大型稀疏矩阵方程组的有效方法之一。