top of page

1  #include<stdio.h>
2  #include<math.h>
3  #define PI 3.1415926535897932

 

4   double SolveEquation(double left, double right, double accuracy,

5                                            double ( *fpointer) ( double x) );

6  int main(void){
7     double f ( double x);
8
9     double left=0.;
10    double right=PI/2.;
11    double accuracy=1.e-16;
12    double (* FunctionPointer) (double x)=f;
13
14    double res;
15    res=SolveEquation(left, right, accuracy, FunctionPointer);
16    printf("The root of the equation is %.16f\n",res/PI*180.);
17 }
18
19 double SolveEquation
20 (double left, double right, double accuracy,
21 double  (* fpointer) ( double x)){
22
23    double middle, old_middle;
24    middle=0.5*(left+right);
25
26    do {
27       old_middle=middle;
28       if( fpointer(left)*fpointer(old_middle) < 0) right=old_middle;
29       else                                         left=old_middle;
30
31       middle=0.5*(left+right);
32    } while(fabs(middle - old_middle) >= accuracy);
33
34    return middle;
35 }
36
37 double f ( double x){
38    return sin(x)-0.5;
39 }

  • b-facebook
  • Twitter Round
  • b-googleplus
bottom of page