APP下载

求解非对称线性方程组的自适应简单GMRES(m)算法

2014-01-20王雅

烟台职业学院学报 2014年4期
关键词:线性方程组范数非对称

王雅

(常州市广播电视大学信息与工程学院数学部,江苏常州213001)

求解非对称线性方程组的自适应简单GMRES(m)算法

王雅

(常州市广播电视大学信息与工程学院数学部,江苏常州213001)

GMRES方法比较多的运用于求解大型稀疏非对称线性方程组。本文研究具有自适应重新开始参数的简单GMRES算法,该算法具有储存量少,收敛速度快的特征。文章给出了数值试验和数值比较,以表明新算法的优越性和有效性。

线性方程组;重新开始GMRES;简单;自适应

1 引言

科学技术与生产实际中的大量问题往往归结为求解线性方程组,而且经常是大规模稀疏非对称方程组,广义最小残量法(一般简称GMRES)是目前最为流行并且行之有效的方法之一。求解线性方程组

AX=b

其中A∈Rnxn非奇异,b∈Rn。重新开始GMRES (m)算法可以克服GMRES算法中计算量和存储空间随着迭代步数的增加变得不可接受的情况,确保运算不会中断。

算法1:重新开始GMRES算法,即GMRES(m)

①开始:给定m<<n,选取x0,计算r0=b-Ax0及v1=r0/‖r0‖;

②迭代:对j=1,2,…,m

③构造近似解:

计算xm=x0+Vmym,其中 yk是最小二乘问题的解;

④重新开始:

计算rm=b-Axm,若满足精度则停止;否则置x0:=xm,v1=rm/‖rm‖,转第2步。

2 自适应简单GMRES(m)算法

在算法执行过程中,为了提高数值稳定性,每次迭代开始时的初始残量都要规范化,这就要求每次迭代过后,要在校正值上乘以初始残量范数,从而得到重新开始简单GMRES算法SGMRES(m),下面引入自适应简单GMRES(m)算法。首先,定义两个术语:用连续角(如∠(ri+1,ri))来表示两个连续残量之间的夹角,用跳跃角(如 ∠(ri+1,ri-1))来表示每隔一个残量的两个残量间的夹角。我们计算的角度总是介于0到90度之间的。

这个改变重新开始参数的方法,包括要详细地给定最大与最小的重新开始参数mmax和mmin,相应地,任意第i次迭代重新开始参数mi都要满足mmin≤mi≤mmax。我们把改进的SGMRES(m)记为SGMRES(mmin,mmax),首次迭代循环以mmax为重新开始参数。然后,我们在每次要重新开始之前计算连续角,来决定下一次的重新开始参数mi。事实上,我们每次都以d小幅度地降低重新开始参数,直到mmin。另外,我们也可以增大mi到mmax。然而,如果连续角很大(接近90度),表明收敛性良好,那我们就不需要改变当前的重新开始参数了。相反,如果连续角很小(接近0度),那我们就将之变为mmax。

算法2:自适应简单GMRES算法 SGMRES (mmin,mmax)

cr=1; /*收敛率*/

max_cr=cos(8); /*cos 8°≈0.99*/

min_cr=cos(80);/*cos 80°≈0.175*/

d=3; /*自适应重新开始参数的步长*/

i=0; /*计算迭代次数*/

x=0; /*初始估值*/

r=b-Ax; /*残量*/

while(不收敛)

/*计算重新开始参数mi*/

if(cr>max_cr or i==0)/*首次迭代或接近停滞*/

mi=mmax

else if(cr<min_cr)/*收敛率良好*/

else/*调整m*/

if(mi-1-d)≥ mmin

mi=mi-1-d

else

mi=mmax

end

/*重新开始迭代循环*/

for j=1:mi

/*SGMRES迭代*/

/*(如果达到收敛标准则跳出)*/

end

i=i+1;计算收敛率*/

end

