07/07/16 22:33:10
>>107
#include <stdio.h>
#include <math.h>
double f(double x){
return 1.0/(1.0+x*x);
}
int main(void){
double a=0.0, b=10.0, e=0.0000001, h, s1=0.0, s2;
long n, i;
int is_first=1;
for(n=2;;n+=2){ // アルゴリズムの関係で n は偶数
h=(b-a)/n;
s2=f(a)+f(b);
for(i=1;i<n;i+=2) s2+=2*f(a+h*i);
for(i=2;i<n;i+=2) s2+=4*f(a+h*i);
s2*=h/3;
if(!is_first && fabs(s2-s1)<e) break;
s1=s2;
is_first=0;
}
printf("n=%ld integral=%f\n", n, s2);
return 0;
}