#include <stdio.h> #include <math.h> static double f(double x) { return exp(-x*x/2.0); } static double integrate(double a, double b, int N) { double delta; double sum = 0.0; int i; delta = (b -a)/N; sum = f(a) + f(b); sum = sum/2.0; for (i=1;i<N;i++) sum = sum + f(a + delta*i); sum = delta * sum; sum = sum/sqrt(2*M_PI); return sum; } int main(void) { int N = 1000; double a = 1.0; double b = 20.0; double val; double tval; int i; for (i=0; i<10; i++) { val = integrate(a,b,N); tval = 0.5 - val; fprintf(stderr,"a = %f, b = %f, N = %d, tval = %f, val = %E\n", a, b, N, tval, val); a = a + 1; } return 0; }Output:
a = 1.000000, b = 20.000000, N = 1000, tval = 0.341337, val = 1.586625E-01 a = 2.000000, b = 20.000000, N = 1000, tval = 0.477247, val = 2.275305E-02 a = 3.000000, b = 20.000000, N = 1000, tval = 0.498650, val = 1.350218E-03 a = 4.000000, b = 20.000000, N = 1000, tval = 0.499968, val = 3.168266E-05 a = 5.000000, b = 20.000000, N = 1000, tval = 0.500000, val = 2.867909E-07 a = 6.000000, b = 20.000000, N = 1000, tval = 0.500000, val = 9.871830E-10 a = 7.000000, b = 20.000000, N = 1000, tval = 0.500000, val = 1.280713E-12 a = 8.000000, b = 20.000000, N = 1000, tval = 0.500000, val = 6.225810E-16 a = 9.000000, b = 20.000000, N = 1000, tval = 0.500000, val = 1.129521E-19 a = 10.000000, b = 20.000000, N = 1000, tval = 0.500000, val = 7.626264E-24