本帖最后由 jackz007 于 2024-4-13 00:36 编辑 #include <stdio.h>
#include <math.h>
double fx(double x)
{
return x * x * x - 7 * x - 1 ;
}
int main(void)
{
double x , x1 = 0.0 , x2 = 6.0 ;
int n ;
if(fx(x1) * fx(x2) < 0) {
for(n = 0 ; fabs(x2 - x1) >= 1e-6 ; n ++) {
x = (x1 + x2) / 2.0 ;
if(fx(x) * fx(x1) < 0) x2 = x ;
else x1 = x ;
}
x = (x1 + x2) / 2.0 ;
n ++ ;
printf("x = %lf\n" , x) ;
printf("n = %d\n\n" , n) ;
} else {
fprintf(stderr , "本方程在给定区间 [%.0lf , %.0lf] 无解。\n\n" , x1 , x2) ;
}
}
编译、运行实况:F:\[Exercise]\[00.00]\00.C\二分法解方程>g++ -o x x.c
F:\[Exercise]\[00.00]\00.C\二分法解方程>x
x = 2.714479
n = 24
F:\[Exercise]\[00.00]\00.C\二分法解方程>
|