第二次实验报告

算法第二章实验报告

一.实践题目名称:二分法求函数的零点

二.问题描述:有函数: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

三.算法描述:由题意知该函数单调递减。首先将[1.5,2.4]作为第一个区间并求出其中点的函数值f(mid)。若f(mid)>0,则将左端点的值替换为mid;若f(mid)<0,则将右端点的值换为mid。以此类推,不断缩小mid所在区间,直至符合题意。核心算法代码如下图所示:

 

 

 

四.算法时间及空间复杂度分析:

时间复杂度:第一次解决子问题的时间复杂度为O(n/2),第二次为O(n/4),则第n次为O(logn),分解子问题的时间复杂度为O(1),则总的时间复杂度为O(logn);空间复杂度:递归算法的空间复杂度=递归深度*每次递归所需的辅助空间,则空间复杂度为O(logn)

五.心得体会:

通过这次实验对分治法的应用有了更详细全面的认识。实验课堂上会针对老师的提问做更多的思考,与同伴进行探讨的过程中会修复自己原本的思维漏洞

六.对分治法的个人体会和思考:

  1. 分治法是将一个规模庞大的问题划分为可解决的、形式相同的子问题的算法,从而实现对问题的解决
  2. 分治法作为九大算法之一,其核心在与划分问题的方式,好的划分方式降低了解决问题的难度
  3. 分治法运用得当,将从时间复杂性和空间复杂性上均有助于问题的解决

 

posted @ 2021-10-26 13:07  邹思雅  阅读(61)  评论(0编辑  收藏  举报