上海大学硕士学位论文 第一章 引言 大型线性代数方程组Ax=b的求解,是大规模科学计算与工程计算的核 心,是最常见也是研究最多的计算问题.随着计算机的飞速发展,需求解的问题 的规模越来越大。一般而言,线性代数方程组根据系数矩阵A的对称性可分为 系数矩阵对称方程组及系数矩阵非对称的方程组.系数矩阵对称的方程组求解 相对而言是比较简单的,我们已经有了共轭斜量法,以及采用Lanczos过程的 SYMMLQ方法和GMRES方法等等.由于A的对称性,这些算法并不复杂. 而且在实际的计算过程中已证明这些方法对求解系数矩阵对称的方程组是非常 再来看看系数矩阵非对称的方程组.先看看它的重要性,现实生活中很多复杂问题,他们的数学建模是非线性的微分方程组,一般很难得到他们的真解,所 以通常都转为求其数值近似解.对所给的区间进行网格剖分后,在每一个网格点 进行离散化就能导出—个线性的函数方程组.正是由于非对称线性方程组在现实 生活中如此重要,且很多都涉及到国家的财产,必然要求有收敛速度快且稳定的 算法来求解非对称线性方程组。 随着对线性方程组的深入研究,目前已经提出了很多求解非对称线性方程组 非常有效的方法.比较好的方法有: GMRES方法,建立在GMRES方法基础 上的重启动GMRES方法,不完全正交化法和双正交化方法,以及后来的CGS 方法和BICGSTAB方法等等,详细可参见flo]。 本文将在对GMRES方法进行分析的基础上,针对GMRES方法中的“长拖”问题和对称系数矩阵方程组求解时的优越性,讨论几种将非对称系数矩阵 方程组的系数矩阵对称化来求解原方程组近似解的算法,这几种算法都避免了 GMRES方法的各种“长拖”。 首先,我们来分析比较一下求解非对称系数矩阵方程组和对称系数矩阵的 GMRES方法. 1.1求解非对称系数矩阵方程组的GMRES方法GMRES方法(Thegeneralized minimalresidual algorithm),即广义极小残 量法[7]。故名思义就是一种使的近似解误差最小的算法.本节详细介绍了非对 称系数矩阵方程组的GMRES方法,指出该种方法中存在“长拖”的缺点。 求解线性方程组 Ao=b 其中A是非对称,将Krylov子空间 正交化,运用Arnoldi过程t取q1=ro/lifoh21q2一Aql h32qa—Aq2 危k,一lqk=Aqk—l—hk一1,&一lqk一1一hk一2,一lqk一2 假定hk,k一10,按Arnoldi过程计算到k—J+1,此时,令QJ=‰q2,一,划有关系式 h11^12 h2l h22 九32 n1Jh2, hajh3、r1 hj3 (1.1.2) 是一个上Hessenberg矩阵。同时易知‰q2,…,田J:[ro,Aro,…,-1托]马, (1.1.3) 马是一个JJ的上三角矩阵,它的对角元依次为 珂瓦jii而现在考虑方程组(1.1.1) 令近似解q=‰+Q,,(”,使ri:b—Ax,=A(x+一%)的范数达到最小。 b—Axo—AQff0)=%一QjHffo’一’b+lJq+L’ Qj(Zoel一Hjf(g))一hi+1J如+1’. 这里’是,。)的第J个分量,卢0=llroh1.于是 ql|2=0肺ez一马,。’{}2+碍扎,(,j力)2 如果令 1.4)求出一个,,可以得到一个近似解,但它不是极小残量法的解。但如果b扎,=0, 那么这个解使得r』=0,从而q是方程组Az=b的真解。只要det(A)0,马 也一定有逆。实际上当hj+1j=0时AQ=QHj 从而 QTAQ3=H3. 如果det(吗)=0,那么马必有一个特征值为0的特征向量,假定为f,于是 AQ3=QJH|=0 即Q是A的对应特征值为0的特征向量,这与det(A)0矛盾.因此毋有 逆存在,这也说明在Arnoldi过程中发现h一1—0时,反而求到了真解。现在 将关系式(11.2)表示成 4QJ=劬+l吗(11.5) 是一个+1),矩阵,它的最后一行为hjj哆.于是r3=%一AOjfo)=强一Ql}国ip =劬+。(Zoe。一骂,). Q+l仍然是列标准正交阵.因此 忱l}2=l号I=ll岛et一葛,。’82 这样极小残量法归结为求一个最小二乘问题,这个问题可以用旋转变换的方法求 令Gl是(1,2)的旋转变换,G2是(2,3)的旋转变换…GJ是(』,J+1)的旋转变换。它使 GjG3。…G2GIHs XJ的上三角阵。这样IIqI|2=11G,G,一t…G。G-(风e-一弱,‘’’) =IIZoG39… 8|G…C2Gtel=Zo(c1,一51C2,sls2c3,- ,o)满足 碍产卜/j:o(ci,一81C2,…,(一1)。~8182…8,一l勺)7 《08=协&…s,嗡. 从而 m+10=慨ms卅,j. 上海大学硕士学位论文 也就是说它近似解的误差是递减的。该方法之所以称为广义极小残量法,是因为采用的不是Lanczos过程而是Arnoldi过程。该方法在实际问题中用的比较多。 GMRES方法是早期求解非对称系数矩阵方程近似解比较好的方法之一,因 为在设计该算法时我们是以使得近似解的误差是极小来进行的。但是在计算的过 程中我们会发现当j过大时GMRES方法就变得不实际,因为随着j的增大,存 储量和计算量都随之增大了。在Arnoldi过程中计算q+1有计算式 右边所有系数^沌i=1,2,3,…,k都要计算,因此所有的ql,q2,…,吼都要保存,从而时间复杂度和空间复杂度都很大.同时就最后的近似解xj=zo+Qj,(J) 而言,Q与fu)相乘也是不小的计算量。对于非对称的系数矩阵,设计避免这 一系列的“长拖”的算法就显得特别重要了。 解决GMRES方法长拖最初的算法应该是重启动的GMRES法。 重启动GMRES方法的思想很简单。即取定一个如,当在GMRES法中的 J=Jo时,求到%,此时不再进行J=如+1计算,而是将z,。作为新的初始向 量Xo重新进行计算。 具体算法如下: ro=b—Axo,卢=llro舱,ql=%伊2,用Arnoldi过程算得正交阵QJo+1与葛。 Ilrj。II=忙e-一瓦, zJo=X0+Q如, 3,若满足循环停止条件,则停止。否则,令T0=xjo 重启动GMRES方法使得原来的GMRES方法的“长拖”得到很好的改善。 在运算过程中,我们可以任意取定Jo来控制要多少步来重新启动一次,增加了 运算的自由度。 上海大学硕士学位论文 1.2求解对称系数矩阵方程组的GMREs方法 对称系数矩阵方程组的GMRES方法的基本思想与非对称系数矩阵相似,区 别在于对称系数矩阵方程组GMRES方法中采用的正交过程不是冗长的Arnoldi 过程,而是简洁的Lanczos过程。 求解线性方程组 Ax—b (1.2 其中A是对称的矩阵,将Krylov子空间7"0,Aro,…,A一1‰ 按Lanczos过程正交化。取qi=ro川%m fllq2=Aqi—oqql. 岛q3一Aq2一o。2q2一风ql, 这里o一1 风一lqk=A玑一1一ak—lqk一1一风一2qk一2(Aqk一1,qk一1) A吼一1一om—lqe一1一凤一2qe一2 吼=(Aqk—l—Otk—lqk1一凤一2qk一2)/凤一1 k一2,3…。按Lanczos过程计算到k=j+1,令。j 这里 为对称三对角矩阵。 AQi=QjT;8mqm毫01岛p1叻岛 ql,q2,…,曰],有关系式 (1.2.7) 0i。d|上海大学硕士学位论文 再接下来的过程就与非对称系数矩阵方程组的求解差不多了,详细可参见【10]。 通过对对称和非对称系数矩阵方程组GMRES方法的分析比较可以看出,如 果能在非对称系数矩阵方程组GMRES方法中采用Lanczos过程而不用Arnoldi 过程的话,整个算法的计算量和存储量都会大大减小。 1.3本文的基本内容 第一章回顾复习了对称和非对称的GMRES方法,指出非对称GMRES方 法中存在“长拖”的缺陷,. 第二章先复习了解对称系数矩阵方程组的共轭斜量法,并将共轭斜量法运用 到非对称系数矩阵方程组上,同时给出了收敛速度估计式. 第三章介绍了另一种将系数矩阵对称化的极小残量法,这种方法是建立在 Lanczos过程的基础上的,因此避免了GMRES方法的。长拖”,还进一步介绍 了这种极小残量法近似解的递推公式,及收敛速度估计式。 第四章中对文中所述几种解方程组方法的条件数和收敛速度进行分析,并给 出相应的数值例子. 本文只是讨论了将非对称系数方程组的系数矩阵对称化后的几种算法,对 于非对称线性方程组,这些算法不一定是最好的,但是它们确实有效地避免了 GMRES方法计算过程的冗长,且很好的运用了对称系数矩阵方程组求解时的优 第二章解非对称系数矩阵的共轭斜量法 共轭斜量法是解系数矩阵对称的缌陛代数方程组的一种方法,它产生在五 十年代初期,参见参考文献f15],现在公认它是一种好方法,可详见参考文献 f161, 『17], [18】。 本章第一节回顾了对称系数矩阵方程组的共轭斜量法,以及它的收敛速度估 计式.第二节在第一节的基础上导出非对称系数矩阵方程组的系数矩阵对称化后 的共轭斜量法,并给出相应的收敛速度估计式. 2.1对称系数矩阵的共轭斜量法 本节复习了对称矩阵的共轭斜量法以及其收敛速度估计式,目的是为下一节 非对称矩阵方程组共轭斜量法的推导作铺垫。 对于线性方程组 其中A=(%)是nxn实对称.正定矩阵,给定初始解向量xo,T-0=Axo—b, 可以得到序列 ro,Ar0,.一,A‘一1ro, 子空间m={r0,Aro,一,-1ro)为(2.11)的Krylov子空间,[2]中将这 组向量按内积(Ax,Y)正交(A一正交),可得到A一正交化的序列 咖,口l,’‘‘,qk 进而得出(2.1.1)的k次近似解‰。由于[2】中已证明,对于序列‰,有一个 重要的关系式 (“,rj)=0, J=0,1, 从而m,i=0,1,2…,k,可由简单的公式得出,详细参见[2]。这样有共轭斜量法常用算法为 “^=一(rk,rk)/(A弧,吼)Xk+l=zk十ozkq ’+1=rk+akAqk qk+1=rk+1+A^:qk ^k=(rk+1,rk+1)/(rk,rk) 对于共轭斜量法的收敛速度估计, [2]中已提出,为Ilxk-II-