高斯消去法的误差分析
两步法获得 解的误差界:
1) 向后误差分析
求解线性代数方程组
设计一个算法 , 求出一个数值解
数值解 ,相当于求解下面扰动后的方程:
其中 和 称为算法的 向后误差。
而 的界是我们希望界定的 计算误差。
2)利用扰动分析理论分析, 如前面得到的 ( 2.2 ) 和 ( 2.5 )。
- (2.3) 算出的误差界往往太大。
- ( 2.5 ) 更易计算, 在实践中更常使用。
本节的两个目标:
- 展示如何实施高斯消去法,使得向后误差 和 尽量小:
- 获得同时易于计算(cheapness)和紧致(tightness)的误差界。
- 紧致就是说算出的误差界尽量接近真实的误差。
- 易于计算和紧致的误差界可能不存在。
为什么要选主元?
给定一个矩阵, 这里用 4 位的十进制的浮点数表示,
易知 。
其中
其中 ( 大数吃小数 )
- 换成其它小的数, 分解的结果是一样的, 因为 。
- 这种现象称为 数值不稳定 ( numerical instability )。
- 取 , 用 分解求解 。
- 太大。
- , 而
- 列主元可以解决数值不稳定的问题。
注意 如果 分解过程中出现很大的量,则 中的元素减去这些量时, 就会出现大数吃小数的现象。
正式的高斯消去法误差分析
因为浮点数运算中舍入误差的存在, 用 分解算法来计算 会带来向 后误差 ,这个向后误差有两部分组成
- 分解算法带来的误差, 即 。
- 求解 带来的向后误差, 即 。
本小节就来分析这两种误差的界。
首先,分析 的元素 与 的元素 的差别。
首先,给定一个一般的 分解
上述三个矩阵的元素有如下的关系成立:
两个向量做内积运算,浮点运算结果满足如下的关系式 ( Question 1.10 ):
应用到关系式 ( 1 ), 可得:
其中 , 。
由上式解出
从而可以界定
对 做类似分析, 可得 其中 , 。 同样解出 , 其中 , 同样可得:
经过上述分析,可以得到如下结论:
再考虑求解 产生的向后误差, 可得(Question 1.11)
最终可得 误差界:
进而可得
如果要高斯消去法向后稳定,需要求 进而有
实践经验表明
- 主元增长因子
- 要比较小或者增长缓慢才能使得高斯消去法是向后稳定的。
估计条件数
- 估计条件数的关键是估计 。
- 直接计算 的计算复杂度为 。
- 避免直接计算 且代价更低的算法称为条件数估计子, 要具备如下性质
- 已经计算出 和 时,它的计算代价为。
- 估计子的大小为, 则其中 要小于 10, 相当于之差了一个 十进制位。
- 两个等式代表两种等价的计算方式。
- 但计算效率不等效。
- 是一个凸集。
- 是一个凸函数。
上述求极大值的问题可以用梯度上升法解决, 这个方法的关键是计算 。
因为有绝对值的存在,在零点处函数不可导,所以可假设
注意,这个假设是几乎总是成立的。
引入
可得
从而可得
算法 2.5 Hager's condition estimator returns a lower bound on :
- 初值取
定理 2.6
- 如果返回 ,则 是 的局部最大值 。
- 否则
证明:
目标是证明 是局部极大值点。易知在 附近, 是线性函数,则 有 其中 。取 ,
如果 。设 ,取 , 则
证毕。
估计相对条件数
或者估计 。
上面的两个估计问题,可以转化为相同的问题,即估计 , 其中 是一个元素非负的向量。
利用引理 1.7的第 5 个结论, 可知如果矩阵 的元素都是非负的, 则 可推出
引入对角矩阵, 则有 .
最后转化为
2.4.4 实用的误差界
课后作业
- 第一章 Question 1.10
- 第一章 Question 1.11