数值稳定性
在数值分析中,数值稳定性是一种希望得到的数值算法特性。根据算法的不同,稳定性的精确定义也有所不同,但是都与算法的精确性与正确性相关。
理论上有些计算下可以用多种代数上等价的理想实数或者复数算法来实现,但是实际上由于不同的数值稳定性可能会得到不同的结果。数值稳定性的一项任务就是选择強健(robust,即有良好数值稳定性)的算法。
前向、后向与混合稳定性
在数值线性代数中经常使用前向、后向以及混合稳定性的概念。
假设要用数值算法解决的问题是用函数 将数据 映射到解 ,通常算法的结果 会与“真”解 有一定的偏差。误差的来源主要有舍入误差、截断误差以及数据误差。算法的「前向误差」是结果与真解之间的差别,即 。「后向误差」是满足 的最小 ,也就是说后向误差说明算法的所解决的问题。前向误差和后向误差通过条件数发生关系:前向误差的幅度最多是条件数乘以后向误差的幅度。
在许多情况下,需要考虑相对误差
而不是绝对误差 。
如果对于任意的输入 来说后向误差都很小,那么算法就是「后向稳定」的。当然,“小”是一个相对的概念,需要根据所用的场合进行定义。通常要求误差要与单位舍入误差处于同一数量级,或是略大一些。
通常数值稳定性的定义是使用一个包括了前向误差与后向误差的更加宽泛的概念,称为「混合稳定性」。按照这个概念,如果一个算法是稳定的,那么存在 使得 与 都很小。因此,后向稳定算法永远是稳定的。
如果算法的前向误差除以条件数得到的结果很小,那么这个算法就是「前向稳定」的。这就意味着如果一个算法的前向误差与后向稳定算法的误差幅度类似那么就是前向稳定的。
数值微分方程的稳定性
上面的定义在截断误差不重要的情况下是很确切的。在微分方程等另外一些场合中,则需要另外的数值稳定性定义。
在数值常微分方程中,有不同的数值稳定性概念,如A稳定性等。它们通常与动力系统中的李雅普诺夫稳定性等稳定性概念相关。在解刚性方程的时候稳定方法的使用很重要。
在数值偏微分方程中有另外一种数值稳定性的定义。如果随着步长逐渐趋近于零,偏微分方程的数值解仍然保持有界,那么这个算法就是稳定的。拉克斯等价定理表明如果算法是一致稳定的,那么这个算法就会收敛。有时候将数值扩散考虑在内来实现稳定性。数值扩散是一个数学术语,它保证舍入误差以及其它误差在计算的过程中逐渐散去,而不会累积起来越变越大。
参考文献
- Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms, Society of Industrial and Applied Mathematics, Philadelphia, 1996. ISBN 0-89871-355-2.