预备知识扰动
设方程组为Ax=b,系数矩阵A和常数向量b的扰动分别记为:和,则实际求解的方程组为。1
条件数求解线性方程组Ax=b时,设A是n阶非奇异矩阵,‖·‖为矩阵的任一种从属范数,则 ,称为矩阵A的条件数,其中 是A的逆矩阵。1
定义病态方程组是指因系数的很小改变却导致解改变很大的方程组。病态的另外一个解释是很大范围的解都能近似满足方程组。因为舍入误差会使系数有一些小的改变,那么对于病态方程组,这些人为的改变会导致解有很大的误差。2
表述一设方程组为Ax=b,系数矩阵A和常数向量b的扰动分别记为:和,如果和很小,而很大,则称方程组Ax=b为病态(ill-conditioned)方程组,称系数矩阵A为关于求解方程组或求逆的病态矩阵;反之,如果和微小时,也很微小,则称方程组Ax=b为良态(well-conditioned)方程组,称系数矩阵A为关于求解方程组或求逆的良态矩阵。病态方程组对任何算法都将产生数值不稳定性(如用LU分解法求解线性方程组时,更换主元有可能使解的精确度大大下降)。1
表述二求解线性方程组Ax=b时,设A是n阶非奇异矩阵,当条件数Cond(A)比较大时,A和b的小扰动会引起解的较大误差,所以条件数Cond(A)刻画了方程组Ax=b的性态。如果条件数比较大,就说方程组是“病态”的;如果条件数比较小,就说方程组是“良态”的;当然,病态和良态是相对的。1
典例设有方程组:
易得其精确解为 。
若常数项有一个扰动,得到方程组:
则其解为 。
可见A或b中元素的0.0001的微小变化会导致方程组解的巨大差异,这样的方程组就是“病态”方程组,可以利用范数来描述向量和矩阵的扰动误差。3
判断和发现对于病态的线性方程组,其求解自然要难于良态的方程组,或要采取特殊的方法才能求出有用的解。在求解以前,怎样判断和发现Ax=b是病态的呢?4
一般方法根据病态方程组的定义,可以通过计算条件数来判断。由于定义中涉及A ,故计算量太大而通常不被采用.人们经常利用的是估计条件数的方法。4
特殊情况在特殊情况下,可以依据下面出现的情况来判断:
(1)当det(A)相对来说很小或者A的某些行(或列)近似线性相关时,Ax=b可能是病态的;
(2)如果用选主元消去法求解Ax=b,在A的约化过程中出现小的主元,Ax=b可能是病态的;
(3)当解Ax=b时出现一个很大的解,Ax=b可能是病态的;
(4)当系数矩阵A的元素数量级相差很大,并且无一定规则时,Ax=b可能是病态的。4
四种处理原则若发现Ax=b可能是病态的.通常有四种处理原则:
采用高精度的算术运算如利用双倍字长进行计算,以便改善和减轻矩阵病态的影响,但计算时间将大大增加。4
采用预处理方法寻求非奇异矩阵P,Q,使求解Ax=b(设A为n维非奇异方阵)转化为求解 或,其中 ,且改善A的条件数 。于是,可先求解 ,再求解 。当A为对称正定矩阵时,一般选取P,Q为对角阵或三角阵。4
对病态线性方程组Ax=b进行预处理,如取P,Q为对角阵,称为平衡方法,即当系数矩阵A的元素数量级相差很大时,可采用行均衡或列均衡方法,这时矩阵A的条件数可能得到改善。所谓行均衡,是在解Ax=b之前,对A的每一行都乘以适当的数,使A所有的行按照某种范数大体上有相同的长度。4
设 非奇异,计算 ,令 于是,求解Ax=b化为求解 或 ,这时有 。4
采用特殊的数值解法采用某些特殊的数值方法求解。4
找病因改问题寻找出现病态的原因,改变原问题的提法。4