數值穩定性
在數值分析中,數值穩定性是一種希望得到的數值算法特性。根據算法的不同,穩定性的精確定義也有所不同,但是都與算法的精確性與正確性相關。
理論上有些計算下可以用多種代數上等價的理想實數或者複數算法來實現,但是實際上由於不同的數值穩定性可能會得到不同的結果。數值穩定性的一項任務就是選擇強健(robust,即有良好數值穩定性)的算法。
前向、後向與混合穩定性
在數值線性代數中經常使用前向、後向以及混合穩定性的概念。
假設要用數值算法解決的問題是用函數 將數據 映射到解 ,通常算法的結果 會與「真」解 有一定的偏差。誤差的來源主要有捨入誤差、截斷誤差以及數據誤差。算法的「前向誤差」是結果與真解之間的差別,即 。「後向誤差」是滿足 的最小 ,也就是說後向誤差說明算法的所解決的問題。前向誤差和後向誤差通過條件數發生關係:前向誤差的幅度最多是條件數乘以後向誤差的幅度。
在許多情況下,需要考慮相對誤差
而不是絕對誤差 。
如果對於任意的輸入 來說後向誤差都很小,那麼算法就是「後向穩定」的。當然,「小」是一個相對的概念,需要根據所用的場合進行定義。通常要求誤差要與單位捨入誤差處於同一數量級,或是略大一些。
通常數值穩定性的定義是使用一個包括了前向誤差與後向誤差的更加寬泛的概念,稱為「混合穩定性」。按照這個概念,如果一個算法是穩定的,那麼存在 使得 與 都很小。因此,後向穩定算法永遠是穩定的。
如果算法的前向誤差除以條件數得到的結果很小,那麼這個算法就是「前向穩定」的。這就意味着如果一個算法的前向誤差與後向穩定算法的誤差幅度類似那麼就是前向穩定的。
數值微分方程的穩定性
上面的定義在截斷誤差不重要的情況下是很確切的。在微分方程等另外一些場合中,則需要另外的數值穩定性定義。
在數值常微分方程中,有不同的數值穩定性概念,如A穩定性等。它們通常與動力系統中的李雅普諾夫穩定性等穩定性概念相關。在解剛性方程的時候穩定方法的使用很重要。
在數值偏微分方程中有另外一種數值穩定性的定義。如果隨着步長逐漸趨近於零,偏微分方程的數值解仍然保持有界,那麼這個算法就是穩定的。拉克斯等價定理表明如果算法是一致穩定的,那麼這個算法就會收斂。有時候將數值擴散考慮在內來實現穩定性。數值擴散是一個數學術語,它保證捨入誤差以及其它誤差在計算的過程中逐漸散去,而不會累積起來越變越大。
參考文獻
- Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms, Society of Industrial and Applied Mathematics, Philadelphia, 1996. ISBN 0-89871-355-2.