控制方程求根过程的二分法,用起来是真的“老实巴交”。收敛慢但胜在稳,适合拿来当个初始值帮忙“打头阵”。啦,要是你想找偶重根或者复数根,它可就有点力不从心了。不过别急,这篇《控制对分过程终止的方法-第二讲方程求根》讲得挺清楚,思路也不绕,用来打基础还挺不错。

二分法的逻辑其实简单:一分为二,不停缩小区间,直到误差小于你设的ε。像x - x* < ε这种判断条件,基本就决定了收不收手。实用性虽然中规中矩,但在迭代法登场之前,它就像个“暖场嘉宾”,作用不小。

你要是还想拓展下,可以看看这些:Matlab 版的二分法,用起来蛮方便;或者试试牛顿割线法,收敛快不少,就是对初值要求高;想更稳一点的,也可以看看迭代法解方程的那篇,思路清楚。

哦对了,代码实现部分也别怕麻烦,写起来真不复杂。像下面这种结构:

while (b - a) / 2 > epsilon {
  mid = (a + b) / 2;
  if (f(mid) === 0) return mid;
  else if (f(mid) * f(a) < 0 xss=removed xss=removed>
挺好读的,而且移植到不同语言也容易。你只要会基本的逻辑判断,就能跑起来。

,想找个“稳中求进”的方法当个基础工具,二分法还蛮合适的。如果你要深入搞高阶方法,那就当它是个踏板;但要是你只是做基础数值计算,它一个人也能撑场。