數值積分與數值微分

理查森外推(Richardson extrapolation)

/ RICH-erd-son /

假設你算出的每個估計都帶有一個誤差,而這誤差會隨著步長縮小以已知、可預測的方式遞減——比方說每把步長減半,誤差大致變成四分之一。那麼兩個不同步長下的估計就含有足夠的資訊去「推算出」並扣掉大部分誤差,產生一個遠勝於兩個輸入的數。理查森外推正是這個技巧:把便宜的低階估計組合起來,製造出一個高階估計。

引擎如下。設方法 A(h) 近似真值 L,其誤差展開為 A(h) = L + c h^p + (更高階項)。在兩個步長下計算 A(h) 與 A(h/2)。它們的誤差分別是 c h^p 與 c (h/2)^p = c h^p / 2^p。組成加權組合 (2^p A(h/2) - A(h)) / (2^p - 1):c h^p 項被設計成恰好抵消,留下的誤差是下一個更高的階。對中心差分導數 p = 2,於是組合 (4 A(h/2) - A(h)) / 3 把精度從 O(h^2) 躍升到 O(h^4)。對這些新的高階估計再做一次抵消,你就爬上一整座精度的階梯——龍貝格積分正是這樣把樸實的梯形法則變成高階求積。

理查森外推是數值分析中最強大、最可重複利用的觀念之一:它幾乎免費(幾個算術運算),卻能把遲緩的方法提升好幾階。誠實的細節是:它「仰賴」所假設的誤差展開正確:方法必須真的有 c h^p + ... 形式(偶次方或已知次方)的誤差,且函數必須夠光滑,使那些更高階導數存在。若被積函數有折角或奇異點,或捨入誤差已汙染了估計,假設的展開就會破裂,外推反而可能把事情弄糟而非變好。

e^x 在 0 的中心差分導數(真值 1)。h = 0.2 時 A(h) = 1.006716;h = 0.1 時 A(h/2) = 1.001668。理查森組合 (4 * 1.001668 - 1.006716)/3 = 1.0000857,誤差 9e-5——而兩個輸入的誤差分別是 2e-3 與 1.7e-3。一次相減就把 O(h^2) 提升到 O(h^4)。

兩個粗略估計組合成一個精準得多的估計。

權重 2^p 與因子 2^p - 1 唯有在領頭誤差真的是你假設的 p 階、且下一項確實是更高階時才正確。用錯 p,或把它套用在誤差展開含奇次方或有奇異點之處,你就抵消了錯誤的東西。

又称
extrapolation to the limitdeferred approach to the limit外推至極限