1、实验六 解线性方程组的迭代法一、实验目标1、 理解求解线性方程组的两种迭代法的求解思想:Jacobi 迭代法和 Gauss-Seidel 迭代法。2、 掌握迭代法收敛的条件,并会判断 Jacobi 迭代法和 Gauss-Seidel 迭代法的收敛性。3、 学会编程实现 Jacobi 迭代法和 Gauss-Seidel 迭代法,掌握终止迭代的技术(予给的迭代次数) )与发散性判断的方法。)()1(kkX4、 体会初始解 X ,松弛因子的选取,对计算结果的影响。)0(二、实验问题解线性方程组 .Ab(1) ;1584,13262(2) ;58,417Ab(3),2312008656514 3039
2、42172865654250110934271248863A 5123.638921b数值分析实验指导第 1 页精确解:X = ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 ) .* T(4) 对称正定阵系数阵4202401385606,2241043520639A 0623.154b精确解:X = ( 1, -1, 0, 2, 1, -1, 0, 2 ) .* T(5) 三对角形系数矩阵410004100,0041004A 751326.145b精确解:X = ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 ) .* T三、实验要求1、试用 Jacob
3、i 迭代法,Gauss-Seidol 迭代法求解线性方程组 (1),(2),讨论收敛性。2、编写 Jacobi 迭代法,Gauss-Seidol 迭代法解线性方程组的一般程序,对不同精度要求,如 ,求解线性方程组(1),(2),由迭代次数体会该迭代法的收54310,敛快慢。3、使用 SOR 方法求解方程组(3) ,(4),(5),选取松弛因子 =0.8,0.9,1,1.1,1.2等,观察松弛因子的不同取法对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者。数值分析实验指导第 2 页附录一:数值分析实验报告(模板)【实验课题】 用 Jacobi 迭代法,Gauss-Seidol 迭代法求解线
4、性方程组,讨论收敛性 【实验目标】1、 理解求解线性方程组的 Jacobi 迭代法,Gauss-Seidel 迭代法的求解思想。2、 了解迭代法收敛的条件,会判断 Jacobi 迭代法和 Gauss-Seidel 迭代法的收敛性。3、 学会编程实现 Jacobi 迭代法和 Gauss-Seidel 迭代法,掌握终止迭代的技术( (予给的迭代次数) )与发散)()1(kkX性判断的方法。【理论概述与算法描述】1.雅可比迭代法对于矩阵 A,A=D-L-U,令 M=D,则 A=D-N,则雅克比迭代法=B +f,其中 B-I-1/DA=D-1(L+U)=J,,由雅可比迭代法得分量1kxk计算公式。计
5、= ,所以kx1(X,)kTn ,因此雅可比迭代法得计算公式11inkkki ijijijjaxab00012(,.)Tn11,()/nkkiiijijxaxi=1,2,3.,k=0,1,2.数值分析实验指导第 3 页2.高斯塞德尔迭代法令 M=D-L,A=M-N,得 B=(D-L)-1U=G,G 为高斯塞德尔迭代法的迭代矩阵,得到 ,所以高斯塞德尔计算公11i nkkki ijijijjaxaxxb式为,00012(X,.)Tnx=( ) , i=1,2,3.,k=0,1,2.ki1ikkijijijjaxxb/ia【实验问题】用 Jacobi 迭代法,Gauss-Seidol 迭代法求解线
6、性方程组,判断收敛性 【实验过程与结果】1.理解两种迭代法的计算思想,掌握方法推到计算公式2.用 matlab 编程实现3.对实验结果进行分析,比较两种方法,并判断收敛性【结果分析、讨论与结论】数值分析实验指导第 4 页两种方法得到的结果一样,雅可比k =17x =-0.1348-1.08293.92032.高斯塞德尔k =17x =-0.1348-1.0829数值分析实验指导第 5 页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)toli
7、f k20disp(jacobi fails)break;endk=k+1; for i=1:nx0=x;x(i)=(b(i)-A(i,1:n)*x0+A(i,i)*x(i)/A(i,i);end数值分析实验指导第 6 页endk2.高斯塞德尔程序算法function x=gaussseided(A,b,x0,tol)n=length(b);x=zeros(n,1);x=x0+1;k=0;while norm(x-x0)tolif k20disp(gaussseided fails:)break;endk=k+1; for i=1:nx0=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数值分析实验指导第 7 页endk3.主函数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)