數值穩定性

數值分析中,數值穩定性是一種希望得到的數值算法特性。根據算法的不同,穩定性的精確定義也有所不同,但是都與算法的精確性與正確性相關。

理論上有些計算下可以用多種代數上等價的理想實數或者複數算法來實現,但是實際上由於不同的數值穩定性可能會得到不同的結果。數值穩定性的一項任務就是選擇強健(robust,即有良好數值穩定性)的算法。

前向、後向與混合穩定性

數值線性代數中經常使用前向、後向以及混合穩定性的概念。

 
該圖顯示了前向誤差 、後向誤差 、它們與精確解 以及數值解 的關係

假設要用數值算法解決的問題是用函數 將數據 映射到解 ,通常算法的結果 會與「真」解 有一定的偏差。誤差的來源主要有捨入誤差截斷誤差英語Truncation error以及數據誤差。算法的「前向誤差」是結果與真解之間的差別,即 。「後向誤差」是滿足 的最小 ,也就是說後向誤差說明算法的所解決的問題。前向誤差和後向誤差通過條件數發生關係:前向誤差的幅度最多是條件數乘以後向誤差的幅度。

在許多情況下,需要考慮相對誤差

 

而不是絕對誤差 

如果對於任意的輸入 來說後向誤差都很小,那麼算法就是「後向穩定」的。當然,「小」是一個相對的概念,需要根據所用的場合進行定義。通常要求誤差要與單位捨入誤差英語Machine epsilon處於同一數量級,或是略大一些。

 
包括前向誤差與後向誤差概念的混合穩定性

通常數值穩定性的定義是使用一個包括了前向誤差與後向誤差的更加寬泛的概念,稱為「混合穩定性」。按照這個概念,如果一個算法是穩定的,那麼存在 使得  都很小。因此,後向穩定算法永遠是穩定的。

如果算法的前向誤差除以條件數得到的結果很小,那麼這個算法就是「前向穩定」的。這就意味着如果一個算法的前向誤差與後向穩定算法的誤差幅度類似那麼就是前向穩定的。

數值微分方程式的穩定性

上面的定義在截斷誤差不重要的情況下是很確切的。在微分方程式等另外一些場合中,則需要另外的數值穩定性定義。

數值常微分方程式中,有不同的數值穩定性概念,如A穩定性等。它們通常與動態系統中的李雅普諾夫穩定性等穩定性概念相關。在解剛性方程式的時候穩定方法的使用很重要。

數值偏微分方程式中有另外一種數值穩定性的定義。如果隨着步長逐漸趨近於零,偏微分方程式的數值解仍然保持有界,那麼這個算法就是穩定的。拉克斯等價定理英語Lax equivalence theorem表明如果算法是一致穩定的,那麼這個算法就會收斂。有時候將數值擴散英語Numerical diffusion考慮在內來實現穩定性。數值擴散是一個數學術語,它保證捨入誤差以及其它誤差在計算的過程中逐漸散去,而不會累積起來越變越大。

參考文獻

  • Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms, Society of Industrial and Applied Mathematics, Philadelphia, 1996. ISBN 0-89871-355-2.

相關條目