摘要 针对ICCG算法中的关键步骤,提出了快速有效的计算技巧,以利于实际应用。
关键词 大型稀疏方程组 不完全Cholesky共轭梯度法 解 实现
中国图书资料分类法分类号 O241.6+P631.34
ICCG METHOD FOR SOLVING LARGE SPARSE EQUATIONS AND ITS COMPUTER PROGRAMMING
Wu Xiaoping Xu Guoming Li Shican
(University of Science and Technology of China)
Abstract In this paper,an efficient method for the computation of critical step in ICCG iteration is put forward,and some necessary programs (in Fortran) are developed for sake of the practical application.
Keywords Large sparse equations;Incomplete Cholesky conjugate gradient(ICCG);resolution;implement
1 引言
随着数值计算及计算机技术的发展,三维复杂结构的地球物理反演解释渐渐成为可能。不过研究中发现,三维正演计算的低效率是其主要的障碍。因为正演是反演的基础,且反演中的大部分计算量在正演计算上;而地球物理三维正演一般无解析解可寻,只能利用诸如有限差分、有限元等方法求得数值解,最后都是归结为解大型稀疏线性方程组问题:
Ax=b。
(1)
这里A一般为大型稀疏带状对称正定矩阵,正演的关键正是解此大型方程组。近年来利用不完全Cholesky共轭梯度(ICCG)迭代方法解大型稀疏线性系统取得较好效果[1,2],应用于地球物理三维正演计算极具潜力[3]。吴小平和徐果明[4,5,6]将ICCG方法应用于点源二、三维地电场的有限差分计算,同时引入系数矩阵按行索引一维稀疏存储模式,无论内存需求和计算速度方面均获较大成功。上述诸文对ICCG算法理论与方法的探讨详多。然而由于一维稀疏存储模式的引入使得编程颇为复杂,所以实际的计算机实现还是具有相当的难度并且也鲜有文献做这方面的讨论。正是基于这种情况,本文针对ICCG算法中的关键步骤,提出了快速有效的计算技巧,以期对ICCG算法的实现有更大帮助。
2 ICCG方法
解(1)式线性系统的ICCG方法在文献[4]、[5]、[6]中均有详细描述,这里直接给出其迭代过程如下:
令r0=b-Ax0,p0=(CCT)-1r0,则

(2)
i=0,1,2,…。
其中C为下三角矩阵,是Meijerink and Van[1]提出的不完全Cholesky分解因子。分解如下:
A≈CCT。
(3)
除对角元素不一样外,矩阵C与A下三角阵的非对角元素完全一样,当然它们也有完全一样的稀疏性。所以矩阵C的计算非常简单快速,且无需开辟另外的空间来存储矩阵C,详见文献[4]、[5]、[6]。
3 ICCG方法的计算机实现
3.1 大型稀疏矩阵按行索引的一维稀疏存储模式
按行索引的一维稀疏存储模式只要求存储系数矩阵A的非零元素,而无需存储带宽内的大量零元素,大大节省了存储空间。
为描述矩阵AN×N,要求建立两个一维数组sa和ija。sa是一实型数组,ija是一整型数组。存储原则如下:
a. sa的前N个元素按顺序存储矩阵A的对角元素,包括零对角元素。这并不增加多少存储量,且多数实际问题中系数矩阵A的对角元素是非零的。
b. ija的第一个元素总等于N+2。读出ija的第一个元素则可确定N的值。
c. 从元素ija(2)到ija(N+1)的值由各行中不为零的非对角元素的个数决定;要求满足ija(i+1)-ija(i)等于第i行中不为零的非对角元素的个数,其中i=1,2,…,N。
d. ija(N+1)是矩阵A最后一行的最后一个不为零的非对角元素在sa中的顺序值加1。因此读取ija(N+1)可确定矩阵A中非零元素的个数或数组sa和ija的维长。sa(N+1)是没用的,可设置成任意值。
e. 在sa大于等于N+2的元素中按行顺序存储矩阵A的非对角元素值,在同一行中则按从小到大的列顺序排列。
f. 在ija大于等于N+2的元素中存储对应sa中元素的列号。
这一规则初看象是任意的,实际上是非常巧妙的存储方法,只要求2倍非零元素个数的存储量。例如,某一矩阵A为:

