研究线性方程组迭代收敛速度.
- 格式:doc
- 大小:366.50 KB
- 文档页数:15
几类特殊线性代数方程组的迭代解法及其收敛性分析的开题报告一、选题的背景和意义线性代数是数学中的一个重要分支,它在科学和工程中都有很广泛的应用。
线性方程组在生产和科学技术中的应用非常广泛,例如在物理、统计学、计算机科学、经济学、金融等领域中广泛使用。
然而,由于线性方程组通常是大规模的、复杂的,并且往往没有解析解,因此迭代方法是解决此类方程组的主要方法之一。
特殊的线性方程组是具有特殊结构的方程组,例如对角占优、对称正定、三对角等。
这些特殊的结构使得方程组的求解更具有可行性和稳定性,因此针对这些结构,设计相应的迭代方法具有理论和实际的重要性。
本文将研究这些特殊线性代数方程组的迭代解法及其收敛性分析,探究不同的迭代方法在不同的情况下的优缺点,并分析不同方法的收敛性,这对于理论和实践都具有重要意义。
二、研究内容和研究方法本文研究内容为各种特殊线性方程组的迭代解法及其收敛性分析,包括对角占优线性方程组、对称正定线性方程组、三对角线性方程组等。
本文将重点研究以下几种方法:1. Jacobi迭代法:Jacobi迭代法是一种基本的迭代方法,主要用于解对角占优线性方程组。
该方法的思路是将原方程组转化为x = Bx + g的形式,并进行迭代求解。
2. Gauss-Seidel迭代法:Gauss-Seidel迭代法是Jacobi迭代法的变种,也是基于x = Bx + g的思路,但是它可以利用已经求得的解来加快求解的速度。
3. SOR迭代法:SOR迭代法是在Jacobi和Gauss-Seidel迭代法的基础上发展而来的加速算法,该方法引入一个松弛因子来加速收敛。
4. CG迭代法:CG迭代法是一种用于求解对称正定线性方程组的迭代方法,它可以利用矩阵的对称性和正定性来加速求解。
5. TDMA迭代法:TDMA迭代法是一种用于求解三对角线性方程组的迭代方法,该方法利用三对角矩阵的特殊结构来简化矩阵运算,从而加速求解。
本文将运用数学分析、计算机仿真和实验比较等方法,对以上几种迭代方法的收敛性和求解速度进行深入研究。
线性代数方程组的数值解法讨论解线性方程组的方法,主要分为直接方法和迭代方法两种。
直接法是在没有舍入误差的假设下能在预定的运算次数内求得精确解。
而实际上,原始数据的误差和运算的舍入误差是不可以避免的,实际上获得的也是近似解。
迭代法是构造一定的递推格式,产生逼近精确解的序列。
对于高阶方程组,如一些偏微分方程数值求解中出现的方程组,采用直接法计算代价比较高,迭代法则简单又实用,因此比较受工程人员青睐。
小组成员本着工程应用,讨论将学习的理论知识转变为matlab 代码。
讨论的成果也以各种代码的形式在下面展现。
1 Jacobi 迭代法使用Jacobi 迭代法,首先必须给定初始值,其计算过程可以用以下步骤描述: 步骤1 输入系数矩阵A ,常熟向量b ,初值(0)x ,误差限ε,正整数N ,令1k =.步骤2 (0)11ni i ij jj ii j i x b a x a =≠⎡⎤⎢⎥=-⎢⎥⎢⎥⎣⎦∑,(0)j x 代表(0)x 的第j 个分量。
步骤3 计算11ni i ij j j ii j i y b a x a =≠⎡⎤⎢⎥=-⎢⎥⎢⎥⎣⎦∑,判断1max i i i n x y ε≤≤-<,如果是,则结束迭代,转入步骤5;否则,转入步骤4。
步骤4 判断k N =?如果是,则输出失败标志;否则,置1k k =+,i i x y ⇐,1,2,,i n =,转入步骤2。
步骤5 输出12,,n y y y 。
雅可比迭代代码function [x,k]=Fjacobi(A,b,x0,tol)% jacobi 迭代法 计算线性方程组% tol 为输入误差容限,x0为迭代初值max1= 300; %默认最多迭代300,超过要300次给出警告 D=diag(diag(A)); L=-tril(A,-1);U=-triu(A,1); B=D\(L+U); f=D\b; x=B*x0+f;k=1; %迭代次数while norm(x-x0)>=tol x0=x;x=B*x0+f; k=k+1;if(k>=max1)disp('迭代超过300次,方程组可能不收敛'); return; end%[k x'] %显示每一步迭代的结果 End2 高斯赛德尔迭代由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值,若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量(1)k i x +时,用最新分量11()k x +,12()k x +…(1)1k i x +-代替旧分量)1(k x ', )2(k x …)3(k x 就得到高斯赛德尔迭代格式,其数学表达式为:1(1)(1)()111(1,2,,)i n k k k ii ij j ij j j j i ii xb a x a x i n a -++==+⎛⎫=--= ⎪⎝⎭∑∑具体形式如下:()()()(1)()()()11221331111(1)(1)()()22112332222(1)(1)(1)(1)(1)112233,11111k k k k n n k k k k n n k k k k k n n n n n n n n nnx a x a x a x b a x a x a x a x b a x a x a x a x a x b a ++++++++--=----+=----+⋯⋯⋯⋯⋯⋯=-----+矩阵形式表示为:()(1)1(1)()(0,1,2,,),k k k k n +-+=++=x D Lx Ux b将(1)(1)()(0,1,2,,)k k k k n ++=++=Dx Lx Ux b 移项整理得: (1)1()1()()(0,1,2,,))k k x D L Ux D L b k n +--=-+-=记11(),()--=-=-M D L U g D L b ,则(1)()k k x x +=+M g高斯塞德尔迭代function [x,k]=Fgseid(A,b,x0,tol)%高斯-塞德尔迭代法 计算线性方程组 % tol 为误差容限max1= 300; %默认最高迭代300次D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1); G=(D-L)\U; f=(D-L)\b; x=G*x0+f;k=1; while norm(x-x0)>=tol x0=x;x=G*x0+f; k=k+1;if(k>=max1)disp('迭代次数太多,可能不收敛'); return; end% [k,x'] %显示每一步迭代结果 End3 超松弛迭代法在工程中最常遇到的问题便是线性代数方程组的求解,而线性代数方程组的求解一般可以分为两类,一类是直接法(精确法),包括克莱姆法则方法、LD 分解法等,另一类是迭代法(近似法),包括雅克比迭代法、高斯迭代法、超松弛迭代法等。
2.高斯塞德尔迭代法令M=D-L,A=M-N,得B=(D-L)^-1U=G,G 为高斯塞德尔迭代法的迭代矩阵,得到11111i nk k k ii iij jijjij j i a xa xa xb -++==+=--+∑∑,所以高斯塞德尔计算公式为000012(X ,X ........X )Tn x =,1k ix+=(1111i nk k ij jijji j j i a xa xb -+==+--+∑∑)/ii a ,i=1,2,3.......,k=0,1,2.....【实验问题】用Jacobi 迭代法,Gauss-Seidol 迭代法求解线性方程组,判断收敛性【实验过程与结果】1.理解两种迭代法的计算思想,掌握方法推到计算公式2.用matlab 编程实现3.对实验结果进行分析,比较两种方法,并判断收敛性【结果分析、讨论与结论】两种方法得到的结果一样,雅可比k =17x =-0.1348-1.08293.9203 2.高斯塞德尔k =17x =-0.1348-1.08293.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)>tolif k>20disp('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);endend。
迭代相关收敛法(concor)
迭代相关收敛法(Conjugate Gradient Method)是求解线性方程组的一类迭代方法,具有收敛速度快、存储空间少等优点,在高维计算中得到广泛应用。
迭代方法是解决大规模线性方程组的重要方法之一,其基本思想是用一个初始估计解,通过迭代循环逐步优化,最终得到方程组的精确解。
Conjugate Gradient Method就是一种比较典型的迭代方法,其基本思想是每次迭代都在一组相互垂直的方向上沿着最快下降的
方向进行迭代,从而达到快速收敛的目的。
具体而言,Conjugate Gradient Method包括以下步骤:
1. 对于初始估计解x0,计算Ax0和r0=b-Ax0(其中A是系数矩阵,b是常数矢量,r0是误差向量)。
2. 初始化搜索方向p1=r0,初始迭代次数为k=1。
3. 沿着搜索方向pk进行迭代求解,得到第k+1步的迭代解xk+1,误差向量
rk+1=b-Axk+1,并计算ρk+1=||rk+1||2。
4. 判断停止条件,如果达到了预设的收敛精度,则停止迭代;否则,更新搜索方向
pk+1=rk+1+βkp,其中βk=ρk+1/ρk。
5. 更新迭代次数k=k+1,返回步骤3。
线性方程组的迭代式求解方法迭代法解方程的基本原理1.概述把 Ax=b 改写成 x=Bx+f ,如果这一迭代格式收敛,对这个式子不断迭代计算就可以得到方程组的解。
道理很简单:对 x^{(k+1)}=bx^{(k)}+f 两边取极限,显然如果收敛,则最终得到的解满足 \lim_{k\rightarrow\infty } x^{(k)}=x^*=Bx^*+f ,从而必然满足原方程 Ax^*=b 。
迭代方法的本质在于这一次的输出可以当作下一次的输入,从而能够实现循环往复的求解,方法收敛时,计算次数越多越接近真实值。
2.收敛条件充要条件:迭代格式 x=Bx+f 收敛的充要条件是 \rho (B)<1充分条件: \Vert B\Vert <1即 \Vert B\Vert <1 \Rightarrow \rho(B)<1\Leftrightarrow 迭代收敛一、Jacobi迭代法怎样改写Ax=b ,从而进行迭代求解呢?一种最简单的迭代方法就是把第i行的 x_i 分离出来(假定 a_{ii} \ne 0 ):\sum_{j=1}^{n}a_{ij}x_j=b_i\Rightarrow x_i=\frac{b_i-\sum_{j=1,j\ne i}^{n}a_{ij}x_j}{a_{ii}}\quad \\这就是Jacobi(雅可比)迭代法。
迭代格式给定x^{(0)}=\left[x_1^{(0)},x_2^{(0)},\cdots,x_n^{(0)}\rig ht]^T ,则Jacobi法的迭代格式(也称分量形式)为x_i^{(k+1)}=\frac{1}{a_{ii}}\left ( {b_i-\sum_{j=1,j\ne i}^{n}a_{ij}x_j^{(k)}}\right),\quadi=1,2,\cdots,n\\矩阵形式设 A=D-L-U。
Jacobi法的矩阵形式(也称向量形式)为x^{(k+1)}=B_Jx^{(k)}+D^{-1}b\\其中迭代矩阵 B_J=D^{-1}(L+U)收敛条件\begin{eqnarray} \left. \begin{array}{lll} \VertB_J\Vert <1 \\ A 严格对角占优\\ A, 2D-A对称正定\end{array} \right \} \end{eqnarray} \Rightarrow \rho (B_J)<1\Leftrightarrow 迭代收敛特别地,若 A 对称正定且为三对角,则 \rho^2(B_J)=\rho (B_G)<1 。
实验五 解线性方程组的迭代法【实验内容】对1、设线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛--------------------------2119381346323125136824381004120291372642212341791110161035243120536217758683233761624491131512013012312240010563568000012132410987654321x x x x x x x x x x()Tx 2,1,1,3,0,2,1,0,1,1*--=2、设对称正定系数阵线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---------------------45152292320601924336002141103520411144334310422181233416120653811414023121220024042487654321x x x x x x x x ()Tx 2,0,1,1,2,0,1,1*--=3、三对角形线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛------------------5541412621357410000000014100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410987654321x x x x x x x x x x ()Tx 1,1,0,3,2,1,0,3,1,2*---=试分别选用Jacobi 迭代法,Gauss-Seidol 迭代法和SOR 方法计算其解。
共轭梯度法求解线性方程组的收敛性分析与研究引言1.初始化初始解x0和残差r0=b-Ax0。
2.计算初始方向d0=r0。
3.对于k=0,1,2,...,进行以下迭代步骤:3.1 计算步长αk,使得x_{k+1}=xk + αkd。
3.2 更新残差rk+1=rk - αkAd。
3.3 计算方向dk+1=rk+1 + βkdk,其中βk=(rk+1·rk+1)/(rk·rk)。
3.4迭代直到达到指定的收敛条件。
迭代次数共轭梯度法是一种迭代算法,因此需要考虑它的迭代次数。
理论上,对于一个n阶的对称正定矩阵A,共轭梯度法最多需要n次迭代才能达到精确解。
这是因为在每一次迭代中,共轭梯度法都能找到一个与前面的方向相互正交的新方向,从而有效地减小了残差的范数。
因此,在实际应用中,共轭梯度法通常具有较快的收敛速度。
误差收敛性共轭梯度法的误差收敛性是衡量其收敛性好坏的重要指标。
理论分析表明,共轭梯度法在最多n次迭代后可以达到精确解。
在实际应用中,共轭梯度法通常在较少的迭代次数后可以达到较高的精度。
这是因为共轭梯度法利用了方向的正交性质,在每一次迭代中都能有效地减小误差。
影响共轭梯度法收敛性的因素1.矩阵A的条件数:矩阵A的条件数越大,共轭梯度法的收敛速度越慢。
2.初始解x0的选择:初始解x0的选择对共轭梯度法的收敛性有较大影响。
通常情况下,可以选择Ax0=b的最小二乘解作为初始解。
3.矩阵A的对称性:矩阵A的对称性可以加速共轭梯度法的收敛速度。
4.终止条件的选择:共轭梯度法的收敛速度和终止条件有关。
通常情况下,可选择残差的范数小于其中一预定精度作为终止条件。
5.迭代次数:共轭梯度法的收敛速度和迭代次数有关。
通常情况下,可以根据实际应用需求,选择合适的迭代次数。
总结与展望共轭梯度法是求解线性方程组的一种重要算法,具有收敛速度快,存储量小等优点。
本文对共轭梯度法的收敛性进行了分析与研究,并讨论了影响共轭梯度法收敛性的因素。
1 / 8数值分析实验六:解线性方程组的迭代法2016113 张威震1 病态线性方程组的求解1.1 问题描述理论的分析表明,求解病态的线性方程组是困难的。
实际情况是否如此,会出现怎样的现象呢?实验内容:考虑方程组Hx=b 的求解,其中系数矩阵H 为Hilbert 矩阵,,,1(),,,1,2,,1i j n n i j H h h i j n i j ⨯===+-这是一个著名的病态问题。
通过首先给定解(例如取为各个分量均为1)再计算出右端b 的办法给出确定的问题。
实验要求:(1)选择问题的维数为6,分别用Gauss 消去法、列主元Gauss 消去法、J 迭代法、GS 迭代法和SOR 迭代法求解方程组,其各自的结果如何?将计算结果与问题的解比较,结论如何?(2)逐步增大问题的维数(至少到100),仍然用上述的方法来解它们,计算的结果如何?计算的结果说明了什么?(3)讨论病态问题求解的算法1.2 算法设计首先编写各种求解方法的函数,Gauss 消去法和列主元高斯消去法使用实验5中编写的函数myGauss.m 即可,Jacobi 迭代法函数文件为myJacobi.m ,GS 迭代法函数文件为myGS.m ,SOR 方法的函数文件为mySOR.m 。
1.3 实验结果1.3.1 不同迭代法球求解方程组的结果比较选择H 为6*6方阵,方程组的精确解为x* = (1, 1, 1, 1, 1, 1)T ,然后用矩阵乘法计算得到b ,再使用Gauss 顺序消去法、Gauss 列主元消去法、Jacobi 迭代法、G-S 迭代法和SOR 方法分别计算得到数值解x1、x2、x3、x4,并计算出各数值解与精确解之间的无穷范数。
Matlab 脚本文件为Experiment6_1.m 。
迭代法的初始解x 0 = (0, 0, 0, 0, 0, 0)T ,收敛准则为||x(k+1)-x(k)||∞<eps=1e-6,SOR方法的松弛因子选择为w=1.3,计算结果如表1。
数值计算方法中的迭代收敛速度分析数值计算方法是一种通过使用数值逼近来解决数学问题的方法。
在数值计算中,迭代方法是一种常用的技术,它通过反复应用某个迭代公式来逼近问题的解。
然而,迭代方法的收敛速度对于问题的求解效率和准确性有着重要的影响。
本文将针对数值计算方法中的迭代收敛速度进行分析。
1. 迭代收敛速度的概念迭代收敛速度是指迭代过程中逼近解的速度。
在数值计算中,我们通常希望迭代方法能够尽快地收敛到问题的解,以提高计算效率。
迭代收敛速度可以通过迭代误差的变化来评估,即每次迭代后解的改变程度。
2. 收敛速度的度量方法为了衡量迭代方法的收敛速度,我们可以使用多种度量方法,其中一种常用的方法是利用迭代误差的变化率。
具体而言,我们可以计算每次迭代后解的改变程度,然后将其与前一次迭代的误差进行比较。
如果每次迭代后误差的变化趋于减小,那么我们可以认为迭代方法具有较快的收敛速度。
3. 收敛速度的影响因素迭代方法的收敛速度受多个因素的影响,包括初始估计解、迭代公式的选择和问题的性质等。
首先,初始估计解的选择对于迭代收敛速度有着重要的影响。
如果初始估计解与真实解较为接近,那么迭代方法往往能够更快地收敛。
其次,迭代公式的选择也会对收敛速度产生影响。
一些迭代公式具有更快的收敛速度,而另一些则相对较慢。
最后,问题的性质也会对收敛速度产生影响。
一些问题可能具有较快的收敛速度,而另一些则可能需要更多的迭代次数才能达到收敛。
4. 常见的迭代方法及其收敛速度分析在数值计算中,有多种常见的迭代方法,如牛顿法、Jacobi迭代法和Gauss-Seidel迭代法等。
这些方法具有不同的收敛速度,并且适用于不同类型的问题。
4.1 牛顿法牛顿法是一种用于求解非线性方程的迭代方法。
它通过不断逼近函数的根来求解方程。
牛顿法的收敛速度通常是二阶收敛的,这意味着每次迭代后误差的平方会减小到原来的四分之一。
4.2 Jacobi迭代法Jacobi迭代法是一种用于求解线性方程组的迭代方法。
数值分析第六章线性方程组迭代解法线性方程组是数值分析中的重要内容之一,其求解方法有很多种。
其中一种常用的方法是迭代解法,即通过不断迭代逼近方程组的解。
本文将介绍线性方程组迭代解法的基本思想和常用方法。
线性方程组可以用矩阵形式表示为Ax=b,其中A是系数矩阵,b是常数向量,x是未知向量。
线性方程组的解可以是唯一解,也可以是无穷多个解。
迭代解法的基本思想是通过不断迭代,并利用迭代序列的极限,逼近线性方程组的解。
迭代解法适用于大型的线性方程组,而直接求解法则适用于小型的线性方程组。
常用的迭代解法有雅可比迭代法、高斯-赛德尔迭代法和逐次超松弛迭代法。
雅可比迭代法是最简单的线性方程组迭代解法之一、它的基本思想是将线性方程组的每个方程都单独表示为未知数x的显式函数,然后通过不断迭代求解。
雅可比迭代法的迭代公式为:x(k+1)=D^(-1)(b-(L+U)x(k))其中,D是A的对角元素构成的对角矩阵,L是A的下三角矩阵,U 是A的上三角矩阵,x(k)是第k次迭代的解。
高斯-赛德尔迭代法是雅可比迭代法的改进版。
它的基本思想是将每个方程的解带入到下一个方程中,而不是等到所有方程都迭代完毕后再计算下一组解。
高斯-赛德尔迭代法的迭代公式为:x(k+1)=(D-L)^(-1)(b-Ux(k))其中,D是A的对角矩阵,L是A的下三角矩阵(除去对角线),U是A的上三角矩阵(除去对角线),x(k)是第k次迭代的解。
逐次超松弛迭代法是对高斯-赛德尔迭代法的改进。
它引入了松弛因子w,通过调节松弛因子可以加快收敛速度。
逐次超松弛迭代法的迭代公式为:x(k+1)=(D-wL)^(-1)[(1-w)D+wU]x(k)+w(D-wL)^(-1)b其中,D是A的对角矩阵,L是A的下三角矩阵(除去对角线),U是A的上三角矩阵(除去对角线),w是松弛因子,x(k)是第k次迭代的解。
线性方程组迭代解法需要设置迭代停止准则,通常可以设置迭代次数上限或者设置一个精度要求。
数值计算中的迭代方法与收敛性迭代方法在数值计算中起着重要的作用,它通过逐步逼近解决了很多复杂的数学问题。
本文将探讨数值计算中的迭代方法以及它们的收敛性。
一、迭代方法的基本原理迭代方法是通过不断重复逼近的过程来求解问题的一种数值计算方法。
其基本原理是从一个初始值开始,通过迭代公式不断逼近目标值,直至满足预设的收敛条件。
通常情况下,迭代方法可以应用于求解方程、优化问题等。
二、常见的迭代方法1. 不动点迭代法不动点迭代法是迭代方法中最常见的一种。
其基本思想是将原问题转化为寻找一个函数的不动点,即函数自身在某点上的取值等于该点本身。
通过选择适当的迭代函数,不动点迭代法可以有效地求解方程或优化问题。
2. 牛顿迭代法牛顿迭代法是一种高效的求解方程的方法。
其核心思想是利用函数的局部线性近似来逼近方程的解。
通过迭代公式不断逼近方程的根,牛顿迭代法可以在较短的时间内获得较高的精度。
3. 雅可比迭代法雅可比迭代法是一种用于线性方程组求解的迭代方法。
它通过将方程组表示为矩阵乘法的形式,将解向量的每个分量都表示为先前迭代解的线性组合。
通过不断迭代更新解向量的各个分量,雅可比迭代法可以逐步逼近方程组的解。
三、迭代方法的收敛性分析迭代方法的收敛性是判断该方法是否能够求解准确解的重要指标。
常用的收敛性分析方法有局部收敛性和全局收敛性。
1. 局部收敛性局部收敛性是指在迭代过程中,当初始值选择在某个特定的范围内时,迭代方法能够收敛到准确解。
局部收敛性通常通过迭代函数的导数来分析,若导数满足一定条件,则可以判断方法具有局部收敛性。
2. 全局收敛性全局收敛性是指迭代方法对于任意初始值都能够收敛到准确解。
全局收敛性是迭代方法的理想性质,但在实际应用中很难满足。
对于某些迭代方法,可以通过收敛域的定义和分析来判断其全局收敛性。
四、迭代方法的应用与改进迭代方法在数值计算中有着广泛的应用,涉及到方程求解、优化、插值等领域。
尽管迭代方法具有很多优点,但也存在一些问题,如收敛速度慢、迭代公式复杂等。
研究解线性方程组迭代收敛速度一. 实验目的科学研究与生产实践中许多问题都可归结为线性方程组的求解,高效求解线性方程组成为了许多科学与工程计算的核心.迭代法就是用某种极限过程去逼近线性方程组精确解的方法,该方法具有对计算机的存贮单元需求少,程序计算简单,原始系数矩阵在计算过程中不变等优点,是求解大型稀疏矩阵方程组的重要方法。
常用的迭代法有Jacobi 迭代法、Gauss —seidel 迭代法、逐次超松驰法(SOR 法)等。
二. 实验摘要由迭代法平均收敛速度与渐进收敛速度的关系引入近似估计法,即通过对迭代平均收敛速度取对数,然后利用Mathematica 软件对其进行拟合,给出拟合函数,最终得到了Jacobi 迭代法、Gauss —seidel 法的平均收敛速度收敛到渐进收敛速度的近似收敛阶,以及逐次超松驰法(SOR 法)的渐进收敛速度,且该法适用于其他迭代法收敛速度的估计。
三. 迭代法原理1.Jacobi 迭代法(J 法)设方程组b Ax =,其中,n n n n ij R a A ⨯⨯∈=)(,。
n R b x ∈,A 为可逆矩阵,可分裂为,U D L A ++=其中,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=-00001,21323121n n n n a a a a a a L ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=-0000,122311312n n n n a a a a a a U⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=nn a a a D2211从而由b Ax =得到,bD x A D I b D x A D D b D x U L D x 111111)()()(------+-=+-=++-=令 A D I B J 1--=, b D f J 1-=, 由此可构造出迭代公式:J k J k f x B x +=+)()1(令初始向量)0,...,0,0()0(=x ,即可得到迭代序列,从而逼近方程组的解 这种方法称为Jacobi 迭代法,其中J B 称为Jacobi 迭代矩阵。
2. Gauss-Seidel 迭代法(GS 法)与Jacobi 迭代法类似,将方程组b Ax =中的系数矩阵A 分裂为,U D L A ++=,其中U L D ,,与前面相同。
与Jacobi 迭代法所不同的是,Gauss-Seidel 迭代法将Jacobi 迭代公式中的b Ux Lx Dx k k k +--=+)()()1( 改为 b Ux Lx Dx k k k +--=++)()1()1(从而b Ax =可写成矩阵形式b Ux x D L k k +-=++)()1()(,若设1)(-+D L 存在,则b D L Ux D L x k k 1)(1)1()()(--++++-=,其中,U D L B G 1)(-+-=,b D L f 1)(-+=,于是Gauss —Seidel 迭代公式的矩阵形式为fx B xk G k +=+)()1(。
其中,G B 称为式(1)的Gauss —Seidel 迭代法的迭代矩阵。
注:由于Gauss-Seidel 迭代充分利用了迭代过程的新信息,一般来说,它的迭代效果要比Jacobi 迭代好。
3.逐次超松弛方法(SOR 法)根据Gauss-Seidel 迭代法的迭代原理)()()1(1)1(b Ux Lx D x k k k +--=+-+,我们将其修改为)1()()1()1(+-++-=k k k xw xw x,即对)(k x和)1(+-k x加入一个权因子,在这里我们称w 为迭代公式的松弛系数。
令)()()1(1)1(b Ux Lx D xk k k +--=+-+-(Gauss —Seidel 迭代法),则)()1()1()()1(1)()1()()1(b Ux Lx wD x w xw xw xk k k k k k +--+-=+-=+-+-+从而b wL D w x wU D w wL D x k k 1)(1)1()(])1[()(--+++--+=])1[()(1wU D w wL D G w --+=-,1)(-+=wL D w f w 所以w k w k f x G x +=+)()1(将其写成分量的形式我们称该公式为基于Gauss —Seidel 迭代下的超松弛迭代公式。
注:1) 关于松弛系数w 的选取,我们有以下性质: (i ).设方程组b Ax =,其中,nn n n ij R a A ⨯⨯∈=)(,nR b x ∈,,则解方程的SOR迭代法收敛的必要条件是20<<w ; (ii )若A 为正定的对称矩阵,且20<<w ,则方程组b Ax =关于SOR 迭代法是收敛的; (iii )若A 为正定的对称三对角矩阵,JB 为Jacobi 迭代矩阵,若J B 的谱半径1)(<J B ρ,记)(J B ρμ=,则SOR 法的最优松弛因子为2112μ-+=b w且⎪⎩⎪⎨⎧<≤-≤<--+=2104/)1(4)(222w w w w w w w w G b bw μμρ2) 由松弛系数的性质可知,通常只有当方程组的系数矩阵A 为正定的对称矩阵时我们才使用SOR 法;3) 当松弛系数1=w 时,SOR 法记为GS 方法; 4) 关于(iii )提到的谱半径定义为:假设A 为n 阶可逆矩阵,n λλλ,...,,21是它的n 个特征值,我们称||m ax )(1i ni A λρ≤≤=为A 的谱半径。
容易证明A 的谱半径是A 的所有诱导范数的下确界,即||||inf )(||||A A ⋅=ρ其中,矩阵的范数如:∑=≤≤=n i ij n j a A 111||max ||||,∑=≤≤∞=nj ij n i a A 11||max ||||,)(||||2A A A T ρ= 。
下面我们就来讨论以上方法的迭代收敛速度,首先我们介绍收敛速度快慢的比较方法。
四. 迭代法收敛速度的比较1.这两种迭代方法收敛性与)(0∞→→k B k 是否成立有关,且收敛速度与0→k B 的速度有关。
当1)(<B ρ时, k B 趋于零矩阵的速度有赖于)(B ρ的大小。
一般说来,)(B ρ越小,则k B 趋于零矩阵的速度越快,反之就越慢。
通常,当1)(<B ρ时,可以用正数)(ln B ρ-的大小作为迭代法渐进收敛速度的度量。
这时)(ln B ρ-越大,迭代法的收敛速度愈大。
2.平均收敛速度与渐进收敛速度之间的联系对于收敛的迭代法...)2,1,0(1=+=+k f Bx x k k ,)||ln(||/1k k k B R -=称为平均收敛速度(它与所用的范数以及k 有关);)(ln B R ρ-=∞称为渐进收敛速度。
可以证明k k R R ∞→∞=lim ,因此当∞→k 时假设成立下列渐近关系式c R R pkk →+1(常数),为估计平均收敛速度收敛到渐进收敛速度的阶,当k 充分大时有如下近似形式:1,1>>≈+k c R R kk 两边取对数得:c R p R k k ln ln ln +≈此式说明当k 比较大时,1ln +k R 与k R ln 有近似的线性关系,而它们的斜率刚好为收敛阶P ,这样可以通过当k 比较大时作出1ln +k R 与k R ln 的拟合曲线来估计出P 值。
五. 实验举例例1:考虑五阶方程组⎪⎪⎪⎩⎪⎪⎪⎨⎧-=+-=-+--=-=-+-=--1202412342355454143521541x x x x x x x x x x x x x 1. 其Jacobi 迭代法的迭代矩阵为⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=05.00005.000025.005.000025.000025.02.06.0000J B渐进收敛速度为:41301462.0)66165261.0ln())(ln(=-=-=∞J B R ρ则迭代平均收敛速度k R (见表1)以及取对数后作最小二乘拟合图像(见图1)如下所示:表1图11.5 1.4 1.3 1.2 1.1 1.01.201.151.101.051.000.95即53345499.0)ln(44226443.0)ln(1-=+k k R R从而得到收敛阶为 p=0.442264432. 该方程组的Gauss —Seidel 迭代矩阵为:⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=275.0075.000055.015.000005.00003.015.00002.06.0000G B其渐进收敛速度为85566611.0)425.0ln())(ln(=-=-=∞G B R ρ则迭代平均收敛速度k R (见表2)以及取对数后作最小二乘拟合图像(见图2)如下所示:图21.41.21.00.80.60.40.90.80.70.60.50.40.3即11593362.0)ln(58472143.0)ln(1-=+k k R R从而得到收敛阶为 p=0.58472143。
注:在本例中,由于方程组的系数矩阵严格对角占优,故前述两种迭代过程均收敛,依实际迭代过程:对Jacobi 迭代有67-32)31()32(10106.4345694||||||||-<⨯=-x x x 而Gauss —Seidel 迭代有67-18)17()18(10105.5402987||||||||-<⨯=-x x x ,即二者均收敛,但后者更快一些。
这与收敛阶p=0.585>0.442之间关系一致。
例2:考虑方程组⎪⎩⎪⎨⎧-=+-=-+=+244304324343232121x x x x x x x 用SOR 迭代公式可得取初试量为T x )0,0,0()0(=,迭代至第14次后的结果为当1=w 时 ,T x )5.0005551- 3.9977796, 3.0026645,()14(=当24.1=w 时,T x ) 5.- 3.9999999, 3.0000002,()14(=可见取24.1=w 时的收敛速度比1=w 时的收敛速度要快。
若要精确到小数后7位,当1=w (GS 法)时需迭代31次,而当24.1=w (SOR 法)时只需迭代14次,它表明松弛因子w 选取的好坏,对收敛速度影响很大。
六. 程序设计及实验结果1. Jacobi 迭代法,用mathematica 编写程序如下:(i )计算迭代矩阵Clear[Evaluate[Context[]<>"*"]]A={{5,0,0,-3,-1},{-1,4,0,0,-1},{0,0,2,-1,0},{-1,0,0,4,-2},{0,0,0,-1,2}}; b={2,3,-1,0,-1};L=Table[If[i>j,A[[i,j]],0],{i,Length[A]},{j,Length[Transpos e[A]]}];D1=Table[If[i==j,A[[i,j]],0],{i,Length[A]},{j,Length[Transp ose[A]]}];U=Table[If[i<j,A[[i,j]],0],{i,Length[A]},{j,Length[Transpos e[A]]}];I1=IdentityMatrix[Length[A]]; BJ=I1-Inverse[D1].A//N fJ=Inverse[D1].b//N; 运行结果为⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=05.00005.000025.005.000025.000025.02.06.0000J B(ii )计算方程组的解精确到小数点后7位时,迭代次数、最后一次迭代的结果、最后两次的相对误差。