实验六解线性方程组的迭代法一、实验目标1、理解求解线性方程组的两种迭代法的求解思想:Jacobi迭代法和Gauss-Seidel迭代法。2、掌握迭代法收敛的条件,并会判断Jacobi迭代法和Gauss-Seidel迭代法的收敛性。3、学会编程实现Jacobi迭代法和Gauss-Seidel迭代法,掌握终止迭代的技术()()1(kkXX或k(予给的迭代次数))与发散性判断的方法。4、体会初始解X)0(,松弛因子的选取,对计算结果的影响。二、实验问题解线性方程组.AXb(1)1518411,132162Ab;(2)21515481,214117Ab;(3)4231210000865365010042213210310215131194426167332386857172635021342530116101191734212246271392012400183248631A,512323.4613381921b精确解:X*=(1,-1,0,1,2,0,3,1,-1,2)T.数值分析实验指导第1页(4)对称正定阵系数阵424024002212132041141835602161433,21812241034334411140253101142006334219A062023.9221545b精确解:X*=(1,-1,0,2,1,-1,0,2)T.(5)三对角形系数矩阵41000000001410000000014100000000141000000001410000,00001410000000014100000000141000000001410000000014A751326.1214455b精确解:X*=(2,1,-3,0,1,-2,3,0,1,-1)T.三、实验要求1、试用Jacobi迭代法,Gauss-Seidol迭代法求解线性方程组(1),(2),讨论收敛性。2、编写Jacobi迭代法,Gauss-Seidol迭代法解线性方程组的一般程序,对不同精度要求,如54310,10,10,求解线性方程组(1),(2),由迭代次数体会该迭代法的收敛快慢。3、使用SOR方法求解方程组(3),(4),(5),选取松弛因子=0.8,0.9,1,1.1,1.2等,观察松弛因子的不同取法对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者。数值分析实验指导第2页附录一:《数值分析》实验报告(模板)【实验课题】用Jacobi迭代法,Gauss-Seidol迭代法求解线性方程组,讨论收敛性【实验目标】1、理解求解线性方程组的Jacobi迭代法,Gauss-Seidel迭代法的求解思想。2、了解迭代法收敛的条件,会判断Jacobi迭代法和Gauss-Seidel迭代法的收敛性。3、学会编程实现Jacobi迭代法和Gauss-Seidel迭代法,掌握终止迭代的技术()()1(kkXX或k(予给的迭代次数))与发散性判断的方法。【理论概述与算法描述】1.雅可比迭代法对于矩阵A,A=D-L-U,令M=D,则A=D-N,则雅克比迭代法1kx=Bkx+f,其中B-I-1/DA=D^-1(L+U)=J,,由雅可比迭代法得分量计算公式。计kx=1(X,X)kkTn....,所以1111inkkkiiiijjijjijjiaxaxaxb,因此雅可比迭代法得计算公式000012(X,X........X)Tnx11,(b)/nkkiiijjiijxaxai=1,2,3.......,k=0,1,2.....数值分析实验指导第3页2.高斯塞德尔迭代法令M=D-L,A=M-N,得B=(D-L)^-1U=G,G为高斯塞德尔迭代法的迭代矩阵,得到11111inkkkiiiijjijjijjiaxaxaxb,所以高斯塞德尔计算公式为000012(X,X........X)Tnx,1kix=(1111inkkijjijjijjiaxaxb)/iia,i=1,2,3.......,k=0,1,2.....【实验问题】用Jacobi迭代法,Gauss-Seidol迭代法求解线性方程组,判断收敛性【实验过程与结果】1.理解两种迭代法的计算思想,掌握方法推到计算公式2.用matlab编程实现3.对实验结果进行分析,比较两种方法,并判断收敛性【结果分析、讨论与结论】两种方法得到的结果一样,数值分析实验指导第4页雅可比k=17x=-0.1348-1.08293.92032.高斯塞德尔k=17x=-0.1348-1.08293.9203数值分析实验指导第5页【附程序】1.雅可比程序算法functionx=jacobi(A,b,x0,tol)n=length(b);x=zeros(n,1);x=x0+1;k=0;whilenorm(x-x0)tolifk20disp('jacobifails')break;endk=k+1;fori=1:nx0=x;x(i)=(b(i)-A(i,1:n)*x0+A(i,i)*x(i))/A(i,i);endend数值分析实验指导第6页k2.高斯塞德尔程序算法functionx=gaussseided(A,b,x0,tol)n=length(b);x=zeros(n,1);x=x0+1;k=0;whilenorm(x-x0)tolifk20disp('gaussseidedfails:')break;endk=k+1;fori=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=[10.40.4;0.410.8;0.40.81];b=[1;2;3];tol=1e-3;x0=[3;1;6];%x=jacobi(A,b,x0,tol)x=gaussseided(A,b,x0,tol)