数値積分法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 
  各点(xif(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 )),(xif(xi )),(xi+1f(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 / (x + 1)   
  A  f(x) = x  sin(x)
  B f(x) = x Exp(-x)
  C f (x)= √(1-x2)