局部截斷誤差(local truncation error)
想像一位完美的弓箭手,在一步的起點被給予「精確的真實位置」,然後用方法的公式射出一箭。假設這之前的一切都毫無瑕疵,這單獨一箭在一步之後偏離真解多遠?這個從完美正確起點量起的一步偏差,就是局部截斷誤差。它把「方法被套用一次」造成的損害孤立出來,不被累積的歷史攪混。
精確地說,把「精確解」y(t) 代入方法的更新式,看這個更新式在一步之內未能重現它的程度有多糟。對前向歐拉法,更新式預測 y(t) + h*f(t, y(t));真正的下一值是 y(t+h)。泰勒展開給出 y(t+h) = y(t) + h*y'(t) + (h^2/2)*y''(t) + ...,又因 y'(t) = f,差約為 (h^2/2)*y''(t)。所以每步的局部誤差是 O(h^2):把 h 減半,單獨一步的誤差就降為四分之一。這個每步誤差中 h 的領導次方,定義了方法的階:前向歐拉法 O(h^2) 的局部誤差使它成為一階方法(階比局部誤差的次方少一,理由見全域誤差條目)。
關鍵的誠實之處在於「局部」與「全域」誤差的差別。局部截斷誤差是「孤立一步」的失誤;它看起來很小(歐拉法為 O(h^2))。但你大約要走 1/h 步才能跨過一段固定時間,這些誤差會累積並部分放大,所以你最終真正看到的「全域」誤差比它差一個 h 次方,歐拉法為 O(h)。永遠要問一句話指的是哪一個:一個方法的每步誤差可能很漂亮,端到端的準確度卻謙遜得多。
對 y' = y 在 t = 0(y = 1),一步大小為 h 的前向歐拉預測 1 + h。真值是 e^h = 1 + h + h^2/2 + h^3/6 + ...。局部截斷誤差為 e^h - (1 + h) = h^2/2 + ...。當 h = 0.1 時是 0.005;h = 0.05 時是 0.00125,小了四倍——印證每步 O(h^2) 的縮放。
歐拉法一步乾淨的偏差是 O(h^2);全域偏差再差一個次方。
常見的失誤是把每步 O(h^2) 的誤差稱為「二階」。方法的「階」指的是「全域」誤差,歐拉法為 O(h),所以歐拉法是一階。局部誤差次方減一等於階。