zoukankan      html  css  js  c++  java
  • 二分法求函数的零点

    【题目描述】

    有函数:

    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那么就查右区间,反之就查左区间。

    【代码】

     1 #include<bits/stdc++.h>
     2 
     3 using namespace std;
     4 double Pow(double x,int e){
     5     double ans=1;
     6     for(int i=1;i<=e;i++)ans*=x;
     7     return ans;
     8 }
     9 double f(double x){
    10     return Pow(x,5)-15*Pow(x,4)+85*Pow(x,3)-225*Pow(x,2)+274*x-121;
    11 }
    12 double ef(double l,double r){
    13     double mid=(l+r)/2;
    14     if(abs(f(mid))<0.0000005) return mid;
    15     if(f(mid)>0) return ef(mid,r);
    16     else return ef(l,mid);
    17 }
    18 int main()
    19 {
    20     printf("%0.6lf
    ",ef(1.5,2.4));
    21     return 0;
    22 }
    黎明的朝阳,会为苦难中最坚强的信念升起
  • 相关阅读:
    回答提出的问题1-17章
    《构建之法》第13-17章读书笔记
    读《一个程序员的生命周期》有感
    构建之法的第十、十一、十二章读书笔记
    阅读《构建之法》第8,9,10章
    5.2-5.3
    作业5.1测试与封装
    读《构建之法》5.6.7 思考
    读《构建之法》的思考
    作业2 结对思则运算
  • 原文地址:https://www.cnblogs.com/Dawn-Star/p/9172711.html
Copyright © 2011-2022 走看看