从算法2中,很明显可以看出SGMRES(mmin,mmax)的测试标准计算量的简单性,以致可以忽略不计。而且,通过这种方法,我们可以简单迅速地把现有的SGMRES(m)实施改编为一个自适用重新开始的算法。

3 数值试验

此部分通过数值试验,比较GMRES(m),SGMRES(m)以及SGMRES(mmin,mmax)三者收敛性等,对所有的方程组,我们取方程组右端项b=(1,1,…,1)T,初始估计x=(0,0,…,0)T。并且,GMRES(m)和SGMRES(m)算法的重新开始参数m均取30,SGMRES(mmin,mmax)算法的参数最大值为30,最小值为3,收敛性的判断标准为tol=10-6,即当‖r‖≤tol时结束迭代计算。

例1:矩阵bfw398a.这是一个398×398的矩阵,有3678个非零元素。

当取m=30,mmax=30,mmin=3,d=3,收敛标准为tol=10-6时,分别运行各版本GMRES程序,我们得到了关于矩阵bfw398a的比较,计算结果见表1.

表1 m=30,mmax=30,mmin=3,d=3,tol=10-6时关于矩阵bfw398a比较

如表1所示,无论是运行时间还是重新开始的次数,SGMRES(mmin,mmax)算法都优于GMRES(m)算法和SGMRES(m)算法。

图1关于矩阵bfw398a的收敛曲线比较m=30,mmax=30,mmin=3,d=3,tol=10-6时

图1 可以直观地体现三种方法的收敛速度,同样可以看出,SGMRES(mmin,mmax)算法大大优于GMRES(m)算法和SGMRES(m)算法。

例2:矩阵watt__2.这是一个1856×1856的矩阵,有11550个非零元素。对于矩阵watt__1,我们来讨论SGMRES(m)中m的选取。当m取为10,20,25,30,35,40,60时,我们来比较SGMRES(m)的重新开始次数、CPU时间以及残量范数,结果见表2。

表2 m=10,20,25,30,35,40,60时,SGMRES(m)的重新开始次数、CPU时间以及残量范数

由表2可知,当m选取过小时,迭代次数将会大大增加,计算量也会相应地大幅提高;然而,m也不能取得太大,那样就将起不到自适应的效果。因此,应该选取适当的m,用于SGMRES(m)算法。

[1]Z.Cao,X.Yu,A note on weighted FOM and GMRES for solving nonsymmetric linear systems,Appl.Math. Comput.2004(151):719-727.

[2]Y Saad.Preconditioning technique for nonsymmetric and indefinite linear system[J].J.of Computational&Applied Mathematics,1988(24):89-105.

[3]王正盛,钟宝江.带极端特征向量的重新开始GMRES算法[J].南京航空航天大学学报.1999,31(4):447-450.

[4]王雅.求解非对称线性方程组的加权GMRES子空间算法[J].济南职业学院学报,2012,95(6):56-57.

[5]王雅.求解线性方程组的加权简单GMRES(m)算法[J].济南职业学院学报,2013,101(6):78-79.

(责任编辑 侯中岩)

O241.6

B

1673-5382(2014)04-0084-03

2014-10-18

王雅(1981-),女,江苏常州人,常州广播电视大学信息与工程学院教学部讲师.

猜你喜欢

线性方程组范数非对称
一类整系数齐次线性方程组的整数解存在性问题
求解非线性方程组的Newton迭代与Newton-Kazcmarz迭代的吸引域
H-矩阵线性方程组的一类预条件并行多分裂SOR迭代法
向量范数与矩阵范数的相容性研究
阀控非对称缸电液伺服系统线性自抗扰控制
非对称干涉仪技术及工程实现
基于加权核范数与范数的鲁棒主成分分析
如何解决基不匹配问题:从原子范数到无网格压缩感知
保护私有信息的一般线性方程组计算协议
非对称换向阀在液压缸传动系统中的应用