【题解-信息学奥赛一本通】1241:二分法求函数的零点

题目:1241:二分法求函数的零点

题目描述:

有函数:f(x)=x5−15x4+85x3−225x2+274x−121

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

输入:

(无)

输出:

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

时空限制

1s / 64 MB

样例输入:

(无)

样例输出:

(无)

代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
double l,r,mid;
double f(double x){
    return x*x*x*x*x-15*x*x*x*x+85*x*x*x-225*x*x+274*x-121;
}
bool check(double mid){
    return f(l)*f(mid)<=0;
}
int main(){
    l=1.5,r=2.4;
    while(r-l>=1e-8){
        mid=(l+r)/2;
        if(check(mid)) r=mid;
        else l=mid;
    }
    printf("%.6lf",l);
    return 0;
}

结果