1. 引言
偏微分方程的数值求解问题,通常转化为离散系统——如
的线性方程组求解 [1] ,离散系统的病态(高条件数,
表示
的条件数)问题随着求解规模增加而更严重 [2] ,成为制约大规模求解效率和精度的瓶颈因素,因此,在求解过程中,使用适当的预条件子进行预处理,将离散系统化成条件数低、易求解的同解方程,是成功求解的关键 [3] [4] 。
目前关于病态问题以及预处理技术的理论和方法仍然不完善,缺乏对病因的研究,预条件子的设计、预处理效果的评价多用数值模拟的手段进行探索和验证 [5] - [11] ,产生的预处理方法使用范围小,可移植性差,难以找到通用的、最优的预条件子 [12] ,很多学者甚至认为不存在通用的预处理方法 [13] [14] [15] 。目前关于病态问题的病因研究鲜见有成果发表。
基于病因的结构分析方法 [16] [17] [18] [19] [20] ,本文提出离散系统病态问题的病因抑制方法:确定病因,精准抑制病因发作。
针对矩形区域上变分形式的二维泊松方程边值问题,使用有限元方法求解,分别基于三角剖分和四角剖分,使用Lagrange形函数产生的离散系统,是稀疏病态方程组。本文使用病因抑制方法解决该方程的病态问题,通过结构分析 [16] [17] [18] [19] [20] ,确定病态结构,分离出病态因子、构造去病因子。对于原发病态和继发病态,分别提出评估条件数的方法和预处理策略,定量分析以去病因子作为预条件子的预处理效果(有效性、低成本),说明了在几乎不显著增加计算量的情况下,预处理后的条件数关于离散系统规模一致有界,预处理后离散系统保持正定对称。
2. 病态问题的病因抑制方法
2.1. 病态因子与去病因子
定义1:如果矩阵
,
是整数,
可逆,
是阶数
的增函数。则称
为
病态因子。
定义2:对于定义1中的
病态因子
,如果有可逆矩阵
满足:
,则称矩阵
为属于
的去病因子 [16] 。
命题1 [16] :设
,
是
病态因子,
是
阶正定对称矩阵,则有
1).
,
2). 如果矩阵
为属于
的去病因子,则有
。
2.2. 矩阵的病态结构
定义3:可逆矩阵
的如下结构称为病态结构:
(1)
其中
,
,
,
是整数,
是
病态因子,
是
阶正定对称矩阵,
,
关于
的阶数一致有界,
是
的阶数
的增函数。称
为
的病态主体;也称
是
或者
的病态因子。
在定义3中,使用
代替
,相对误差为
,所以不妨认为
,
,
对病态的影响很小,根据命题1结论1),
,即可以利用病态因子的条件数,估计
的病态。
定义4:在定义3中,由病态因子表达的病态称为原发性病态,其他因素表达的病态称为继发性病态。
2.3. 病态问题的病因抑制方法
对于方程组
(2)
如果
有(1)式的病态结构,使用属于
的去病因子
作为预条件子,则方程(2)化成
(3)
其中
,
。
根据命题1结论2),在式(3)中,
这说明属于
的去病因子
抑制或者消除了病态因子
的作用,即消除了原发性病态。因为
关于
的阶数一致有界,因此,
是最优预条件子 [4] 。
综上所述,为解决方程(2)的病态问题,提出如下病因抑制方法:通过对病态矩阵
进行结构分析,分离出病态因子
,确定如(1)式的病态结构;一方面可以用病态因子
转置积的条件数评价
的病态程度;另一方面可以针对病态因子
(无须针对
)设计最优预条件子——去病因子
,用于消除
的原发性病态。
病因抑制方法的关键是确定病态因子。
2.4. 一个特别的病态因子及其去病因子
设
表示对角元素为矩阵
的块对角矩阵,记
是
维零向量,
,
是n阶正弦变换矩阵,
,
,
,
,
,
,
,
,
,
,则有
命题2:1).
;2).
;3).
。
证明:1). 记
是n阶单位矩阵,
是n阶三对角矩阵,
,
,则容易验证:
,
[21] ,因此
,
。证毕。
2). 根据命题2结论1),
的特征值为
,
,
。所以,
。证毕。
3). 记
,
,
,
,则容易验证:
,
,
,所以,
。结论成立。证毕。
命题3:对于任意
阶正定对称矩阵
,有
。
证明:根据命题1结论1)可得。证毕。
根据定义1、定义2和命题2,
是
病态因子;矩阵
是属于
的去病因子。
3. 二维泊松方程边值问题的Lagrange有限元离散系统
3.1. Lagrange有限元离散格式
使用有限元方法,求解如下变分形式的二维泊松方程边值问题 [22]
(4)
其中
,
,
,
,
,
。
对G做剖分:
,
,记
,
,
,
,
。
,
,
,
,则(4)式变成
(5)
取
为自然坐标 [23] ,
,在
上,做变换
,
及其逆变换
,
,记
,
,
,
,
,
,则直接验证可以得到
命题4:1)
;
2)
;
3)
;
证明:直接验证。证毕
3.1.1. 基于四角剖分的Lagrange有限元离散格式
在
上,取2次Lagrange形函数为:
,
,
,满足:
,
,
,
。
记
,
,
,
,
,
,
,
则有:
命题5:1).
;2).
;3).
;4).
;5).
。
证明:1),2),3). 利用形函数的归一性,即
[24] ,直接验证即得。
4). 只需验证
。
5).
,
。证毕
记
则有:
命题6:
,
。
证明:根据命题4和命题5结论2),3)可得。证毕
在
上,用
取代
,则得到问题(4)的基于四角剖分的有限元离散格式 [22] :
从而(5)式变成
(6)
3.1.2. 基于三角剖分的Lagrange有限元离散格式
将
剖分为两个三角形单元:以
为顶点的三角形单元记为
,以
为顶点的三角形单元记为
,上述变换下
为
的像,
为
的像,在
上取Lagrange形函数
,
,
是形函数的自然坐标,则有
,
[23] 。
记
,
,
,
,
,
,
,
,
,
,
,
,
则有:
命题7:1).
;2).
;
3).
;4).
;
5).
;
证明:1),2),利用形函数的归一性,即
[24] ,直接验证即得。
3) 根据1),可验证
4).
,容易验证
,所以结论成立。
5).
,利用结论3)即可验证。证毕
记
则有:
命题8:
,
。
证明:根据命题4和命题7结论2),3)可得。证毕
在
上,用
作为
的近似,则也可以得到问题(4)的基于三角剖分的有限元离散格式:
从而(5)式变成
(7)
3.2. 二次Lagrange有限元离散系统
记
,
,
,
,
,
,
,
,
,
,
,
,
,
,则有:
命题9:离散格式(6)的矩阵形式为:
(8)
(8)式中
,
,
。
证明:容易验证:
从而将问题(4)的离散格式(6)写成公式(8)。证毕
根据式(8),有
(9)
将(9)式中与边界网格点的值
相关的部分移到右端,就得到问题(4)基于四角剖分的有限元离散系统:
(10)
式(10)中,刚度矩阵为
(11)
类似地,可以根据离散格式(7)得到问题(4)基于三角剖分的有限元离散系统:
(12)
式(12)中
,
,
,
,
不论是三角剖分,还是四角剖分,离散系统的总刚度矩阵都具有式(1)的形式,这个形式有利于评估条件数,便于设计预条件子和算法。
4. 对有限元离散系统的病因抑制方法及其预处理效果
根据命题6、8,(10)和(12)式中,分别有
和
,所以在总刚度矩阵
和
中,
和
分别是
与
的主体,
,
;矩阵
和
的元素由
的振幅,以及网格大小决定,几乎不受
影响,所以
和
关于
与
的阶数都是一致有界的,根据定义1、3和命题2,(10)和(12)式分别说明了刚度矩阵
与
都具有(1)式的病态结构。
(10)和(12)式中,
和
对刚度矩阵的病态影响很小。根据命题3,由病态因子
表达的原发病态是离散系统的主要病态,
和
等表达的继发病态是散系统的次要病态,原发病态是微分算子造成的,是本质的,离散精度越高,刚度矩阵的阶数越大,刚度矩阵条件数就越大,原发病态越严重;继发病态来自数值方法和问题(4)本身,是非本质的,可以随着应用问题的不同而不同,可以在应用中调整。
综上所述,(10)和(12)说明,基于不同剖分的离散系统,有类似的病态结构和相同的病态因子
,即有相同的原发病态。
使用
的去病因子
作为预条件子,对方程(10)、(12)进行预处理,其中方程(10)化成
(13)
其中
,
。
根据命题1的结论2),有
,因此,
是最优预条件子 [5] 。
使用
的去病因子
作为预条件子,对方程(12)进行预处理,也有类似的结果。
有简单确定的结构,都是对角矩阵与离散正弦变换矩阵的直积的积,因此预条件子的构造以及预处理计算不会明显增加计算成本,其中预处理需要的计算是矩阵
与向量的乘积,相当于对向量实施快速离散正弦变换,每次需要的计算操作数为
,所以每个迭代步的计算量没有显著增加。预处理后,方程(13)的系数矩阵仍然是正定对称矩阵,所以仍然可以与经典Krylov子空间方法等求解方法相结合,形成预处理求解方法 [4] 。对方程(12)进行同样的预处理,也有类似的结果。
5. 例证
对于积分形式的二维泊松方程边值问题(4) [22] ,如果
,p为常数,取2次Lagrange形函数为:
,
,
,
,
,
,并取
,
,记
,
,
,则
,即预处理后,矩阵的条件数一致有界。
特别地,如果取
,则
,
,即预处理后,矩阵的条件数小于4,因此,去病因子
是最优的预条件子。
6. 结论
1) 二维泊松方程边值问题基于三角、四角剖分的Lagrange有限元离散系统虽然不同,其系数矩阵却有类似的病态结构,有相同的病态因子,它的病态由原发病态和继发病态组成,原发性病态是由微分算子引起的,由病态因子表达,是主要的、本质的,不受剖分方法影响,可以使用相同的去病因子进行预处理;继发病态是由数值方法和边值问题的系数函数引起,是次要的、非本质的,可以在应用中调整。
2) 去病因子是最优预条件子 [5] ,精准针对病态因子起作用,可消除原发性病态,几乎将矩阵的条件数降为常数,相当于精准地抑制了病态因子的致病作用。去病因子的特别结构,使得预处理过程基本不增加计算操作数,并且预处理后矩阵保持正定对称,有利于与其他求解方法结合。
3) 病态因子及其去病因子是相对独立的,与边值问题中函数p,q,f等没有关系,不论三角剖分,还是四角剖分,都不影响病态因子和去病因子,但是剖分方法、步长可以影响继发病态。
4) 去病因子的设计是针对病态因子(无须针对整个刚度矩阵),只要从刚度矩阵中分离出病态因子,就可以得到去病因子,因此去病因子的获取难度有限。
综上所述,与目前主流的预处理方法相比,本文提出的病因抑制方法,具有难度低,不增加计算成本,精准抑制原发病态等特点。
基金项目
国家自然基金资助项目(61473329, 61601125)。