数值分析读书报告报告_第1页
数值分析读书报告报告_第2页
数值分析读书报告报告_第3页
数值分析读书报告报告_第4页
数值分析读书报告报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数 值 分 析线性方程组迭代解法的比较姓名:xxxx班级:xxxxxx流水号:xxxx学号:xxxx指导老师:xx线性方程组迭代解法的比较1、问题的提出科学研究与生产实践中许多问题都可归结为线性方程组的求解,高效求解线性方程组成为了许多科学与工程计算的核心。数值分析中,线性方程组的数值解法主要分为直接法和迭代法两大类。直接法是用有限次计算就能求出线性方程组“准确解”的方法(不考虑舍入误差),但是在运用此法求解元线性方程组时,其所需的乘法运算次数随的增大而明显增加。当稍大时,其运算量非常大,所以在实际工作中很少运用;迭代法是一种逐次逼近的方法,它是由线性方程组构造出迭代计算公式,然后以一个猜测的

2、向量作为迭代计算的初始向量逐步迭代计算,来获得满足精度要求的近似解。但是迭代法不能通过有限次算术运算求的方程组的精确解,而只能逐步逼近它。因此,凡是迭代法都存在收敛性和精度控制的问题。 本文主要讨论目前常用的3种解线性方程组的迭代方法:Jacobi迭代法(J法)、Gauss-Seidel迭代法(GS法)和逐次超松驰法(SOR法)。从迭代法的收敛性、迭代法的收敛速度、每迭代一次所需的计算量及实际计算时需要的存贮量等四个方面进行了比较和误差估计,并根据比较和分析作了总结。线性方程组的直接解法,用于阶数不太高的线性方程组效果较好。实际工作中有的线性方程组的阶数很高,用直接法求解效果不是很好。而迭代法

3、与直接法不同,它是通过从某些初始向量出发,用设计好的步骤逐次计算出近似解向量,从而得到向量序列。2、常用迭代方法的介绍及比较2.1常用迭代方法的介绍设有线性代数方程组:或记为 (1.1)其中,,为奇异矩阵,下面主要讨论的3种解线性方程,的迭代方法的迭代格式如下:Jacobi迭代法的计算公式为:迭代矩阵记 易知,Jacobi迭代有,是Jacobi迭代法的迭代矩阵。得到Jacobi迭代法的计算公式: (1.2)Gauss-Seidel迭代法计算公式为: (1.3) 迭代公式的矩阵形式为: 其中:, ,称G为Gauss-Seidel迭代方法的迭代矩阵。 SOR方法的计算公式: (1.4)(1.21.

4、4式中,为迭代次数;为松弛因子)2.2 常用迭代方法的比较评判和比较各种迭代法的标准可局限于其自身的性质,主要依据迭代法的收敛性、迭代法的收敛速度、每迭代一次所需的计算量、实际计算时需要的存贮量。 Jacobi迭代法公式在用计算机计算时,计算x(k+1)时需要x(k)的所有分量,而由GaussSeidel迭代公式(1.3)可知,计算的第个分量时,利用了已经计算出的最新分量 ()。GaussSeidel迭代法可看作Jacobi迭代法的一种改进。由(1.2)式可知,Jacobi迭代法计算公式简单,每迭代一次只需计算一次矩阵和向量的乘法,且计算过程中原始矩阵始终不变其计算量为:至多需要次乘(除)法运

5、算,次加(减)法运算,实际计算时一般需要两组存贮单元,以存放和。例2.1 用Jacobi迭代法解方程组解:解出:按下式进行迭代: ()任取一初始向量,例如,得到迭代序列,列表如下01234567800.30000.80000.91800.97160.98040.99620.99850.999801.50001.76001.92601.97001.98971.99611.99861.999802.00002.66002.86402.95402.98232.99382.99772.9997不难验证,原方程组的精确解为,从上面的计算可以看出,收敛于精确解的。由(1.3)可知,GaussSeidel迭

6、代法每迭代一次只需计算一次矩阵与向量的乘法其计算量为:至多需要次乘(除)法运算,次加(减)法运算,实际计算时只需要一组存贮单元来存放。例2.2 用GaussSeidel迭代法计算例2.1并做比较。解:迭代公式为:用它计算得到的序列列表如下:012345600.30000.88040.98430.99780.99971.000001.56001.94481.99221.99891.99982.000002.68402.95392.99382.99912.99993.0000可见它对这一方程组比Jacobi迭代法收敛快一些。 一般来说,解线性方程组,有可能Jacobi迭代法和Gauss-Seide

7、l迭代法都收敛,或是一者收敛另一者不收敛,或是二者均不收敛对于SOR方法,显然当时,SOR方法即为Gauss-Seidel迭代法。SOR方法每迭代一次主要运算量是计算一次矩阵与向量的乘法,其计算量为:至多需要次乘(除)法运算,次加(减)法运算,实际计算时只需要一组存贮单元来存放。SOR方法的迭代矩阵与松驰因子有关,选取不同的,其迭代收敛速度有所不同。一般来说,计算是有困难的,可用试算的办法来确定一个适当的。基本的解线性方程组的迭代法,如Jacobi迭代法、Gauss-Seidel迭代法和SOR方法,根据事先给定的精度,可估计出迭代的次数:,其中,是迭代矩阵的某种算子范数。对3种常用迭代法的基于

