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

下载本文档

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

文档简介

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

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

3、有的线性方程组的阶数很高,用直接法求解效果不是很好。而迭代法与直接法不同,它是通过从某些初始向量出发,用设计好的步骤逐次计算出近似解向量x(k),从而得到向量序列 x(0),x,x,111。2、常用迭代方法的介绍及比较2.1常用迭代方法的介绍设有线性代数方程组:玄1必? |1| ? axn 二b an1x| annxn 二 g其中 a = bjj !:- r , x = x1,.,xn, b = b|, , bn , a 为奇异矩阵,下面王要讨论的 3 种解线性方程ax = b,的迭代方法的迭代格式如下: jacob 迭代法的计算公式为 : 迭代矩阵记a 二d _l _u dx = (l u

4、)x b x 二 d(l u)x d b得到 jacob 迭代法的计算公式 : xc)=xf mj , xn ?gauss-seide 迭代法计算公式为 :x0,, xn剧彳,* i 4 n 、xd=一 -x aijx/k+s aw?) aii i j # j 亠j迭代公式的矩阵形式为 :,a110d =hi 0 ann ;* 0_a21 00、l =+ -1 4+ + ! 0lan1 iii_ann 10丿易知, jacobi 迭代有0-a1 2 iiia n10 hru =fa10ann0丿1 1 b0=d (l u) =1 -d a b0是 jacobi 迭代法的迭代矩阵。xi n (k

5、 jxj j t =丄b a aii (1.2)(1.3)(d -l -u )x =b 1 f = d - l - b,称 g 为 gauss-seidel 迭代方法的迭代矩阵sor 方法的计算公式 : x=(xi xf, ( / i a n xf+)=( 13) xf )+a bi - 瓦ajxjd迟ajxf) /a y j 二 丿(1.2? 1.4 式中,i =1,2 ,n ;k =0,1,为迭代次数; ? ?为松弛因子)2.2常用迭代方法的比较评判和比较各种迭代法的标准可局限于其自身的性质,主要依据迭代法的收敛性、迭代法的收敛速度、每迭代一次所需的计算量、实际计算时需要的存贮量。jaco

6、bi 迭代法公式在用计算机计算时,计算x(k+1)时需要 x(k)的所有分量,而由gauss- seidel 迭代公式 (1.3)可知,计算 xk1的第 i 个分量 x:1时,利用了已经计算出的最新分量 x十)(j =1,2,,i -1)。gauss seidel 迭代法可看作 jacobi 迭代法的一种改进。由(1.2)式可知, jacobi 迭代法计算公式简单,每迭代一次只需计算一次矩阵和向量的乘法,且计算过程中原始矩阵a 始终不变 . 其计算量为:至多需要n2 次乘(除)法运算,n n-1次加(减)法运算,实际计算时一般需要两组存贮单兀,以存放x*和x(k41)。例 2.1 用 jaco

7、bi 迭代法解方程组10 xj -2x2 x3 = 3 -2x1 10 x2 -x3 =15 j xi -2x2 5x3 -10 解:解出x1, x2, x3:捲= 0.2x20.1x3 0.3 x2二0.2x! 0.1x3 1.5 x0.2x!0.4x22 1 其中:g 二d l u ,(1.4 )按下式进行迭代:*+1)= 0.2x2k(# o 卅(十)o . 3 jx2k+1)=0.2/)+ o.xf(+)1(.!6 = 12|h)xt/.% )o.x2k()2 i任取一初始向量,例如x(o)=(o,o,o)t,得到迭代序列 x(k),列表如下ko12345678x(k)o0.3000o

8、.8oooo.918oo.9716o.98o4o.9962o.9985o.9998(k)x2o1.5ooo1.76oo1.926o1.97oo1.98971.99611.99861.9998(k)x3o2.oooo2.66oo2.864o2.954o2.98232.99382.99772.9997不难验证,原方程组的精确解为x = (1,2,3)t,从上面的计算可以看出,x(k)收敛于精确解的。由(1.3)可知, gauss seidel 迭代法每迭代一次只需计算一次矩阵与向量的乘法?其计算量为:至多需要n2次乘(除)法运算,nn-1次加(减)法运算,实际计算时只需要一组存贮单元来存放xk例

9、2.2 用 gauss-seidel 迭代法计算例 2.1 并做比较解:迭代公式为:x(k1) = o.2x2k)0.1x3k)0.3 x2k1)=o.2x1k1)0.1x3k)1.5 x3k 1)=0.2x!k1)o.4x2k 1)2用它计算得到的序列 x(k)列表如下 : k0123456x(k)00.30000.88040.98430.99780.99971.0000 x2k)01.56001.94481.99221.99891.99982.0000 x3k)02.68402.95392.99382.99912.99993.0000可见它对这一方程组比jacobi 迭代法收敛快一些。一般

