noi.openjudge 二分法求函数的零点
二分法求函数的零点
- 总时间限制: 1000ms
- 内存限制: 65536kB
- 描述
- 有函数: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位。
解析
浮点二分练手题,首先打个表判断函数在[1.5,2.4]的单调性,直接二分出答案即可
- 代码
#include<bits/stdc++.h> using namespace std; double check(double a) { double ans=pow(a,5)-15*pow(a,4)+85*pow(a,3)-225*pow(a,2)+274*a-121;//单调递减 if(ans>0) return false;//大于目标mid往大取 else return true; }//a越大结果越小 int main() { double dlt=0.0000000001; double l=1.50,r=2.40; while(fabs(r-l)>dlt)//记得取fabs { double mid=(l+r)/2.0;//除以2.0 if(check(mid)) r=mid;//这里是r=mid else l=mid; } cout<<setprecision(7)<<l<<endl;//setprecision要加一位 return 0; }