堂前燕
数学 · 高中 · 数值方法 · 牛顿法 · 迭代 · 分形 · 复数

牛顿迭代法 · 切线找根与牛顿分形

用切线代替曲线找方程的根。1D 看每步多漂亮地"二阶收敛",2D 看分形如何从确定算法里冒出来。

一个想法

要找方程 f(x)=0f(x) = 0 的根。任何复杂曲线在局部都能用切线近似 —— 那就用切线代替函数,找切线与 x 轴的交点作为新的猜测。

数学上:

xn+1=xnf(xn)f(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

这就是牛顿(-拉夫森)迭代法,1669 年牛顿发明,1690 年 Joseph Raphson 给出现代形式。没有比这更简单也更深刻的数值算法了。

二阶收敛 —— 每步有效数字翻倍

普通迭代(比如二分法)误差线性减半 —— 想多 1 位精度要 ~3.3 步。

牛顿法在足够接近根时二阶收敛

xn+1xCxnx2\|x_{n+1} - x^*\| \approx C \cdot \|x_n - x^*\|^2

每步误差平方 —— 这意味着每步有效数字大致翻倍。从 0.001 到 0.000001 只要一步。

试试看:在 1D 模式选 x² − 2(找 √2),从 x=2 开始一步步运行,看 |f| 这一列每步缩小多少。

何时翻车

牛顿法不是万能的。三种典型失败:

  1. f’(x) = 0:切线水平,公式分母为零。算法直接挂掉
  2. 猜测离根太远:切线可能把你扔到很远的地方,开始震荡甚至飞出去
  3. 重根处变慢:例如 f(x)=(x1)2f(x) = (x-1)^2 在 x=1 是重根,f’ 也为 0,牛顿法退化成线性收敛

试 1D 的 (x−1)(x−2)(x−3) —— 三个简单根,但选不同起点会跳进不同的根;选 x=2 附近的中点(不偏向任何一根),可能反复横跳。

复数平面 + 分形

把牛顿法用到复数多项式上 —— 公式一字不变,但 xx 换成 z=x+iyz = x + iy。每个起点最终收敛到 f(z)=0f(z) = 0 的某个根。

给每个起点的最终归属上色 → 牛顿分形

切到 2D 模式 + z³ − 1

  • 三个根:1、e2πi/3e^{2\pi i/3}e4πi/3e^{4\pi i/3},分别用红、绿、紫色标记
  • 颜色越亮 = 越快收敛(迭代步数少)
  • 三色边界是分形 —— 任意小的局部都有三种颜色相邻,无穷自相似

为什么是分形?因为在三色边界附近,起点稍微移动一下,落进的根就变了 —— 算法对初值极端敏感。这是确定性算法产生分形的最干净例子。

切到 z⁴ − 1 和 z⁵ − 1

z⁴ − 1 四个根在 1、i、−1、−i —— 边界是经典的”四花瓣”分形。

z⁵ − 1 五个根均布单位圆上 —— 五星花瓣。

z³ − 2z + 2 是 Cayley 在 1879 年研究的经典反例 —— 某些起点永远不收敛(在两点间来回震荡),形成无收敛区。这片”黑色裂缝”是数学史的小遗迹。

一个不常被讲的细节

牛顿分形是首批被发现的分形之一(19 世纪 Cayley 已经研究过 z³ − 1 的牛顿迭代),但被完全可视化要等到 1980 年代有了计算机。Mandelbrot 集 (1980) 比牛顿分形晚 100 多年才进入大众视野,但牛顿分形比它更老、数学起源更纯粹。

真实世界的牛顿法

  • 超越方程:开普勒方程 M=EesinEM = E - e \sin E 求轨道偏近角 —— 卫星导航必备
  • 金融:期权定价的 Black-Scholes 反推隐含波动率
  • GPU/优化器:Adam 和它的变体本质是”近似牛顿”(用对角 Hessian 估计代替真二阶信息)—— 这也是为什么梯度下降 demo 里 Adam 收敛比 SGD 快
  • 科学计算:解大规模非线性方程组 —— 流体、固体、电磁场仿真的内层
  • 机器学习推断:Logistic 回归参数估计、最大似然估计(MLE)的标准解法
  • CAD / 计算几何:找两条曲线的交点

牛顿法 350 年前发明的算法,今天仍是计算科学的最底层基石之一。比线性代数年长,比微积分稍年轻,简单到能写在一张纸条上。