10、来说,解线性方程组ax=b,有可能 jacob 迭代法和 gauss-seidell 代法 都收敛,或是一者收敛另一者不收敛,或是二者均不收敛. 对于 sor 方法,显然 . 当=1时,sor 方法即为 gauss-seide 迭代法。 sor 方法每迭代一次主要运算量是计算一次矩阵与向量的乘法,其计算量为:至多需要 n n 次乘(除)法运算, n n /次加(减)法运算,实际计算时只需要一组存贮单元来存放xk。sor 方法的迭代矩阵 l . 与松驰因子有关,选取不同的,其迭代收敛速度有所不同。一般来说,计算程戌是有困难的,可用试算的办法来确定一个适当的基本的解线性方程组的迭代法,如jacob

11、 迭代法、 gauss-seide 迭代法和 sor方法,根据事先给定的精度e, 可估计出迭代的次数k : 其中, b 是迭代矩阵 b 的某种算子范数。对 3 种常用迭代法的基于其自身的性质,主要依据其收敛法、收敛速度、每个迭代法所需的计算量和存贮量这4 个指标进行比较,如下表:迭代方法收敛条件母步迭代需存向量数每步迭代所需计算量收敛速度jacobi迭代法p(j)c22n次乘(除)法n(n-1)次加(减)法-in p( j )gauss-seidel迭代法p(g )c112n次乘(除)法n(n-1)次加(减)法-in p(g )sort 法pd11n(n+2)次乘(除)法n(n + 1)次加(

12、减)法-* 傀)3、数值实验结果及分析例 3 解线性方程组 : 解 取精度;=10,x0=0, jacob 迭代公式为 : x1(kjx2klx3nx 伫)=(1_x1(k)-x3k)-xf)-4; ?,丄(k=o,1| 表示迭代次数)x(k)=(1_x(k)-x2k)-x4k)-4; xk十)=(1 -xf)-xjk)-xk)-4. j理论估计要达到预先给定的精度;=10 ,由于 j 2 =0.75 ,x1 1 1,1,1,1t,x)-x( 2 =0.5,故所需的迭代次数(1-0.75 广i 0.5 ;37.46 in0.75 用 matlab7.0 运算结果得 k=37,可满足要求精度,得

13、到精确解需要迭代126 次-1 -1x-14-1x3-1-14_x4 一1_1 一t 它的精确解为x = - 1厂1,-仁- !in 4 -1 -1 4 1-1 -1 1 1 -1 -1 x1 -1 gauss-seide 迭代公式为:xf 十)=( 1 _x2k)xk)一才) / 一 4; xf 半) = (1 x(*)- 才)_xf) / 一 4; * ( k = 0,1川表示迭代次数 ) xfrnixlqxffxf)/”xfrpxhlxtlxffym理论估计要达到预先给定的精度g =10=由于 i g 2 = 0.785,| x(1)-x(02 = 0.7424 , 故所需的迭代次数“

14、f2(1 0.785)、i 0.7424 k 22.16, ino .785 用 matlab7 . 0 运算结果得 k=23, 满足要求精度,且得到精确解。sor 方法的迭代公式为:x(kh1)=xk)- 国(1 +4xklxf)-xf )-xf)/4; xjkh1)= xk)-国(1 -x(kh1)+4x2klxflxf; ?( k = 0,1,| j|表示迭代次数 )x3k*)= x3k) (1 x1kux 厂)+4x$) * )/4; xt)= x4k)弋(1 -x 严 lx 严 lxf *4*?4. j取? =1.3,第 11 次迭代结果满足精度要求。取?为其他值,迭代次数如下表。从

15、比例看到,松弛因子选择的好,会使sor迭代法的收敛大大加速。本例中:=1.3式最佳松弛因子。满足误差满足误差松弛因子xlc =tol x0=x; x=g*x0+d1; n=n+1; end 到 matlab 主窗口,输入: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 = 23 x = -1.0000 -1.0000 -1.0000 -1.0000 (3)sor 迭代法程序在 matlab 命令行下输入 : edit sorm 然后将下面输入,并保存fun ction

16、 x=sor(a,b,w) n=len gth(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(i)=xk(i)+w*(b(i)-sum)/a(i,i);% o ?卩?jacabi?d ia ?。匕?xk error=error+abs(x(i)-xk(i); end if error/norm(x,1)0.0001 break; end end 到 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. 武汉 :华中科技大学出版社,2

温馨提示

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

评论

0/150

提交评论