按以上存储原则,矩阵A由两个一维数组sa和ija描述如表1所示。
表1 描述矩阵A的一维数组sa和ija表
| 顺序k | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| ija(k) | 7 | 8 | 8 | 10 | 11 | 12 | 3 | 2 | 4 | 5 | 4 |
| sa(k) | 5. | 6. | 7. | 0. | 8. | x | 1. | 3. | 2. | 5. | 7. |
表1中x是一任意数。按存储原则,N的值是ija(1)-2等于5,每个数组长度是ija(ija(1)-1)-1等于11。 如应用于点源三维地电场的有限差分正演计算[5,6],其最后形成线性方程组的系数矩阵为7对角的大型稀疏对称正定带状矩阵,即每行最多只有7个非零元素。用按行索引一维稀疏存储模式存储其下三角矩阵中的非零元素,维长不超过4N,较之直接方法的二维带状压缩存储量N×Nd(Nd为半带宽)要小得多,且随着网格的增大,这种优势尤为显著。 3.2 计算Ap 从(2)式可见,整个计算流程要求矩阵A与一个列向量p的乘积Ap,而矩阵A中各行的零元素对于A与一个列向量的乘积是没有贡献的。因此由上述一维存储sa和ija不难求得矩阵A与任意一个列向量的乘积。 3.3 计算(CCT)-1r 在(2)式的计算流程中,另一个关键步骤是如何快速地计算出(CCT)-1与任一向量r的乘积(CCT)-1r。直接计算(CCT)-1是困难的,又因为矩阵C是以稀疏存储模式存储的,使得实际的编程颇为复杂,还未有文献做这方面的讨论。 我们令v=(CCT)-1r, 则 (CCT)-1v=r, 变换为解线性方程组求v。注意到C是下三角矩阵,CT是上三角矩阵,可先令 Cy=r, 由顺代容易求得y; CTv=y, 由回代最后求得v。 4 结论 一般问题的数值计算方法如有限差分、有限元在理论上是成熟的,关键是解最后形成的大型稀疏方程组。对于点源地电三维问题,要使求解的场值达到较高精度,就需要更密的网格剖分,显然利用直接方法求解在目前的微机条件下是困难的[7],这也是国内这方面的工作才初步展开的原因。通过对不完全Cholesky共轭梯度算法的理论方法及其计算机实现等多方面的探讨[5,6],相信其以速度快及内存要求少的优势,必然会在地球物理三维正、反演大型数值问题中得到越来越广泛的应用。 *中国科技大学青年科学基金资助项目(KA0712) 参考文献 1 Meijerink J A,Van Der Vorst H A.An Iterative Solution Method for Linear System of Which the Coeficient Martrix is a Symmetric M-Matrix.Math.Comp,1977;31:148~162 |
煤炭网版权与免责声明:
凡本网注明"来源:煤炭网www.coal.com.cn "的所有文字、图片和音视频稿件,版权均为"煤炭网www.coal.com.cn "独家所有,任何媒体、网站或个人在转载使用时必须注明"来源:煤炭网www.coal.com.cn ",违反者本网将依法追究责任。
本网转载并注明其他来源的稿件,是本着为读者传递更多信息的目的,并不意味着本网赞同其观点或证实其内容的真实性。其他媒体、网站或个人从本网转载使用时,必须保留本网注明的稿件来源,禁止擅自篡改稿件来源,并自负版权等法律责任。违反者本网也将依法追究责任。 如本网转载稿件涉及版权等问题,请作者在两周内尽快来电或来函联系。
网站技术运营:北京真石数字科技股份有限公司、喀什中煤远大供应链管理有限公司、喀什煤网数字科技有限公司
总部地址:北京市丰台区总部基地航丰路中航荣丰1层
京ICP备18023690号-1 京公网安备 11010602010109号
