#include <stdio.h>
#include <math.h>
// 定义函数f
float f(float x) {
return x * x * x - 2 * x * x - 4 * x - 7;
}
int main() {
float a, b, eps = 1e-5, c, fa, fb, fc;
// 提示用户输入区间端点a和b
printf("请输入区间端点a和b(确保f(a)和f(b)异号): ");
scanf("%f%f", &a, &b);
// 计算区间端点的函数值
fa = f(a);
fb = f(b);
// 检查输入区间是否有效
if (fa * fb >= 0) {
printf("输入的区间无效,因为函数值在区间两端符号相同。\n");
return 1; // 返回非零值表示程序异常结束
}
// 使用二分法迭代求解
while (fabs(b - a) >= eps) {
c = (a + b) / 2;
fc = f(c);
// 检查是否找到根或达到精度要求
if (fabs(fc) < eps) {
break;
} else if (fa * fc < 0) {
b = c;
fb = fc; // 更新b端点的函数值,以便下次迭代使用(可选,但可以提高效率)
} else {
a = c;
fa = fc; // 更新a端点的函数值,以便下次迭代使用(可选,但可以提高效率)
}
}
// 输出结果
printf("找到的根为: x = %f\n", c);
return 0; // 返回0表示程序正常结束
}