Below is the program I wrote to do number 15. It uses the
Trapezoidal Rule to integrate the pdf from a to b for various
values of a and b. For a=10 and b=20 we get the answer to the
problem. For a=1 and b=20 we get P(z>1) which can be checked
with the normal distribution tables. To simplify the the check,
tval = .5 - val = P(0 < z < a) is displayed.
This can be directly read from the normal table.
#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