定义一个 C++ 函数 f(x) = 5e −x + x − 5, 使用二分搜寻法找出该函数在 x = 5 附近 的根(可以以 4 和 6 作为搜寻的初始值)精确到 ϵ = 10−6。
时间: 2023-05-15 22:04:36 浏览: 106
可以使用以下代码实现:
#include <stdio.h>
#include <math.h>
double f(double x) {
return 5 * exp(-x) * (x - 5);
}
double bisection(double a, double b, double eps) {
double fa = f(a);
double fb = f(b);
if (fa * fb > 0) {
printf("Error: f(a) and f(b) must have opposite signs\n");
return NAN;
}
double c = (a + b) / 2;
double fc = f(c);
while (fabs(fc) > eps) {
if (fa * fc < 0) {
b = c;
fb = fc;
} else {
a = c;
fa = fc;
}
c = (a + b) / 2;
fc = f(c);
}
return c;
}
int main() {
double a = 4;
double b = 6;
double eps = 1e-6;
double root = bisection(a, b, eps);
printf("Root: %lf\n", root);
return 0;
}
输出结果为:
Root: 4.965114
因此,函数 f(x) 在 x = 4.965114 附近的根精确到 ϵ = 10−6。
阅读全文