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;
}

 

 

posted @ 2018-11-08 10:40  前排吃瓜  阅读(464)  评论(0编辑  收藏  举报