seegongsik
我的单词本
工程数学

牛顿法沿切线追根

沿切线所指跳跃以快速逼近根,含失败情形与吸引域

怎样求方程 f(x)=0 的根?大多数情况下没有干净的公式。牛顿的答案很优雅:在当前点对曲线作切线,把这条直线与 x 轴的交点当作下一个估计值。曲线再难,直线总能轻松找到自己的零点。写成公式就是 xn+1=xn - f(xn)/f'(xn)。如此反复,估计值便沿着滑向根。一旦奏效,快得吓人:每一步正确位数大约翻一倍,这叫二次收敛。但它并非万无一失。斜率平缓处,切线会把估计值甩得很远;曲线棘手时,它会在两点间打转,或永远发散。起点稍有不同,甚至会落到不同的根上。不过,把它和稳妥却缓慢的二分法并排,一眼就能看出牛顿的速度有多压倒性。

灰色曲线是 f(x)=x²-2,其根为 √2≈1.414。用滑块设定起点 x0,再按一步。在当前点会画出金色切线,它与 x 轴的交点(小圆圈)就是下一个估计值。每按一次,点便沿着滑向根,下方的 f(x) 趋于 0。诀窍是去追易算直线的零点,而非曲线本身。用重置可从头再看一遍。

把同一方程的误差看成对数柱。每根柱是一步后的 |xn - √2|。对数刻度下越短越精确,触底就近乎完美。移动 x0 滑块。无论从哪里开始,柱都在几步内悬崖般跌落,因为每一步误差几乎被平方。误差 0.1 不是变成 0.01,而是按它自身平方的速度缩小。读数中正确位数每步翻倍,这就是二次收敛。

快不等于总是安全。试着选这三种失败。飞越发生在 x0 接近 0、f'(x)≈0 时:切线几乎水平,把估计值甩出屏幕。循环:从 0 开始解 f=x³-2x+2,它会在 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 位,很慢。牛顿在同样的步数里误差骤降。对比读数里的两个误差。三四步内,牛顿就把二分法远远甩开。安全靠二分法,速度靠牛顿;实战中两者并用。

实际应用牛顿法沿切线追 f(x)=0 的根:把当前点切线与 x 轴的交点当作下一个估计值。公式是 xn+1=xn - f(xn)/f'(xn)。奏效时是二次收敛,正确位数每步大约翻倍,把每次只减半误差的二分法远远甩开。但它并非万能:f' 接近零时会甩远,棘手曲线上会循环或发散,起点决定落向哪个根(basin)。所以实战智慧是好的起点加上像二分法这样的安全网,把快速的牛顿与可靠的二分法结合起来。
工程数学
如果有帮助,请支持我们