20201003008陆启康算法第一次上机实验报告
实验报告题目
7-2 二分法求函数的零点
题目概述
- 有函数:f(x)=x5−15x4+85x3−225x2+274x−121 已知f(1.5)>0,f(2.4)<0 且方程f(x)=0 在区间[1.5,2.4] 有且只有一个根,请用二分法求出该根。 提示:判断函数是否为0,使用表达式 fabs(f(x)) < 1e-7
题目分析:
在函数f(x)中的一个范围中求解,要求用二分法逼近零点,误差控制在1e-7之内。
算法描述:
已知该函数在该区间上单调递减,我们可以以浮点二分法无限逼近零点:
(1)当f(mid)> 0时,证明此时mid在零点的左侧,此时若未达到误差标准,继续二分——即:left=mid,继续递归;当达到误差标准——即(right-left)<1e-7,可以输出结果mid;
(2)当f(mid)> 0时,证明此时mid在零点的右侧,此时若未达到误差标准,继续二分——即:right=mid,继续递归;当达到误差标准——即(right-left)<1e-7,可以输出结果mid;
算法时间即空间复杂度分析
时间复杂度:
题目中直接给出具体的x的取值范围,所以时间复杂度是O(1);
但如果给出了数组长度n,则为O(logn):
空间复杂度:O(1);
心得体会:
无论做什么事情,与他人合作永远比自己单打独斗效率要高得多,在这个时代,团队协作的能力非常重要。
分治法个人体会:
做了这道题加深了我对二分法的印象,意识到解决很多问题,二分法都是一个很好的,低耗时,低空间的算法。