二分法(Binary Search),也称折半查找,是一种常见的查找算法。该算法适用于已经排好序的有序序列,通过不断缩小查找范围,最终找到目标值。
二分法的基本思路是:对于区间[a,b]上连续不断且f(a) × f(b) < 0的函数y = f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。
1、求解一元非线性方程

I、将方程转换为函数。令,

II、确定解的区间
由于x定义域为x>0,设计EXCEL计算表如下:

单元格B3公式:【=0.8^A3-1-LN(A3)】,复制、粘贴B3到B4:B21即可。
根据函数值符号可以确定解的区间为【0.8,0.9】。
III、设计二分法模板
- 初始行设置

- 二分算法设计行

因为,f(0.8)≈0.0597 > 0,单元格B3公式为【=IF(0.8^D2-1-LN(D2) > 0,D2,B2)】。由于下限函数值大于0,IF函数判别条件也大于0。即,如果中间值函数值大于0,下限值替换为中间值,反之下限不变(上一单元格数值)。
同理,f(0.9)≈-0.0766 < 0,单元格C3公式为【=IF(0.8^D2-1-LN(D2) < 0,D2,C2)】。由于上限函数值小于0,IF函数判别条件也小于0。即,如果中间值函数值小于0,上限值替换为中间值,反之上限不变(上一单元格数值)。
另外,
单元格A3公式为【=A2+1】
单元格D3公式为【=(B3+C3)/2】
单元格E3公式为【=C3-B3】
- 复制、粘贴二分算法设计行

将二分算法设计行(No.1)复制、粘贴到No.10行后达到计算精度要求。
继续向下复制、粘贴,

从No.17行开始,上、下限值开始相等,即二分法经过17次迭代得到精确解。
2、计算无理数

I、将无理数转换为函数。令,

由于2的平方根大于1小于2,解的区间为【1,2】
II、设计二分法模板

因为,f(1) = -1 < 0,单元格B3公式为【=IF(D2^2-2 < 0,D2,B2)】。由于下限函数值小于0,IF函数判别条件也小于0。即,如果中间值函数值小于0,下限值替换为中间值,反之下限不变(上一单元格数值)。
同理,f(2) =2 > 0,单元格C3公式为【=IF(D2^2-2 > 0,D2,C2)】。由于上限函数值大于0,IF函数判别条件也大于0。即,如果中间值函数值大于0,上限值替换为中间值,反之上限不变(上一单元格数值)。
III、复制、粘贴二分算法设计行

迭代14次达到精度要求。迭代到23次,在6位小数内上、小限值已经相等。
二分算法还可以用于求解其他问题,例如最大值和最小值、区间查找、寻找重复元素等。同时,二分算法也是其他高级算法的基础,例如分治算法和动态规划算法等。
二分算法是计算机科学中非常重要的基础算法之一,掌握二分算法对于提高编程能力和解决实际问题都非常有帮助。