数値積分法1
f(x)をx=aからbまで積分するには原始関数F(x)を求めF(b)−F(a)を計算すればよいが,一般に原始関数を初等関数で求めることは容易ではない。数値的解法では以下のように面積で計算する。
x=a から x=b までをn分割し(等間隔でなくてもよい)各幅をhiとする。
a=x0<x1<x2<・・・・<xn-1<xn=b
hi = x i- xi-1。
y=f(x) x軸 x=xi x=xi-1 で囲まれた部分の面積は xi
と xi-1 との間のある数をξiとし
長方形の面積 f(ξi)hi と等しくできる(平均値の定理)。これをi=1からnまでについて行い総和を求めると
f(ξi)hi は n→∞のとき y=f(x) x軸 x=a x=bで囲まれた部分の面積に等しくなるだろう。この極限値がξiに無関係に存在するときf(x)は積分可能と言う。
実際の計算ではx=a
から x=b
までの区間をn等分する。n〜20で良い精度で計算できる。
1)中点公式
分割数は偶数個2n
h=(b−a)/2n とする。
xi =a+ih
奇数番目の点におけるyの値を高さ 2hを底辺とする長方形を作り,その面積の総和を求める。
狽Qh・f(xi ) (i=1,3,5,・・・・2n−1)
2)台形公式
分割数はn
h=(b−a)/n とする。
xi =a+ih
各点(xi ,f(xi ))を結んでできる台形の面積の総和を求める。
狽/2・(f(xi−1 )+f(xi
)) (i=1,2,3,・・・・n)
3)Simpsonの公式
分割数は2n
h=(b−a)/2n とする。
xi =a+ih
曲線を放物線で近似する。3点(xi−1 ,f(xi−1
)),(xi ,f(xi )),(xi+1
,f(xi+1 ))を通る2次式を作 り,各部分の面積の総和を求める。
狽/3・(f(xi−1 )+4f(xi
)+f(xi+1 )) (i=1,3,5,・・・・2n−1)
1),2)に比べ3)では精度が急上する。 次へ
[プログラム]
Simpson の演算部
h = (b - a) / n / 2; s=0; for (i=0;i<=2*n-2;i=i+2){ x = a + i * h; s = s + f(x,k) + 4 * f(x + h,k) + f(x + 2 * h,k); } printf(" Integral=%f\n", s*h / 3);与えるものは a,b と関数 f(x,k)
[サンプル図]はここ
[問題] 次の関数を0から1まで積分せよ
@ f(x) = 4 / (x2 + 1)
A f(x) = x sin(x)
B f(x) = x Exp(-x)
C f (x)= √(1-x2)