在工程领域中,很多问题最终都可归结为求解大型线性方程组。由Sadd提出的GMRES(m)算法是求解大型线性方程组最有效的方法之一,被广泛应用到工程领域[1-4]。随着GMRES(m)算法的广泛应用,为加快GMRES(m)算法的收敛速度,很多学者对该算法进行优化与改进,一种方法是采用预处理技术[5-7],通过加权技术,即WGMRES(m)算法来加快算法的收敛性。孙蕾等利用残量多项式预处理方法,建立右端多项式预处理GMRES(m)算法[8]; 于春肖等通过深入探讨算法的收敛性与方程组系数矩阵的密切关系[9], 提出一种预条件广义极小残余新算法; 杨圣炜等通过引用加权技术,提出了加权SGMRES算法(WSGMRES算法)[10]; 在此基础上,仲红秀等利用加权策略和分析基底条件数,对块simple GMRES方法进行了改进,提出加权simple GMRES算法[11]; Yu等通过改变m的取值来加快收敛,进而提出VRP-GMRES(m)算法[12-13]; 郝雪景等利用截断技术,基于不完全正交的Arnoldi过程提出截断型变参数广义极小残余算法(VRP-IGMRES(m))[14]。本文利用截断技术[15-16],提出一种不完全正交的WIGMRES(m)算法,并结合数值算例,分析该算法的高效性。
1 WGMRES(m)算法考虑线性方程组Ax=b,其中,A为n阶非对称非奇异矩阵。取x0∈Rn为任一向量,令x=x0+z,则方程组可化为Az=r0,其中r0=b-Ax0。GMRES(m)算法是在Krylov子空间Km=Span{r0, Ar0, …, Am-1r0}中寻求zm且满足rm=r0-Azm⊥AKm,使得‖rm‖=‖r0-Azm‖=
定义1[17] 设D=diag{d1, d2, …, dn},di>0,i=1, 2, …, n,称di为加权因子。取任意向量α, β∈Rn,则它们的内积可简记为(α, β)D=βTDα=
加权Arnoldi过程:
1) 取v1=r0/‖r0‖D;
2) 对于j=1, 2, …, m,计算
3) 若hj+1, j=0, 则停止, 否则vj+1=
结合GMRES(m)算法和加权Arnoldi过程,WGMRES(m)算法计算步骤如下:
1) 选取x0∈Rn,m∈N+(m < n),给定误差上界;
2) 选取d=(d1, d2, …, dn)T,使得‖d‖=
3) 执行加权Arnoldi过程,对于j=1, 2, …, m,计算hj+1, j=‖
4) 求解最小二乘问题,
5) 若‖rm‖=‖r0-Azm‖ < ε,则x=xm,迭代停止,否则x0=xm,转向步骤2)。
2 WIGMRES(m)算法当m很大时,考虑到在构造krylov子空间的基向量和Hessenberg矩阵时要用到长递推公式,导致算法计算量和存储量过大,因此在WGMRES(m)算法的基础上进行改进,提出一种新型截断型算法,即WIGMRES(m)算法,该算法仅对Avj前面的至多q个向量进行正交,vj0, …, vj,j0=max{1, j-q-1}正交,其中q < m,令q0=j0=max{1, j-q-1},称q0为WIGMRES(m)算法的截断指标。算法具体步骤如下:
1) 选取x0∈Rn,m∈N+(m < n),给定误差上界;
2) 选取d=(d1, d2, …, dn)T,使‖d‖=n,计算r0=b-Ax0, β=‖r0‖D, v1=r0/β;
3) 执行不完全正交的加权Arnoldi过程,计算hij=(Avj, vi)D,j=1, 2, …, m,i=j0, j1, …, j,vj+1=Avj-
$ \boldsymbol{A} \boldsymbol{V}_{m}=\boldsymbol{V}_{m+1} \overline{\boldsymbol{H}}_{m} 。$ | (1) |
4) 求解最小二乘问题
$ \left\|\boldsymbol{r}_{m}\right\|=\min _{\boldsymbol{y} \in \bf{R}^{m}}\left\|\boldsymbol{\beta} \boldsymbol{e}_{1}-\overline{\boldsymbol{H}}_{m} \boldsymbol{y}_{m}\right\|,$ | (2) |
得ym,其中e1=(1, 0, …, 0)T∈Rm+1;
5) 构造近似解,xm=x0+Vmym;
6) 计算残余向量的模,‖rm‖=‖b-Axm‖;
7) 重启动判断,若‖rm‖ < ε,则精确解x=xm,迭代停止; 否则,置x0=xm,m=m+1,转2)。
3 WIGMRES(m)算法的收敛性为证明算法WIGMRES(m)的收敛性态,本文将WIGMRES(m)算法和WGMRES(m)算法联系起来,证明WIGMRES(m)的收敛性,为方便讨论,令WIGMRES(m)算法的残余向量的模为rm(WIG), WGMRES(m)算法残余向量的模为rm(WG)。
定理1 假设Vm+1列满秩,则WIGMRES(m)算法和WGMRES(m)算法在Km(r0, A)上的残值范数满足
$ \left\|\boldsymbol{r}_{m}(W I G)\right\| \leqslant S\left(\boldsymbol{V}_{m+1}\right)\left\|\boldsymbol{r}_{m}(W G)\right\|,$ |
其中:Vm+1由不完全正交化过程生成,S(Vm+1)=‖Vm+1‖‖Vm+1+‖,Vm+1+是Vm+1的广义逆。如果WIGMRES(m)算法在m步中断,即hm+1, m=0。
证明 由r0=βVm+1e1和式(1)可知,对应于rm(WIG)的残值为rm(WIG)=b-Axm(WIG)=Vm+1(βe1- Hmym),因此
$ \left\|\boldsymbol{r}_{m}(W I G)\right\|=\left\|\boldsymbol{V}_{m+1}\left(\boldsymbol{\beta} \boldsymbol{e}_{1}-\overline{\boldsymbol{H}}_{m} \boldsymbol{y}_{m}\right)\right\|。$ | (3) |
由βVm+1e1=r0,有βe1=Vm+1+r0,用Vm+1H前乘式(1)可得Hm=Vm+1+AVm。因此,式(3)变成‖rm(WIG)‖=‖Vm+1(Vm+1+r0-Vm+1+AVmym)‖。式(2)等价于求解最小二乘问题
$ \left\|\boldsymbol{r}_{m}(W I G)\right\| \leqslant\left\|\boldsymbol{V}_{m+1}\right\|\left\|\boldsymbol{V}_{m+1}^{+} \boldsymbol{r}_{0}-\boldsymbol{V}_{m+1}^{+} \boldsymbol{A} \boldsymbol{V}_{m} \boldsymbol{y}_{m}\right\|=\left\|\boldsymbol{V}_{m+1}\right\| \min _{z_{m} \in K_{m}\left(r_{0}, A\right)}\left\|\boldsymbol{V}_{m+1}^{+} \boldsymbol{r}_{0}-\boldsymbol{V}_{m+1}^{+} \boldsymbol{A} \boldsymbol{z}_{m}\right\| \leqslant\\ \left\|\boldsymbol{V}_{m+1}\right\|\left\|\boldsymbol{V}_{m+1}^{+}\right\| \min _{z_{m} \in K_{m}\left(\boldsymbol{r}_{0}, \boldsymbol{A}\right)}\left\|\boldsymbol{r}_{0}-\boldsymbol{A} z_{m}\right\|=S\left(\boldsymbol{V}_{m+1}\right) \underset{z_{m} \in K_{m}\left(r_{0}, A\right)} \min\left\|\boldsymbol{r}_{0}-\boldsymbol{A} \boldsymbol{z}_{m}\right\|=S\left(\boldsymbol{V}_{m+1}\right)\left\|\boldsymbol{r}_{m}(W G)\right\|,$ |
证毕。
4 数值算例算例1 考虑一维波动方程
$ \begin{cases}u_{t}=u_{x x}, & 0<x<1, 0<y<0.1, \\ u(0, y)=u(1, y)=0, & 0 \leqslant y \leqslant 0.1 \\ u(x, 0)=f(x)=\sin (\pi x)+\sin (3 \pi x), & 0 \leqslant x \leqslant 1_{\circ}\end{cases} $ | (4) |
方程(4)的精确解为u(x, y)=sin(πx)e-π2y+sin(3πx)e-9π2y,如图 1(a)所示。将区域沿x方向和y方向n等分,其中采用隐式差分法求解方程(4),可得方程组
![]() |
图 1 温度分布 Fig. 1 Temperature distribution |
$ u(x, y)=\sin (\pi x) \mathrm{e}^{-\pi^{2} y}+\sin (3 \pi x) \mathrm{e}^{-9 \pi^{2} y}。$ |
取n=20, m=10, q0=9时,用WIGMRES(m)算法求解一维波动方程,计算结果如图 1(b)所示。由图 1知,问题(4)的数值解和精确解是一致的,说明WIGMRES(m)算法的正确性。
取n=30, m=15考虑截断指标q0在1~14内取值,得到截断指标对残余范数和计算时间的图像如图 2、3所示,残余范数随着截断指标的增大波动后趋于平缓,计算时间随着截断指标的增大而缓慢增大,说明截断指标越小, 截断效果越明显。
![]() |
图 2 截断指标对残余范数的影响 Fig. 2 Effect of truncation index on residual norm |
![]() |
图 3 截断指标对计算时间的影响 Fig. 3 The impact of truncation indicators on calculation time |
算例2 考虑二维泊松方程
$ \begin{cases}-\left(\frac{\partial^{2} u}{\partial x^{2}}+\frac{\partial^{2} u}{\partial y^{2}}\right)=2 \pi^{2} \sin \pi x \sin \pi y, & (x, y) \in {\mathit{\Omega}} \\ u(x, y)=\sin \pi x \sin \pi y, & (x, y) \in \partial {\mathit{\Omega}}\end{cases} $ | (5) |
其中:Ω={(x, y)0 < x, y < 1},∂Ω为Ω的边界。
方程(5)的精确解为u(x, y)=sin πxsin πy,如图 4(a)所示。将区域沿x方向和y方向n等分,其中采用五点差分法求解方程(5),可得方程组
![]() |
图 4 温度分布 Fig. 4 Temperature distribution |
$ \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b}, \boldsymbol{A} \in \mathbf{R}^{(n-1)^{2} \times(n-1)^{2}}, \boldsymbol{x}, \boldsymbol{b} \in \mathbf{R}^{(n-1)^{2}}。$ |
取n=100, m=10截断指标q0=9时,用WIGMRES(m)求解二维泊松方程的数值解如图 4(b)所示,根据图 4可知,数值解与精确解一致,因此说明算法WIGMRES(m)的正确性。
取n=50, q0=5时,且m在4~14内取值,当重启动参数取不同的值时,GMRES(m)算法、WGMRES(m)算法和WIGMRES(m)算法的数值结果如表 1、2所示,当参数m发生变化时,GMRES(m)算法的迭代次数最多,WGMRES(m)算法次之,WIGMRES(m)算法最少且WIGMRES(m)算法的计算精度最高,由此证明WIGMRES(m)算法在保证精度的情况下计算效率大大提高。
![]() |
表 1 m取不同值时三种算法的迭代次数比较 Tab. 1 Comparison of the number of iterations of the three algorithms with different values of m |
![]() |
表 2 m取不同的值时三种算法的计算精度比较 Tab. 2 Comparison of the calculation accuracy of the three algorithms with different values of m |
取n=40, q0=5,且m在6~18内取值,执行WIGMRES(m)和WGMRES(m)两种算法,当重启动参数m取不同值,得到两种算法的迭代时间和迭代次数变化(图 5、6)。根据图 5、6可知,新算法WIGMRES(m)更加稳定,且以较高的精度快速收敛。当m=10时,不同网格下的两种算法的计算时间如表 3所示,表格显示随着n的不断增大,相同网格下,WIGMRES(m)算法总比WGMRES(m)算法的计算时间少,由此说明,WIGMRES(m)算法的优越性。
![]() |
图 5 两种算法迭代次数的比较 Fig. 5 Comparison of the number of iterations of the two algorithms |
![]() |
图 6 两种算法迭代时间的比较 Fig. 6 Comparison of iteration time of two algorithms |
![]() |
表 3 不同网格下两种算法计算时间的比较(m=10) Tab. 3 Comparison of calculation time of two algorithms on different grids (m=10) |
本文在WGMRES(m)算法的基础上,通过采用截断技术,提出WIGMRES(m)新算法,并证明该算法的收敛性。通过数值算例证明WIGMRES(m)新算法得出的结果与精确解十分吻合,证明了该算法的有效性。同时当参数m取不同值时三种算法的迭代次数和计算精度的变化情况,以及WIGMRES(m)和WGMRES(m)两种算法对计算效率和计算精度的影响,结果表明新算法在计算效率和计算精度方面均有很大提高。
[1] |
SAAD Y, SCHULTZ M H. GMRES: a generalized minimal residual algorithm for solving nonsymmetric linear systems[J]. SIAM journal on scientific and statistical computing, 1986, 7(3): 856-869. DOI:10.1137/0907058 ( ![]() |
[2] |
王人鹏, 沈祖炎, 钱若军. 应用Krylov子空间方法求解边界元方程组[J]. 同济大学学报(自然科学版), 1997, 25(2): 212-217. WANG R P, SHEN Z Y, QIAN R J. Solutions of BEM equations with Krylov subspace method[J]. Journal of tongji university (natural science edition), 1997, 25(2): 212-217. ( ![]() |
[3] |
于春肖, 申光宪. 规划-迭代型弹塑性摩擦接触多极边界元法[J]. 计算力学学报, 2008, 25(1): 65-71. YU C X, SHEN G X. Program-iteration pattern fast multipole BEM for elasto-plastic contact with friction[J]. Chinese journal of computational mechanics, 2008, 25(1): 65-71. ( ![]() |
[4] |
WANG H T, YAO Z H. A new fast multipole boundary element method for large scale analysis of mechanical properties in 3d particle-reinforced composites[J]. CMES computer modeling in engineering & sciences, 2005, 7(1): 85-95. ( ![]() |
[5] |
陈泽军, 肖宏. 预条件GMRES(m)法迭代求解大规模边界元弹性问题[J]. 固体力学学报, 2006, 27(S1): 50-55. CHEN Z J, XIAO H. Iterative solution of large-scale BEM elasticity problems using the preconditioned GMRES(m) technique[J]. Acta mechanica solida sinica, 2006, 27(S1): 50-55. ( ![]() |
[6] |
BAGLAMA J, CALVETTI D, GOLUB G H, et al. Adaptively preconditioned GMRES algorithms[J]. SIAM journal on scientific computing, 1998, 20(1): 243-269. DOI:10.1137/S1064827596305258 ( ![]() |
[7] |
段文洋, 刁峰, 陈纪康. 预条件GMRES(m)算法在大型浮体水动力边界元分析中的应用[J]. 哈尔滨工程大学学报, 2013, 34(11): 1363-1368. DUAN W Y, DIAO F, CHEN J K. Application of preconditioned and restarted GMRES to the boundary element analysis of large floating structures[J]. Journal of Harbin engineering university, 2013, 34(11): 1363-1368. ( ![]() |
[8] |
孙蕾, 管勇. 右端多项式预处理GMRES算法[J]. 科学技术与工程, 2009, 9(14): 4119-4121. SUN L, GUAN Y. Right polynomial preconditioned GMRES[J]. Science technology and engineering, 2009, 9(14): 4119-4121. DOI:10.3969/j.issn.1671-1815.2009.14.039 ( ![]() |
[9] |
于春肖, 穆运峰. 预条件广义极小残余新算法[J]. 数学理论与应用, 2005, 25(2): 38-42. YU C X, MU Y F. Preconditioning generalized minimal residual algorithm[J]. Mathematical theory and application, 2005, 25(2): 38-42. ( ![]() |
[10] |
杨圣炜, 卢琳璋. 一种加权的simpler GMRES算法[J]. 厦门大学学报(自然科学版), 2008, 47(4): 484-488. YANG S W, LU L Z. A weighted simpler GMRES[J]. Journal of Xiamen university (natural science), 2008, 47(4): 484-488. DOI:10.3321/j.issn:0438-0479.2008.04.006 ( ![]() |
[11] |
仲红秀, 吴鑫斌. 一种加权块simpler GMRES算法及应用[J]. 重庆师范大学学报(自然科学版), 2019, 36(3): 78-84. ZHONG H X, WU X B. A weighted block simpler GMRES algorithm and its applications[J]. Journal of Chongqing normal university (natural science), 2019, 36(3): 78-84. ( ![]() |
[12] |
YU C X, REN C H, BAI X T. VRP-GMRES(m) iteration algorithm for fast multipole boundary element method[J]. Mathematical and computational applications, 2016, 21(4): 49. DOI:10.3390/mca21040049 ( ![]() |
[13] |
YU C X, BAI X T, ZHANG D. GMRES(m) algorithm with variable restart parameter[J]. ICIC express letters part B, 2015, 6(7): 1747-1753. ( ![]() |
[14] |
郝雪景, 于春肖, 任翠环. 基于不完全正交的VRP-IGMRES(m)算法[J]. 河北大学学报(自然科学版), 2018, 38(5): 460-465. HAO X J, YU C X, REN C H. VRP-IGMRES(m) algorithm based on incomplete orthogonalization[J]. Journal of Hebei university (natural science edition), 2018, 38(5): 460-465. DOI:10.3969/j.issn.1000-1565.2018.05.003 ( ![]() |
[15] |
JIA Z X. On IOM(q): the incomplete orthogonalization method for large unsymmetric linear systems[J]. Numerical linear algebra with applications, 1996, 3(6): 491-512. DOI:10.1002/(SICI)1099-1506(199611/12)3:6<491::AID-NLA87>3.0.CO;2-9 ( ![]() |
[16] |
贾仲孝. 解非对称线性方程组的不完全广义最小残量法[J]. 中国科学(A辑), 1998, 28(8): 694-702. JIA Z X. Incomplete generalized minimum residual method for solving asymmetric linear equations[J]. Chinese science: series A, 1998, 28(8): 694-702. ( ![]() |
[17] |
ESSAI A. Weighted FOM and GMRES for solving nonsymmetric linear systems[J]. Numerical algorithms, 1998, 18(3/4): 277-292. DOI:10.1023/A:1019177600806 ( ![]() |