迭代法求解线性方程组的研究精选.docx
- 文档编号:23406555
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:17
- 大小:111.54KB
迭代法求解线性方程组的研究精选.docx
《迭代法求解线性方程组的研究精选.docx》由会员分享,可在线阅读,更多相关《迭代法求解线性方程组的研究精选.docx(17页珍藏版)》请在冰豆网上搜索。
迭代法求解线性方程组的研究精选
迭代法求解线性方程组的研究
【摘要】:
本文总结了解线性方程组的三个迭代法,Jacobi迭代法,Gauss-seidel迭代法,SOR迭代法,并且介绍了现代数值计算软件MATLAB在这方面的应用,即分别给出三个迭代法的数值实验。
【关键字】:
Jacobi迭代法Gauss-seidel迭代法SOR迭代法数值实验
一.引言
迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,它是解高阶稀疏方程组的重要方法。
迭代法的基本思想是用逐次逼近的方法求解线性方程组。
设有方程组
…①
将其转化为等价的,便于迭代的形式
…②
(这种转化总能实现,如令
),
并由此构造迭代公式
…③
式中B称为迭代矩阵,f称为迭代向量。
对任意的初始向量
,由式③可求得向量序列
,若
,则
就是方程①或方程②的解。
此时迭代公式②是收敛的,否则称为发散的。
构造的迭代公式③是否收敛,取决于迭代矩阵B的性质。
本文介绍三种解线性方程组的最主要的三种迭代法:
Jacobi迭代法,Gauss-Seidel迭代法和SOR迭代法。
本文结构如下:
第二部分介绍Jacobi迭代法及其数值实验,第三部分介绍Gauss-Seidel迭代法及其数值实验,第四部分介绍SOR迭代法及其数值实验,第五部分总结。
二.雅克比(Jacobi)迭代法
1.雅克比迭代法的格式
设有方程组
…①
矩阵形式为
设系数矩阵A为非奇异矩阵,且
从式①中第i个方程中解出x,得其等价形式
…②
取初始向量
,对式②应用迭代法,可建立相应的迭代公式:
…③
也可记为矩阵形式:
…④
若将系数矩阵A分解为A=D-L-U,式中
,
,
。
则方程Ax=b变为
得
于是
于是式中④中的
。
式③和式④分别称为雅克比迭代法的分量形式和矩阵形式,分量形式用于编程计算,矩阵型式用于讨论迭代法的收敛性。
2.雅克比迭代法的程序
雅克比迭代法的MATLAB函数文件
agui_jacobi.m如下。
Functionx=agui_jacobi(a,b)
%a为系数矩阵,b为右端向量,
为初始向量(默认为零向量)
%e为精度(默认为1e-6),n为最大迭代次数(默认为100)
x为返回解向量。
n=length(b);
N=100;
e=1e-6;
x0=zeros(n,1);
x=x0;
x0=x+2*e;
k=0;
d=diag(diag,0);
1=-tril(a,-1);
u=-triu(a,1);
whilenorm(x0-x,inf)>e&k k=k+1; x0=x; x=inv(d)*(l+u)*x+inv(d)*b; k disp( ) end ifk=Nwarning(‘以达到最大迭代次数’);end 3.数值例子 用雅克比迭代法求解如下线性方程组。 解: 在MATLAB命令窗口求解例题 >>a=[10-12;-110-2;-1-15] a= 10-12 -110-2 -1-15 >>b=[72;83;42] b= 72 83 42 >>x=agui_jacobi(a,b) 计算结果为: k=1 7.200000000000008.300000000000008.40000000000000 k=2 9.71000000000000010.7000000000000011.50000000000000 … k=16 10.9999996844967011.9999996844967012.99999962583317 x= 10.99999968449670 11.99999968449670 12.99999962583317. 三.高斯—赛德尔(Gauss-Seidel)迭代法 1.高斯—赛德尔迭代法的格式。 雅克比迭代法的优点是公式简单,迭代矩阵容易计算。 在每一步迭代时,用 的全部分量求出 的全部分量,因此称为同步迭代法,计算时需保留两个近似解 和 。 但在雅克比迭代过程中,对已经计算出的信息未能充分利用,即在计算第i个分量 时,已经计算出的最新分量 没有被利用。 从直观上看,在收敛的前提下,这些新的分量 应比旧的分量 更好,更精确一些。 因此,如果每计算出一个新的分量便立即用它取代对应的旧分量进行迭代,可能收敛的速度更快,并且只需要储存一个近似解向量即可。 据此思想可构造高斯—赛德尔(Gauss-Seidel)迭代法,其迭代公式为 (i=1,2,…,n) 也可以写成矩阵形式 仍将系数矩阵A分解为 则方程组变为 得 将最新分量代替为旧分量,得 即 于是有 所以 因为高斯—赛德尔迭代法比雅克比迭代法收敛快,这个结论在多数情况下是成立的,但也有相反的情况,即高斯—赛德尔迭代法比雅克比迭代法收敛慢,甚至还有雅克比迭代法收敛,高斯—赛德尔迭代法发散的情形。 2.高斯—赛德尔迭代法的程序 高斯—赛德尔迭代法在MATLAB的函数文件agui_GS.m如下 Functionx=agui_GS(a,b) %a为系数矩阵,b为右端向量,x0为初始向量(默认为零向量) %e为精度(默认为1e-6),N为最大迭代次数(默认为100),x为返回解向量 n=length(b); N=100; e=1e-6; x0=zeros(n,1); x=x0; x0=x+2*e; k=0; a1=tril(a); a2=inv(a1); whilenorm(x0-x,inf)>e&k k=k+1; x0=x; x=-a2*(a-a1)*x0+a2*b; formatlong k disp( ) end ifk=Nwarning(‘已达到最大迭代次数’);end 4.数值例子 在MATLAB命令窗口求解例1 解: >>a=[10-12;-110-2;-1-15] a= 10-12 -110-2 -1-15 >>b=[72;83;42] b= 72 83 42 >>x=agui_GS(a,b). 计算结果为: k=1 7.200000000000009.0200000000000011.64400000000000 k=2 10.4308000000000011.6718800000000012.82053600000000 k=3 10.9999999654565311.9999999788305012.99999998885741 x= 10.99999996545653 11.99999997883050 12.99999998885741 三.超松弛(SOR)迭代法 1.超松弛迭代法的格式 超松弛迭代法(SuccessiveOverRelaxationMethod,SOR方法)是高斯—赛德尔迭代法的一种改进,是解大型稀疏方程组的有效方法之一。 设已知第k次迭代向量 ,及第k+1次迭代向量的前i-1个分量 ,(j=1,2,…i-1),现在研究如何求向量 的第i个分量 。 首先,有高斯—赛德尔迭代法求出一个值,记为 (i=1,2,…n) 再将第k次迭代向量的第i个分量 与 进行加权平均, 得 ,即: 于是的SOR迭代公式 (i=1,2,…n)…① 或 (i=1,2,…n)…② 当 =1时,式①即为高斯—赛德尔迭代法; 当0< <1时,式①称为低松弛方法,当某些方程组用高斯—赛德尔迭代法不收敛时,可以用低松弛方法获得收敛; 当 >1时,式①称为超松弛方法,可以用来提高收敛速度。 将式②写成矩阵的形式,得: 即 于是得SOR迭代的矩阵表示 式中 2.SOR迭代法的程序 SOR迭代法的MATLAB函数文件agui_SOR.m如下 functionx=agui_SOR(a,b,omg) %a为系数矩阵,b为右端向量,x0为初始向量(默认为零向量) %e为精度(默认为1e-6),N为最大迭代次数(默认为100) %omg为松弛因子,x为返回解向量。 n=length(b); N=100; e=1e-6; x0=x+2*e; k=0; L=tril(a,-1); U=triu(a,1); Whilenorm(x0-x,inf)>e&k k=k+1; x0=x; fori=1: n x1(i)=(b(i)-L(i,1: i-1)*x(1: i-1,1)-U(i,i+1: n)*x0(i+1: n,1))/a(i,i); x(i)=(1-omg)*x0(i)+omg*x1(i); end formatlong k disp( ) end ifk==Nwarning(‘已达到最大迭代次数’);end 3.数值例子 在MATLAB命令窗口求解下方程: = 解: >>a=[4-2-4;-21710;-4109] a= 4-24 -21710 -4109 >>b=[10;3;7] b= 10 3 -7 取松弛因子为1.46,得 >>x=agui_SOR(a,b,1.46) k=1 3.650000000000000.88458823529412-0.2021980392157 k=2 2.321669098039220.42309393550173-0.22243214861566 …… k=20 1.999997990284351.00000077908772-1.00000253133178 k=21 1.999997797458841.00000143726811-1.00000259636013 x= 1.99999779745884 1.00000143726811 -1.00000259636013 取松弛因子为1.即用高斯—赛德尔迭代法则需迭代90次,得 >>x=agui_SOR(a,b,1.0) k=1 2.500000000000000.47058823529412-0.189********013 k=2 2.494660173437570.64588531811546-0.38669027637825 …… k=90 2.000005531926800.99999608340497-0.99999318959361 x= 2.00000553192680 0.99999608340497 -0.99999318959361 四.总结 以上几种解线性方程组的迭代法主要用于解高阶稀疏矩阵方程组,其特点是: 占用内存少,程序设计简单,原始系数矩阵在计算过程中始终不变。 但存在收敛性和收敛速度的问题。 Jacobi迭代法也称简单迭代法,其基本思想是从方程组的第i个方程求出 ,并建立相应的迭代公式求出 ,Gauss-Seidel迭代法在Jacobi迭代法的基础上进行了改进,再求 时,用已求出的 — 新值代替旧值,因此也称异步迭代法。 在二者都收敛时,Gauss-Seidel迭代法的收敛速度较快,所以,应用比较广泛。 SOR迭代法的松弛因子选择的恰当,收敛速度更快,对一些特殊的方程组,选择松弛因子已有成熟的公式和经验,因此,SOR迭代法应用也比较广泛。 参考文献 【1】陈国章.使用计算方法应急手册.【M】.天津: 天津科学技术出版社,1994. 【2】李乃成,邓建中.数值计算方法.【M】.西安: 西安交通大学出版社,2002 【3】李庆扬,王能超,易大义.数值分析(第4版).【M】.北京: 清华大学出版社,2001. 【4】李庆扬.数值分析基础教程.【M】.北京: 高等教育出版社,2001. 【5】王沫然.MATLAB5.x与计算方法.【M】.北京: 清华大学出版社,2000. 【6】ShoichiroNakamura著.梁恒,刘晓艳等译.科学计算引论—基于MATLAB的数值分析【M】.北京: 电子工业出版社,2002. 【7】王能超.数值分析简明教程(第2版).【M】.北京: 高等教育出版社,2003. 【8】金聪,熊盛武.数值分析.【M】.武汉: 武汉理工大学出版社,2003. 【9】魏毅强,张建国,张洪斌等.数值计算方法.【M】.北京: 高等教育出版社,2004. 【10】高培旺.计算方法典型例题与习题.【M】.长沙: 国防科技大学出版社,2003. 【11】封建湖,聂玉峰,王振海.数值分析(第4版)导教·导学·导考.【M】.西安: 西北工业大学出版社,2003. 【12】吴筑筑.计算方法.【M】.北京: 清华大学出版社、北京交通大学出版社,2004. 【13】严蔚敏,吴伟民.数据结构(C语言版)【M】.北京: 清华大学出版社,1997. 【14】RichardL.Burden,J.DouglasFaires.NumericalAnalysis(SeventhEdition).【M】.ThomsonLearning,Inc,2001. 【15】PascalSebahandXavierGourdon,Newton’sMethodAndHighOrderIterations【A】.Numbers,ConstantandComputation.2001 SolutionOfLinearEquationsOfIterationWithTheExperimental Abstract: Thissummaryunderstandingoflinearequationsthreeiteration,jacobiiteration,gauss-seideliteration,SuccessiveOverRelaxationMethod,andintroducemodernnumericalsoftwarematlabinthisrespect,whichweregiventhreeiterationofnumericalexperiments Keywords: Jacobiiteration,gaussseideliteration,SuccessiveOverRelaxationMethod,experiments 最新文件仅供参考已改成word文本。 方便更改
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 迭代法 求解 线性方程组 研究 精选
![提示](https://static.bdocx.com/images/bang_tan.gif)