00001
00010 #include <assert.h>
00011 #include <math.h>
00012 #include "bisection.h"
00013
00022 double bisection (double (*f)(double x, double Alpha), double Alpha, double x0, double x1, double eps) {
00023
00024
00025 assert(x0 < x1);
00026
00027 double x;
00028 do {
00029
00030 x = (x0 + x1) / 2;
00031 double y0 = f(x0, Alpha), yy = f(x, Alpha);
00032
00033 if (yy * y0 < 0) x1 = x;
00034 else
00035 if (yy * y0 > 0) x0 = x;
00036 else
00037 return x;
00038
00039 } while (fabs(x1 - x0) > eps);
00040
00041 return x;
00042
00043 }