牛顿法
找方程 f(x)=0 的根,是这件事。多数时候没有干净的公式。牛顿的方法是在当前点给曲线作切线,把这条直线与 x 轴的交点当作下一个估计值。曲线难,直线却容易找到 0。式子是 xn+1=xn - f(xn)/f'(xn)。重复下去,估计值就滑向根。顺利的时候,每走一步,正确的位数大约翻一倍,所以叫做 2 次收敛。它不是万能的。斜率平坦时,切线把估计值扔得很远。曲线难缠时,会在两点之间打转,或者发散。起点稍有不同,也可能落到另一个根。把它和稳妥的二分法并排放着,牛顿的速度有多靠前就看得清楚。
灰色曲线是 f(x)=x²-2,它的根是 √2≈1.414。用滑块定下起点 x0,再按一步按钮,当前点上画出金色切线,切线与 x 轴相交的小圆就是下一个估计值。每按一次,点就滑向根,下方的 f(x) 靠近 0。核心是不跟曲线走,而跟直线那个容易的 0。按复位就回到起点。
同一个式子的误差画成对数条。一根条是再走一步之后的 |xn - √2|。对数刻度上,越短越准确,碰到底就几乎完美。移动 x0 滑块,无论从哪里开始,条都会在几步之内像悬崖一样落下。因为每一步误差大约被平方。误差 0.1 不是变成 0.01,而是朝 0.01 的平方那边缩。读数上的正确位数每步翻倍,这就是 2 次收敛。
快并不等于总是安全。可以选三种失败。甩出是 x0 靠近 0,于是 f'(x)≈0,切线几乎水平,估计值被扔出画面。循环是 f=x³-2x+2 从 0 出发,永远在 0 和 1 之间来回,碰不到根。发散是像 arctan 那样远处变平的曲线,步子越走越大,越走越远。切线箭头指出步子歪到了哪里。所以牛顿法需要好的起点和一道保险。
现在是 f=x³-x。根有三个,-1、0、+1。用滑块移动起点 x0,颜色告诉你牛顿落到哪一个根。绿色是 -1,金色是 0,蓝色是 +1,灰色是发散。整条带子是每个起点命运的地图。靠近中央,干净地走向 0。在 ±1/√5 附近,颜色像头发一样细细缠在一起。在那里,起点稍动一点,落到的根就变了。同一条规则画出这么细的边界。
最后比较速度。在 [1,2] 上解 f=x²-2,一个一步按钮同时推进牛顿(金色,x0=2)和二分法(蓝色,区间 [1,2])。二分法每次留下变号的那一半,把区间砍成一半。它安全,但一步只增加大约 0.3 位。牛顿在同样的步数里误差骤降。对照读数上的两个误差,几步之内牛顿就把二分法远远甩在后面。安全归二分法,速度归牛顿,实务里把两者混着用。