8、其自身的性质,主要依据其收敛法、收敛速度、每个迭代法所需的计算量和存贮量这4个指标进行比较,如下表:迭代方法收敛条件每步迭代需存向量数每步迭代所需计算量收敛速度Jacobi迭代法2次乘(除)法次加(减)法Gauss-Seidel迭代法1次乘(除)法次加(减)法SOR方法1次乘(除)法次加(减)法3、数值实验结果及分析例3 解线性方程组:,它的精确解为解 取精度,Jacobi迭代公式为:(表示迭代次数)理论估计要达到预先给定的精度,由于,故所需的迭代次数用MatLab7.0运算结果得k=37,可满足要求精度,得到精确解需要迭代126次。Gauss-Seidel迭代公式为:(表示迭代次数)理论估计

9、要达到预先给定的精度,由于,故所需的迭代次数,用MatLab70运算结果得k=23,满足要求精度,且得到精确解。SOR方法的迭代公式为:(表示迭代次数)取,第11次迭代结果满足精度要求。取为其他值,迭代次数如下表。从比例看到,松弛因子选择的好,会使SOR迭代法的收敛大大加速。本例中式最佳松弛因子。松弛因子满足误差的迭代次数松弛因子满足误差的迭代次数1.0211.5171.1171.6231.2121.7331.3111.8531.4141.9109本例中,各迭代法的收敛速度如下:Jacobi迭代法,;Gauss-Seidel迭代法,;SOR方法,。综上,选取适当的松驰因子,SOR方法的收敛速度

10、要比Gauss-Seidel迭代法和Jacobi迭代法快。4、总结逐次超松弛法(SOR)作为一种迭代法,在初始向量,误差界等相同的条件下,逐次超松弛法比Jacobi迭代法、Gauss-Seidel迭代法具有一定的优越性,特别是当选取了适当的松弛因子时,SOR方法的收敛速度要比Gauss-Seidel迭代法和Jacobi迭代法快很多,且每步需存向量数也相对较少。但是SOR方法也存在着缺点,该方法的有效使用依赖于参数的选取,一般无法得到最优参数,从而限制了方法的有效性,且所需计算量也较Jacobi迭代法和Gauss-Seidel迭代法大,但综合考虑,SOR法仍不失为一种有效的迭代法,尤其与Jaco

11、bi迭代法和Gauss-Seidel迭代法进行比较,其优越性显而易见。附录数值实验结果及分析,例3的MATLAB程序:(1)Jacobi迭代法的程序在Matlab命令行下输入:edit jacobi.m然后将下面输入,并保存function x=jacobi(A,b,p,detal) %jacobi迭代法D=diag(diag(A); %由A的对角线元素构成的对角矩阵DL=-tril(A,-1); %由A的严格下三角元素构成矩阵-LU=-triu(A,1); %由A得严格上三角元素构成矩阵-U B=(inv(D)*(L+U); %矩阵B=D-1*(L+U)f=(inv(D)*b; % f=D-

12、1*bx=B*p+f;n=1;while abs (p-x) %26gt;=detal %相邻两值的误差大于detal时循环继续p=x; %将x赋值给px=B*p+f;n=n+1; %收敛次数 endn到Matlab主窗口,输入:A=4,-1,-1,-1;-1,4,-1,-1;-1,-1,4,-1;-1,-1,-1,4;b=-1;-1;-1;-1;p=0;0;0;0;x=jacobi1(A,b,p,0.00001)得到结果n = 126x = -1.0000 -1.0000 -1.0000 -1.0000(2)Gauss-Seidel迭代法的程序在Matlab命令行下输入:edit Gauss

13、_seidel.m然后将下面输入,并保存function x=Gauss_Seidel(A,b,x0,tol)if (nargin=2)x0=ones(size(b);tol=1e-5;elseif (nargin=3)tol=1e-5;elsesprintf(USAGE:Gauss_Seidel(A,b,x0,tol)end D=diag(diag(A);U=triu(A,1);L=tril(A,-1);G=-(D+L)U;d1=(D+L)b;x=G*x0+d1;n=1;while norm(x-x0)=tol x0=x; x=G*x0+d1; n=n+1;endn到Matlab主窗口,输入

14、:A=4,-1,-1,-1;-1,4,-1,-1;-1,-1,4,-1;-1,-1,-1,4;b=-1;-1;-1;-1;x=gauss_seidel(A,b)得到结果:n = 23x = -1.0000 -1.0000 -1.0000 -1.0000(3)SOR迭代法程序在Matlab命令行下输入:edit SOR.m然后将下面输入,并保存function x=SOR(A,b,w)n=length(b);x=zeros(n,1);for k=1:1000 xk=x; error=0; for i=1:n sum=0; for j=1:n sum=sum+A(i,j)*x(j); end x(

15、i)=xk(i)+w*(b(i)-sum)/A(i,i);%Jacabixk error=error+abs(x(i)-xk(i); end if error/norm(x,1)0.0001 break; endend到Matlab主窗口,输入:A=4,-1,-1,-1;-1,4,-1,-1;-1,-1,4,-1;-1,-1,-1,4;b=-1;-1;-1;-1;x=sor(A,b,1.3)得到结果:x = -1.0000 -1.0000 -1.0000 -1.0000参考文献1李红 ,徐长发 .数值分析学习辅导习题解析 M.武汉 :华中科技大学出版社,2005:234-235,253-254

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论