数値積分法の基本である台形法と中点法を取り上げる。
数値積分法
ある関数 f(x) の定積分を数値計算によって求めることを考える。このとき、素朴には積分範囲 [a,b] に対してN個の入力点 {xi}i=0N を与え、それぞれに対して曲線 y=f(xi) と直線 y=0 に挟まれた箇所の微小面積 dF(xi) を計算し、それらを足し合わせるような方法が考えられる。
∫abf(x)dx=i=1∑NdF(xi)
このような考察に基づく数値計算方法を数値積分と呼ぶ。ここでは、特にシンプルなものである台形積分法と中点積分法を導入する。
台形積分法
台形積分法では、まず入力点を N 個与える。ただし、それらの集合 {xi}i=0N は順番に並んでいるものと仮定する。
N inputsx0<x1<⋯<xN
そして xi と xi+1 に対して、関数の出力値 f(xi),f(xi+1) をそれぞれ上側底辺、下側底辺の長さとし、入力値の差分x_{i+1} - x_{i}を高さとするような台形を考える。その台形の面積を微小面積dF_iとする。
dFi:=21上底 + 下底(f(xi)+f(xi+1))高さ(xi+1−xi)
これを i=0,1,…,N−1 に対して足し合わせることで定積分を計算する。
∫abf(x)dx≃i=0∑N−12f(xi)+f(xi+1)(xi+1−xi)
特に積分区間 [a,b] を N 等分する場合、各 xi は
x0x1x2xi=a=a+N1(b−a)=a+N2(b−a)⋮=a+Ni(b−a)
および
xi+1−xi=Nb−a
と書けるから、次のように積分できる。
∫abf(x)dx≃i=0∑N−12f(xi)+f(xi+1)dx wherexidx=a+idx=Nb−a
アルゴリズムは次の通り。
Algorithm 2: Trapezoidal integrals.
1.2.3.4.5.6.7.8.9.dx←Nb−ax0←af0←f(x0)F0←0for i∈{0,1,2,…,N−1} do:xi+1←xi+dxfi+1←f(xi+1)Fi+1←Fi+2fi+fi+1return FN×dx
中点積分法
中点積分法では2点 xi,xi+1 の中点における関数値 f(2xi+xi+1) を幅、入力値の差分xi+1−xi を高さとするような長方形を考え、その面積を微小面積 dFi とする。
dFi:=f(2xi+xi+1)(xi+1−xi)
そしてこれを i=0,1,…,N−1 に対して足し合わせることで積分を近似計算する。
∫abf(x)dx≃i=0∑N−1f(2xi+xi+1)(xi+1−xi)
台形法の場合と同様に、積分区間 [a,b] を N 等分する場合には、以下のような書き換えが可能である。
∫abf(x)dx≃i=0∑N−1f(2xi+xi+1)dx wherexidx=a+idx=Nb−a
アルゴリズムは次の通り。
Algorithm 2: Midpoint integrals.
1.2.3.4.5.6.7.8.9.dx←Nb−ax0←a+21dxf0←f(x0)F0←0for i∈{0,1,2,…,N−1} do: xi+1←xi+dxfi+1←f(xi)Fi+1←Fi+2fireturn FN×dx
数式の比較
台形積分法と中点積分法を並べて書いてみる。
TrapezoidalMidpoint∫abf(x)dx∫abf(x)dx≃i=0∑N−12f(xi)+f(xi+1)dx≃i=0∑N−1f(2xi+xi+1)dx wherexidx=a+idx=Nb−a
こうしてみると、両者はいずれも相加平均を用いているものの、それをどのタイミングでとるかという点で違いが現れている。
どちらを使うにせよ、それなりに N を大きくしないと使い物にならないので注意しよう。