热门问题
时间线
聊天
视角
數值穩定性
来自维基百科,自由的百科全书
Remove ads
在數值分析中,數值穩定性是一種希望得到的數值算法特性。根據算法的不同,穩定性的精確定義也有所不同,但是都與算法的精確性與正確性相關。
理論上有些計算下可以用多種代數上等價的理想實數或者複數算法來實現,但是實際上由於不同的數值穩定性可能會得到不同的結果。數值穩定性的一項任務就是選擇強健(robust,即有良好數值穩定性)的算法。
前向、後向與混合穩定性
在數值線性代數中經常使用前向、後向以及混合穩定性的概念。

假設要用數值算法解決的問題是用函數將數據映射到解,通常算法的結果會與「真」解有一定的偏差。誤差的來源主要有捨入誤差、截斷誤差以及數據誤差。算法的「前向誤差」是結果與真解之間的差別,即。「後向誤差」是滿足的最小,也就是說後向誤差說明算法的所解決的問題。前向誤差和後向誤差通過條件數發生關係:前向誤差的幅度最多是條件數乘以後向誤差的幅度。
在許多情況下,需要考慮相對誤差
而不是絕對誤差。
如果對於任意的輸入來說後向誤差都很小,那麼算法就是「後向穩定」的。當然,「小」是一個相對的概念,需要根據所用的場合進行定義。通常要求誤差要與單位捨入誤差處於同一數量級,或是略大一些。

通常數值穩定性的定義是使用一個包括了前向誤差與後向誤差的更加寬泛的概念,稱為「混合穩定性」。按照這個概念,如果一個算法是穩定的,那麼存在使得與都很小。因此,後向穩定算法永遠是穩定的。
如果算法的前向誤差除以條件數得到的結果很小,那麼這個算法就是「前向穩定」的。這就意味着如果一個算法的前向誤差與後向穩定算法的誤差幅度類似那麼就是前向穩定的。
Remove ads
數值微分方程的穩定性
上面的定義在截斷誤差不重要的情況下是很確切的。在微分方程等另外一些場合中,則需要另外的數值穩定性定義。
在數值常微分方程中,有不同的數值穩定性概念,如A穩定性等。它們通常與動力系統中的李雅普諾夫穩定性等穩定性概念相關。在解剛性方程的時候穩定方法的使用很重要。
在數值偏微分方程中有另外一種數值穩定性的定義。如果隨着步長逐漸趨近於零,偏微分方程的數值解仍然保持有界,那麼這個算法就是穩定的。拉克斯等價定理表明如果算法是一致的,且是穩定的,那麼這個算法就會收斂。有時候將數值擴散考慮在內來實現穩定性。數值擴散是一個數學術語,它保證捨入誤差以及其它誤差在計算的過程中逐漸散去,而不會累積起來越變越大。
例子
根號2的計算(大約是1.41421)是適定性問題。許多演算法會用起始的近似值x0開始,最後收斂到,例如選x0 = 1.4,接著薒計算x1, x2等。其中一個方法是著名的巴比倫法,公式為xk+1 = (xk+ 2/xk)/2。另一個方法,先稱為X方法,公式是xk+1 = (xk2 − 2)2 + xk。[註 1]以下是一些迭代後的結果,初始值x0分別是1.4和1.42。
不論初始值為何,巴比倫法都可以快速收斂。而X方法在初始值x0 = 1.4時收斂,但收斂很慢,而在初始值為1.42時會發散。因此巴比倫法具有數值穩定的特性,而X方法沒有。
數值穩定性也會受計算時有效位元的個數所影響。假設有電腦可以保持四位的有效數字,以下二個定效的函數可以說明有效位丟失(loss of significance)的問題
- 和
- 比較以下兩個結果
- 和
比較上述二個結果,可以看到第一式的有效位丟失(原因是來自兩個相近數字和近似值相減後帶來的災難性抵消),這對結果造成很大的影響,而這兩個函數其實是等效的
若用無限精度計算,其數值是11.174755...[註 2]。
Remove ads
相關條目
腳註
參考資料
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads