算法第二章上机实践报告

  • 实践题目名称

     二分法求函数的零点

  • 问题描述

     有函数: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

  • 算法描述

     由题目得知该函数在此区间上递减。根据零点的定义,从区间两端开始取中间的数mid,并判断mid是否小于零,若是,则零点在左端到mid,若不是,则零点在mid到右端,不断逼近判断直到f(mid)<1e-7为止

  • 算法时间及空间复杂度分析(要有分析过程)

     时间复杂度:不断砍半,所以时间复杂度为logn

       第一次 n/2

       第二次 n/4

       .......

       第n次 logn

     空间复杂度:仅创建三个double变量 空间复杂度为1

  • 心得体会(对本次实践收获及疑惑进行总结)

     通过此次上机实践,更加掌握了对二分法的运用。起初并没有注意到此函数在区间内递减,误以为大于0时mid赋值给right,小于零时mid赋值给left导致答案一直错误,后来将区间两端    值代入才发现该函数在区间内递减。同时,经过老师提醒,while的条件中fx(mid)应当取绝对值,避免从另一侧接近零点时总是满足条件。

  • 分治法的个人体会和思考

     所谓分治法就是把问题划分为若干个相同的小问题,用相同的方法来解决。

     我认为分治法的突破口是要发现该问题能够分而治之,像是课堂例子中,一块正方形被分为十六份,有一份已经被小正方形填充,需要用L型积木填满一样。当将正方形扩大,变成  4X16时,需要我们先用L型积木放在中间,将一个大正方形变成四块都被占了一个小正方形的正方形来解决

posted @ 2021-10-04 12:31  mooonquakes  阅读(37)  评论(0编辑  收藏  举报