1、数值分析实验指导
实验六 解线性方程组的迭代法
一、实验目标
1、 理解求解线性方程组的两种迭代法的求解思想:Jacobi迭代法和Gauss-Seidel迭代法。
2、 掌握迭代法收敛的条件,并会判断Jacobi迭代法和Gauss-Seidel迭代法的收敛性。
3、 学会编程实现Jacobi迭代法和Gauss-Seidel迭代法,掌握终止迭代的技术(< 或k >(予给的迭代次数))与发散性判断的方法。
4、 体会初始解 X,松弛因子的选取,对计算结果的影响。
二、实验问题
解线性方程组
(1) ;
(2) ;
(3)
,
精确解:X= ( 1, -1, 0,
2、 1, 2, 0, 3, 1, -1, 2 ) .
(4) 对称正定阵系数阵
精确解:X = ( 1, -1, 0, 2, 1, -1, 0, 2 ).
(5) 三对角形系数矩阵
精确解:X= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 ).
三、实验要求
1、试用Jacobi 迭代法,Gauss-Seidol迭代法求解线性方程组(1),(2),讨论收敛性。
2、编写Jacobi 迭代法,Gauss-Seidol迭代法解线性方程组的一般程序,对不同精度要
3、求,如,求解线性方程组(1),(2),由迭代次数体会该迭代法的收敛快慢。
3、使用SOR方法求解方程组(3),(4),(5),选取松弛因子=0.8,0.9,1,1.1,1.2等,观察松弛因子的不同取法对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者。
附录一:
《数值分析》实验报告(模板)
【实验课题】 用Jacobi 迭代法,Gauss-Seidol迭代法求解线性方程组,讨论收敛性
【实验目标】
1、 理解求解线性方程组的Jacobi迭代法,Gauss-
4、Seidel迭代法的求解思想。
2、 了解迭代法收敛的条件,会判断Jacobi迭代法和Gauss-Seidel迭代法的收敛性。
3、 学会编程实现Jacobi迭代法和Gauss-Seidel迭代法,掌握终止迭代的技术( < 或k >(予给的迭代次数))与发散性判断的方法。
【理论概述与算法描述】
1. 雅可比迭代法
对于矩阵A,A=D-L-U,令M=D,则A=D-N,则雅克比迭代法
=B+f,其中B-I-1/DA=D^-1(L+U)=J,,由雅可比迭代法得分量计算公式。计=,所以
,因此雅可比迭代法得计算公式
i=1,2,3.......,k=0
5、1,2.....
2. 高斯塞德尔迭代法
令M=D-L,A=M-N,得B=(D-L)^-1U=G,G为高斯塞德尔迭代法的迭代矩阵,得到,所以高斯塞德尔计算公式为
,
=(),i=1,2,3.......,k=0,1,2.....
【实验问题】
用Jacobi 迭代法,Gauss-Seidol迭代法求解线性方程组,判断收敛性
【实验过程与结果】
1. 理解两种迭代法的计算思想,掌握方法推到计算公式
2. 用matlab编程实现
3. 对实验结果进行分析,比较两种方法,并判断收敛性
【结果分析、讨论与结论】
两种方法得到的结果一样,
6、
雅可比
k =
17
x =
-0.1348
-1.0829
3.9203
2. 高斯塞德尔
k =
17
x =
-0.1348
-1.0829
3.9203
【附程序】
1. 雅可比程序算法
function x=jacobi(A,b,x0,tol)
n=length(b);
x=zeros(n,1);
x=x0+1;
k=0;
while norm(x-x0)>tol
if k>20
disp('jacob
7、i fails')
break;
end
k=k+1;
for i=1:n
x0=x;
x(i)=(b(i)-A(i,1:n)*x0+A(i,i)*x(i))/A(i,i);
end
end
k
2. 高斯塞德尔程序算法
function x=gaussseided(A,b,x0,tol)
n=length(b);
x=zeros(n,1);
x=x0+1;
k=0;
while norm(x-x0)>tol
if k>20
8、
disp('gaussseided fails:')
break;
end
k=k+1;
for i=1:n
x0=x;
x(i)=(b(i)-A(i,1:(i-1))*x(1:(i-1))-A(i,(i+1):n)*x((i+1):n))/A(i,i);
end
end
k
3. 主函数
A=[1 0.4 0.4;0.4 1 0.8;0.4 0.8 1];
b=[1;2;3];
tol=1e-3;
x0=[3;1;6];
%x=jacobi(A,b,x0,tol)
x=gaussseided(A,b,x0,tol)
第7页