张衡,郑汉垣
(1. 福建技术师范学院 a.无损检测技术福建省高等学校重点实验室;b.电子与信息工程学院,福建福清350300;2.龙岩学院传播与设计学院,福建龙岩364012)
大规模病态(高条件数)稀疏线性方程组常常来自偏微分方程大规模数值求解问题[1,2],该方程组的条件数往往随着问题规模的增加而增加[3],成为求解效率和精度的制约因素,因此,在迭代求解之前,使用预处理方法来减少方程组的病态,成为提高求解效率和精度的必要措施.“预处理技术”是指在求解方程组
预条件子的构造一直是难题,对病态问题缺乏科学研究是主要原因之一.目前关于病态机理和预处理原理的研究鲜见有成果发表.
文献[6]针对二维泊松方程边值问题的五点差分方程,研究了病态结构和病态因子,提出用去病因子消除原发病态的方法.文章研究二维泊松方程边值问题九点差分方程的病态问题,基于结构分析的策略[6-9],研究病态结构,分离出该方程的病态因子、给出去病因子.通过与五点差分方程比较,说明去病因子的通用性.
1.1 病态因子和去病因子
定义1 设β>α,α,β是整数,Z 是α×β矩阵,如果ZZTT可逆,Cond(Z ZTT)是阶数α的增函数.则Z 称为α×β病态因子.
定义2 对于定义1中α×β的病态因子Z ,如果有可逆矩阵H 满足:ZZT=HHT,则称矩阵H 为属于Z的去病因子[6].
命题1[6]设Z 是α×β病态因子,矩阵H 为属于Z 的去病因子,则对于任意β阶正定对称矩阵P,有
1.2 矩阵的病态结构
定义3 称可逆矩阵A的如下结构为病态结构:
在定义3中,ZPZTT为A 的主体,所以Cond(A) ≈ Cond(Z PZT).Q对 病 态的影响很小.
定义4 在定义3中,由病态因子表达的病态称为原发性病态,其他因素表达的病态称为继发性病态.
1.3 基于病态结构的预处理
如果A有(3)式的病态结构,则根据命题1结论1),可以利用病态因子的条件数,估计方程组的病态;根据命题1结论2),属于Z的去病因子H可以抑制或者消除的作用,即消除原发性病态.
事实上,如果A具有(3)式的病态结构,使用去病因子H作为预条件子,则方程(1)化成
因为Cond(P)关于A的阶数一致有界,因此,HHTT是最优预条件子[5].
综上所述,提出如下基于病态结构的预处理策略:
1)通过结构分析,分离出病态因子,确定病态结构;
2)针对病态因子,确定去病因子;
3)去病因子是最优预条件子.
注1:不同的分析方法,可能得到不同的病态因子,同一个病态因子,也可以有不同的去病因子;病态因子的选择,应有利于计算条件数和得到去病因子,去病因子的选择,应有利于降低预处理成本.
基于病态结构的预处理策略,是针对病因的,病态因子就是病因,去病因子可以抑制病因发作.与此相比,以往的预处理方法主要是针对病症而不是病因,所以效果有限,难以通用.
依据上述预处理策略,确定病态因子和去病因子是预处理的关键,本文将针对二维泊松
使用有限差分方法,求解二维泊松方程边值问题[4]91-98
2.1 非均匀网格的有限差分格式则
根据4阶精度的泰勒展开式,有
2.2 非均匀网格的有限差分方程
容易验证,由格式(6)确定的差分方程为
则向量uyx由边界条件和边界上的网格点确定,是已知的;格式(7)的矩阵形式如下
因此容易验证,由格式 (7)确定的差分方程为
3.1 两个病态因子及其去病因子
证明:1)验证即可;
证明:直接验证.证毕
命题5.
命题 5说明Zt是病态因子,命题 4说明Ht是Zt的去病因子,t∈{5,9}.
3.2 有限差分方程的病态结构与去病因子
3) 根据命题1的结论2)可得.证毕.
命题 5和 6结论 1)和 2)说明:式 (12)、(13)表达了At的病态结构,Zt是At的病态因子;命题 4说明:Ht是Zt的去病因子;命题 6结论3)说明:Ht是最优预条件子.
上述差分方程(9)、(11)都有(3)式的病态结的主要病态来自微分算子,病态因子是这些病态的表达,而去病因子则可以抑制或者消除这些病态.
基于病态结构的预处理策略是针对病因的,可以从根本上解决病态的主要问题.
病态因子及其去病因子有简单、确定、独立的结构,病态因子及其去病因子可以因数值方法的不同而有不同的形式,但是病态结构是类似的.
文献 [6]给出的差分方程与方程 (9)是 2阶精度的不同差分格式得到的不同的差分方程,有类似的病态结构,病态因子完全相同,因此去病因子也通用.
由命题1结论1),结论成立.证毕.
命题7 结论1)、2)分别说明,H9,H5可以作为方程(9)、(11)的预条件子,仍然是最优预条件子,所以H9,H5是通用的预条件子.
5.1 二维泊松方程边值问题有限差分网格方程的原发性病态,是微分算子造成的,差分方程的结构中包含表达这种病态的病态因子.基于病态结构的预处理策略,是针对这种病因的所采取的方法,可以从根本上抑制病态,并且使用的预条件子具有通用性.
5.2 与以往的预处理方法比较,基于病态结构的预处理策略,针对性强(针对病态因子),目标和效果明确(消除原发性病态,控制继发性病态),方法具有通用性.
5.3 病态因子和去病因子有稀疏、独立的结构,因此在预处理中,无须专门的存储,易于编程,不显著增加计算复杂度.
5.4 去病因子不唯一,而且是通用的,有利于根据实际问题和计算环境的具体需要(如并行计算等的需要),灵活设计.