二分法是求方程近似解的一种简单直观的方法,设函数f(x)在[a,b]上连续,且f(a)*f(b)<0,则表明f(x)在[a,b]上至少有一个零点,这是微积分中的介值定理(不得不吐槽一下大学微分方程老师讲课跟个煞笔一样,反正我是重来没听的).然后通过二分区间,缩小区间范围,当小到一定的精确度的时候,这个x就是我们所求的近似根了.
个人对算法的分析:1首先输入我们的函数f(x),这里定义为一元三次方程;2,输入求根区间[a,b]和误差控制量eps(在C语言中1e-10代表1*10的负10次方),用到了fabs()求绝对值的数学库函数.输入步骤完毕.3,判断f(a)*f(b)<0是否为真.为真代表有零点,就可以用二分法不断地缩小空间,得出近似解x了.没有零点就尴尬了,二分法只能计算方程的实根,这里也可以看出二分法的局限性.
下面给出一个题目:用二分法求f(x)=x*x*x-7.7*x*x+19.2*x-15.3在区间[1,2]之间的根.
下面给出自己写的代码,如下:
/******************************************