其他分享
首页 > 其他分享> > 7-2 二分法求函数的零点 (30 分)

7-2 二分法求函数的零点 (30 分)

作者:互联网

题目描述:

输入格式:

无。

输出格式:

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

输入样例:

  结尾无空行

输出样例:

  结尾无空行

分析:

•此题关键词:f(1.5)>0,f(2.4)<0     有且只有一个根   二分法   fabs(f(x)) < 1e-7

•题目要求找到并输出根的值(注意小数点后几位)

思路:

题目不难,带入区间中值mid计算与0的差值是否在1e-7以内,如果是则跳出递归,返回mid值,若不在范围内则通过正负来判断mid在零点左侧还是在零点右侧,若为正则在零点左侧,向右侧递归,反之则向左侧递归。


 

代码:

 

 1 #include <iostream>
 2 #include <cmath>
 3 #include <iomanip>
 4 using namespace std;
 5 
 6 double f(double x)
 7 {
 8     return (pow(x,5) - 15*pow(x,4) + 85*pow(x,3) - 225*pow(x,2) + 274*x - 121);
 9 }
10 
11 double binary_sort(double start, double end)
12 {
13 //    cout << start << " " << end << endl;
14 //    getchar();
15     double mid = (start + end)/2.000000;
16     if(fabs(f(mid)) < 1e-7) return mid;
17     else if(f(mid) > 0) binary_sort(mid, end);
18     else if(f(mid) < 0) binary_sort(start, mid);
19 } 
20 
21 int main()
22 {
23     double start = 1.5, end = 2.4;
24     double flag = binary_sort(start, end);
25     cout << fixed << setprecision(6) << flag << endl;
26     return 0;
27 }

总结:

分治思想,写递归函数的时候先写结束条件,有返回值的返回,不符合返回条件则返回递归函数本身(参数不一样)

标签:sort,求函数,double,30,mid,二分法,start,pow,2.4
来源: https://www.cnblogs.com/Aheador/p/15349634.html