35 lines
774 B
C
35 lines
774 B
C
|
#include <stdio.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <math.h>
|
|||
|
|
|||
|
#define f(x) ((x) + sin(x) - 1)
|
|||
|
|
|||
|
int main() {
|
|||
|
int count = 1000, i = 0;
|
|||
|
double precision = 1e-15;
|
|||
|
double epsilon = 1e-15;
|
|||
|
double mid, lower = 0, upper = 2;
|
|||
|
|
|||
|
while ((upper - lower > precision) && (i < count)) {
|
|||
|
mid = (lower + upper) / 2.0;
|
|||
|
double f_mid = f(mid);
|
|||
|
|
|||
|
printf("#%d\t[%.15f,%.15f]\t<EFBFBD><EFBFBD>=%.15f\tf(mid)=%.15e\n", i+1, lower, upper, mid, f_mid);
|
|||
|
|
|||
|
if (fabs(f_mid) < epsilon) {
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
i++;
|
|||
|
if (f_mid * f(lower) < 0) {
|
|||
|
upper = mid;
|
|||
|
} else {
|
|||
|
lower = mid;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%.15f\n", mid);
|
|||
|
printf("f(mid) = %.15e\n", f(mid));
|
|||
|
return 0;
|
|||
|
}
|