当前位置:文档之家› 研究线性方程组迭代收敛速度

研究线性方程组迭代收敛速度

研究解线性方程组迭代收敛速度一. 实验目的科学研究与生产实践中许多问题都可归结为线性方程组的求解,高效求解线性方程组成为了许多科学与工程计算的核心.迭代法就是用某种极限过程去逼近线性方程组精确解的方法,该方法具有对计算机的存贮单元需求少,程序计算简单,原始系数矩阵在计算过程中不变等优点,是求解大型稀疏矩阵方程组的重要方法。

常用的迭代法有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 ΛOO M M ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=-000,122311312n n n n a a a a a a U M O OΛΛ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=nn a a a D OO2211 从而由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位时,迭代次数、最后一次迭代的结果、最后两次的相对误差。

相关主题