微積分 · 數值積分

數值積分

數值積分只用f的少數幾個值來估計∫ f:每一段用通過這些值的簡單曲線代替f,再將曲線下的有向面積相加。辛普森法使用拋物線;對光滑函數,每把區間寬度減半一次,誤差最終會縮小到約1/16。

在這張圖中理解數值積分

許多積分無法靠反導函數算出來。e−x2e^{-x^2}的反導函數存在,卻無法用初等函數表示;實測資料甚至沒有公式。數值積分只靠f的函數值估計∫abf(x) dx\int_a^b f(x)\,dx。將[a, b]分成n段,每段寬Δx=(b−a)/n\Delta x = (b - a)/n;在各段上,以通過少數函數值的簡單曲線p代替f,再將p下的有向面積相加:

使用n段的辛普森法(mᵢ是第i段的中點)
Sn=Δx6∑i=0n−1[f(xi)+4f(mi)+f(xi+1)]S_n = \frac{\Delta x}{6} \sum_{i=0}^{n-1} \big[f(x_i) + 4f(m_i) + f(x_{i+1})\big]

中點法M使用通過f(mi)f(m_i)的水平線;梯形法T使用連接兩端的弦;辛普森法S使用通過兩端和中點的拋物線,因此總共使用f的2n + 1個值。圖中的p是黃色。下方窄圖將差p(x)−f(x)p(x) - f(x)放大,它的有向面積就是誤差,也就是近似和減去積分值。課本常把這稱為使用2n個小區間的辛普森法,算的是同一個和。

在寬度為h的一段上,將f在中點附近展開。中點法的誤差約為−h3f′′/24-h^3 f''/24,梯形法約為+h3f′′/12+h^3 f''/12,所以小區間上前者接近後者的−½。對sin x取n = 4時,兩者分別是+0.0523和−0.1039。按2 : 1加權可消掉這個主要項,而且S=(2M+T)/3S = (2M + T)/3確實精確成立。剩餘誤差在每段從h5f(4)/2880h^5 f^{(4)}/2880這一項開始。下方窄圖也看得出來:這裡每個函數的梯形誤差區域都保持同一符號,辛普森法則有正、負兩部分,幾乎相互抵銷。

辛普森法不只對二次函數精確,對三次函數也一樣。以中點為基準,(x−m)3(x - m)^3是奇函數,整段上的積分為0;由於權重1, 4, 1對稱,辛普森法的和也為0。在[0, 2]上以一段處理x³,拋物線是3x2−2x3x^2 - 2x,顯然不是x³;但差的兩瓣面積為−1/4和+1/4,因此S1=4S_1 = 4,恰好等於積分值。(x−m)4(x - m)^4這一項是偶函數,不會抵銷:對x⁴,一條拋物線給出20/3而非32/5,相差4/15。

將各段相加後,誤差按1/n的冪次縮小。若f光滑且主要誤差項不為0,n每加倍一次,中點法和梯形法的誤差最終縮小約4倍(誤差 ∝ 1/n²),辛普森法約16倍(∝ 1/n⁴)。對eˣ,n取1、2、4時,辛普森法的誤差為5.8 × 10⁻⁴、3.7 × 10⁻⁵、2.3 × 10⁻⁶。這個展開需要f光滑。√x在0處垂直起步,拋物線無法符合無窮大的斜率;段數每加倍,誤差只縮小約21.5≈2.832^{1.5} \approx 2.83倍,而且幾乎全都來自第一段。

值得留意

  • 讀數中的積分值由反導函數算出(2、e − 1、ln 2、2/3、4、32/5),因此顯示的是真正誤差,不是估計值。
  • 同樣使用sin x的9個值,四段辛普森法對∫₀^π sin x dx的誤差是0.00027;八段梯形法的誤差是0.026。

操作

  • 轉動n並切換方法,觀察差的變化。下方窄圖每次都會自動調整比例,請留意左側刻度。
  • 按n → ∞,將n逐次加倍到64。每行記錄誤差,以及相較上一行縮小了多少倍。

相關概念