next up previous
Next: 注意 Up: シンプソンの公式の誤差 Previous: シンプソンの公式の誤差

台形公式と同じ \(\displaystyle{\int_0^1 \frac{4  dx}{1+x^2} = \pi} \) をシンプソンの公式で, 計算したのが次です. 少し結果が良くなります.

/* File name 9-2.c */

#include <stdio.h>

double simpson(double a, double b, int n);
double fun(double x);

main()
{
     printf("Pi is about %1.15f.\n", simpson(0.0, 1.0, 65536));
}

double simpson(double a, double b, int n)
{
     double sum=fun(a);           
     double interval=(b-a)/n;   /* The length of the small interval */
     int k;
    
     for (k=1; k < n ; k++){ 
         sum = sum + 2.0*fun(a+k*interval)+4.0*fun(a+k*interval-0.5*interval); 
     }
     return interval*(sum + fun(b)+4.0*fun(b-0.5*interval))/6.0;
}

double fun(double x)
{
      return 4.0/(1.0 + x*x);
}



Next: 注意 Up: シンプソンの公式の誤差 Previous: シンプソンの公式の誤差