條件數、穩定性與向後誤差分析

向後誤差分析(backward error analysis)

/ Wilkinson: WIL-kin-sun /

在 1950 年代以前,分析捨入誤差意味著追著每一個微小誤差在計算中往前跑,眼看著誤差界膨脹成毫無用處的東西——對那些實際上跑得好好的計算預言出災難。詹姆斯·威爾金森(James H. Wilkinson)在英國國家物理實驗室操作早期電腦時,把問題反過來問,這個領域於是重生。他的想法是:不要追蹤誤差如何在答案中累積;而是透過證明「算出的結果是某個稍受擾動之輸入的精確答案」,把所有捨入一次交代清楚。

向後誤差分析就是界定演算法向後誤差的技術。你證明一個形如此的陳述:算出的 y-hat 恰好等於 f(x + delta-x),其中 delta-x 的相對大小至多是單位捨入的某個適度倍數。其精妙在於,它把舊式向前分析無望糾纏在一起的兩件事乾淨地分開——「演算法」的品質(由向後誤差掌握)與「問題」的難度(由條件數掌握)。把兩者相乘就得到向前誤差;分開分析則各自變得可處理。

這種重新表述是科學計算中最重要的概念進展之一,也是威爾金森在 1970 年獲得圖靈獎的原因。它解釋了為什麼高斯消去法——長期被天真的向前界限視為無望地不準確——其實是可靠的:因為它向後穩定。這個教訓歷久彌新——評斷一個數值方法時,先證明向後誤差界,再把它和條件性結合來讀出準確度。單靠向前界限往往過於悲觀且沒有資訊量。

威爾金森證明,n 項的浮點內積累加,其向後誤差受到約 n 倍單位捨入的界限:算出的和正是「稍受擾動之輸入」的精確和。這單一結果撐起了由內積構成的矩陣分解的穩定性證明。

一條向後誤差引理,反覆用來認證一整族演算法。

向後誤差分析界定的是演算法,不是答案。要得到向前誤差,你仍須乘以條件數;向後穩定的方法用在病態問題上,答案依然不準。

又称
backward analysis向後分析Wilkinson analysis