基礎:演算法、近似與誤差

截斷誤差

截斷誤差是你把無窮或連續的數學過程,砍成有限、可計算的過程時所犯的誤差——精確數學運算,與你拿來取代它的有限程序之間的差。它是方法本身的誤差,即使在完全沒有捨入的完美機器上也存在。

每當你在幾項後停下一個無窮和,或用有限步長近似取代一個極限時,它就出現。泰勒定理是常用的視角:用 f(x) + h f'(x) 近似 f(x+h),你就丟掉了尾巴 h^2 f''(x)/2 + ...,故截斷誤差是 O(h^2)。前向差分 (f(x+h) - f(x))/h 估計 f'(x) 的誤差是 O(h);中心差分 (f(x+h) - f(x-h))/(2h) 更好,誤差是 O(h^2)。O(h^p) 中的指數 p 是精度階:p 越高,截斷誤差隨步長 h 縮小時消失得越快——把 h 減半,O(h^2) 的誤差就減為 1/4。

截斷誤差是你能靠設計控制的那一個:取更多項、用更小的步長、或選更高階的方法,它就可預測地下降。這使它成為最友善的誤差——但它並非獨居。一味縮小 h 不會一直有幫助,因為當 h 變得極小時捨入誤差會增大;兩者相互權衡,聰明的步長是平衡它們,而非盲目地把截斷誤差最小化。

用 (f(1+h) - f(1))/h 估計 f(x) = e^x 的 f'(1):h = 0.1 時誤差約 0.14(h 階),h = 0.01 時約 0.014——h 縮小十倍,誤差縮小十倍,正如 O(h) 所預測。

把極限截短的誤差,以精度階所承諾的速率下降。

別把 h 推到零以消滅截斷誤差:低於某個最佳 h,有限算術的捨入誤差會接手,總誤差又再攀升。最佳步長是在截斷與捨入之間取得平衡。

又稱
discretization errormethod error截尾誤差