c++平分区间法求方程的解
时间: 2023-12-06 20:21:59 浏览: 102
使用C++语言进行解方程
平分区间法(二分法)可以用来求解单峰函数的零点,其基本思想是通过不断将区间一分为二,并判断零点是否在左半边或右半边区间,进而缩小搜索范围,直到找到一个可接受的解。
下面以求解函数 f(x) = x^3 - 2x - 5 = 0 在 [1,2] 区间内的根为例进行说明:
1. 确定搜索区间 [a,b],并计算出中点 c = (a+b)/2;
2. 计算函数在 c 处的函数值 f(c);
3. 判断 f(c) 与零点的关系,若 f(c) < 0,则零点在右半区间 [c,b] 中,否则在左半区间 [a,c] 中;
4. 重复步骤1-3,直到找到一个可接受的解。
具体实现可以参考以下代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
double func(double x) {
return pow(x, 3) - 2 * x - 5;
}
double bisection(double a, double b, double eps) {
double c = (a + b) / 2;
while (fabs(func(c)) > eps) {
if (func(c) * func(a) < 0) {
b = c;
} else {
a = c;
}
c = (a + b) / 2;
}
return c;
}
int main() {
double a = 1, b = 2, eps = 1e-6;
double root = bisection(a, b, eps);
cout << "The root of the equation is " << root << endl;
return 0;
}
```
其中,func(x) 为需要求解的函数,bisection(a, b, eps) 为二分法求解函数的实现函数,其中 a 和 b 分别为搜索区间的左右端点,eps 为精度要求,即当函数值小于 eps 时认为已经找到了可接受的解。
阅读全文