问题背景:本次我们来求取 f(x) = -2x^3 + 5x^2 + 9,这个函数,在给定区间[2, 4]上的零点。
解决方法:二分法
编程语言:c++、python
说明:这里将分别使用两种编程语言和3种二分法的终止条件来完成二分的求解。
函数图像:
二分的终止条件:
1.区间小于某标准值
2.循环次数
3.真实误差小于某值 |(Xnew - Xold) / Xnew| * 100%
流程图:(偷个懒我这里之画一个)
c++篇
1.循环次数
//凭借循环次数来终止二分
#include <iostream>
#include <cstdio>
using namespace std;
const int maxn = 9999;
double f(double x)
{
return -2 * x * x * x + 5 * x * x + 9;
}
int main()
{
double a = 2; //卡取两个端点值
double b = 4;
double mid;
if (f(a) > 0) //区间增函数
{
for (int i = 0; i <= maxn; i++)
{
mid = (a + b) / 2;
if (f(mid) == 0) break;
if (f(mid) > 0) a = mid