#include #include double f(double x) { return 1/x; } int main(void) { int i, N; for(N = 1; N < 1e7; N*=2) { double a=0.1, h=(1.0-a)/N, soma=0.0f; // Importante zerar soma! for (i=1;i<=N-1;i+=2) { double x1,x2,x3; // ou definir apenas x=a+h*i e em x1 -> x-h, x2 -> x+h x1=a+h*(i-1); x2=a+h*(i); x3=a+h*(i+1); soma += (1./3)*h*(f(x1)+4*f(x2)+f(x3)); } double e = fabs((-log(a)-soma)/-log(a)); printf("%d %e\n", N, e); } return 0; }