數值積分與數值微分

辛普森法則(Simpson's rule)

/ SIMP-sunz /

梯形法則假裝每條的頂邊是直線。但曲線通常會彎,直線追不上彎曲。辛普森法則做了顯然更好的事:它讓每條(雙倍寬)的頂邊是一條穿過三點的「拋物線」,能彎曲去貼合函數。光是把直線升級成拋物線,就換來精度的劇烈躍升。

在 [a, b] 上,中點 m = (a + b)/2,辛普森法則為 (b - a)/6 * (f(a) + 4 f(m) + f(b))——注意那組特徵性的 1-4-1 權重,使中間樣本的影響是兩端的四倍。它是牛頓-柯特斯法則中讓二次式穿過三點再積分的那一個。由對稱性,它不只對拋物線精確,對三次式也精確,是意外免費多得的一階,所以其單區間誤差為 -(b - a)^5 f''''(xi) / 2880,由四階導數主宰。複合形式中,在 n(偶數)條寬 h 的條上,權重循環為 1, 4, 2, 4, 2, ..., 4, 1,全域誤差為 O(h^4):把 h 減半,誤差變成十六分之一,相對於梯形法則只變四分之一。

辛普森法則是無數課本與程式庫常式中預設的低階求積,因為它幾乎以梯形法則的成本給出四階精度——對光滑被積函數而言是極佳的「投入對精度」划算交易。誠實的限制:它需要偶數個子區間(每個拋物線片三個點);若被積函數不夠光滑、沒有規矩的四階導數,它的 O(h^4) 優勢就蒸發(折角或奇異點會把它打回低階);而對光滑函數要極高精度時,高斯求積每次函數計算所得遠勝於它。

在 [1, 2] 上積 f(x) = 1/x(真值 ln 2 = 0.693147)。梯形給出 (1/2)(1 + 0.5) = 0.75,誤差 0.057。辛普森用中點 1.5:(1/6)(1 + 4/1.5 + 0.5) = (1/6)(1 + 2.6667 + 0.5) = 0.69444,誤差 0.0013——同樣三個樣本就好了四十多倍。

讓拋物線穿過三點:1-4-1 的權重。

辛普森所宣稱的 O(h^4) 假設被積函數有連續、有界的四階導數。在有折角或端點奇異的函數上,這個階數崩潰,法則可能不比梯形好多少——此時改用自適應求積或感知奇異點的方法。

又称
Simpson's 1/3 ruleparabolic rule辛普森1/3法則拋物線法則