您的位置:首页 > 其它

二分法求函数的零点

2018-06-12 14:05 204 查看

【题目描述】

有函数:

f(x) = x5 - 15 * x4+ 85 * x3- 225 * x2+ 274 * x - 121

已知 f(1.5) > 0 , f(2.4) < 0 且方程 f(x) = 0 在区间 [1.5,2.4] 有且只有一个根,请用二分法求出该根。

【输入格式】

【输出格式】

该方程在区间[1.5,2.4]中的根。要求四舍五入到小数点后6位。

【分析】

我们每次枚举x,然后检验误差是否在误差范围内,在二分求解就可以了。

二分策略:从1.5和2.4开始。因为这个函数的最高项为奇数次,所以必定是单调递增或递减。

因为这个最高次项的系数为正数,所以就是单调递增,如果mid所对应得函数值>0那么就查右区间,反之就查左区间。

【代码】

#include<bits/stdc++.h>

using namespace std;
double Pow(double x,int e){
double ans=1;
for(int i=1;i<=e;i++)ans*=x;
return ans;
}
double f(double x){
return Pow(x,5)-15*Pow(x,4)+85*Pow(x,3)-225*Pow(x,2)+274*x-121;
}
double ef(double l,double r){
double mid=(l+r)/2;
if(abs(f(mid))<0.0000005) return mid;
if(f(mid)>0) return ef(mid,r);
else return ef(l,mid);
}
int main()
{
printf("%0.6lf\n",ef(1.5,2.4));
return 0;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: