有些方程没有求根公式。$e^x+x-3=0$ 没有像一元二次方程那样的公式,而三次方程的公式又繁琐得几乎没人使用。这时候的办法是逼近:先猜一个值,看看差多少,再修正猜测。问题在于如何修正得好。

牛顿的例子

在 1669 年的《分析》中,牛顿选了这个方程:

$$y^3-2y-5=0.$$

试算之后,他发现根在 $2$ 附近,因为 $2^3-2\cdot2-5=-1$。于是他写 $y=2+p$,其中 $p$ 是还缺的修正量,代入得到:

$$(2+p)^3-2(2+p)-5=p^3+6p^2+10p-1=0.$$

既然 $p$ 很小,$p^2$ 和 $p^3$ 就更小。牛顿把它们丢掉,只留下 $10p-1=0$,得 $p=0.1$。新的猜测:$y=2.1$。再用 $y=2.1+q$ 重复同样的想法,得到 $q\approx-0.0054$,依此类推。几步之后,他得到 $y\approx2.09455148$。

几何思想:沿着切线走

丢掉 $p^2$ 和 $p^3$,等于用曲线的切线来代替曲线。在切点附近,切线几乎与曲线重合,而求直线与坐标轴的交点很容易。

从猜测值 $x_n$ 出发,函数 $f$ 的图像在该点的切线是

$$y=f(x_n)+f'(x_n)(x-x_n).$$

它在 $y=0$ 处与横轴相交。解出 $x$,就得到新的猜测:

$$x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}.$$

用文字说:新猜测 = 猜测 − f(猜测) ÷ f′(猜测)。

用于牛顿的方程,$f(y)=y^3-2y-5$,$f'(y)=3y^2-2$,公式给出:

步骤 $y$
0 2
1 2.1
2 2.0945681
3 2.0945514817
4 2.0945514815

每走一步,正确的小数位数大约翻一倍。

例子:平方根

要计算 $\sqrt2$,我们解 $x^2-2=0$。由 $f'(x)=2x$,公式变成

$$x_{n+1}=\frac12\left(x_n+\frac{2}{x_n}\right),$$

即猜测值与“2 除以猜测值”的平均。从 $x_0=2$ 开始:$1.5$,然后 $1.41667$,然后 $1.4142157$。巴比伦人在将近 4000 年前就用过这个方法;牛顿法表明,它只是一个更普遍思想的特例。

√2 的近似值
步骤x残差 x² − 2

选择一个正的近似值,每次前进一步。残差 x² − 2 显示近似值离满足方程还差多少。

同样地,要求 $\sqrt7$,就解 $x^2-7=0$。从 $3$ 开始:$2.6667$、$2.64583$、$2.6457513$。三步就已有七位正确数字。

例子:黄金比

希腊人早就知道一个著名的问题:在线段 $AC$ 上取一点 $B$,使整条线段比较长的部分,等于较长的部分比较短的部分:

$$\frac{AC}{AB}=\frac{AB}{BC}.$$

欧几里得称之为把线段分成中外比,并在《几何原本》第六卷命题 30 中给出了尺规作图;用面积表述的版本已经出现在命题 II.11中。设 $BC=1$、$AB=x$,条件变为 $\frac{x+1}{x}=x$,即

$$x^2-x-1=0.$$

它的正根就是黄金比 $\varphi=\frac{1+\sqrt5}2\approx1.6180340$。取 $f(x)=x^2-x-1$、$f'(x)=2x-1$,牛顿法给出

$$x_{n+1}=x_n-\frac{x_n^2-x_n-1}{2x_n-1}=\frac{x_n^2+1}{2x_n-1}.$$

从 $x_0=2$ 出发,用分数计算:

$$x_1=\frac53,\qquad x_2=\frac{34}{21},\qquad x_3=\frac{1597}{987}\approx1.6180344.$$

分子和分母全都属于斐波那契数列 $1,1,2,3,5,8,13,21,34,\dots$,其中每一项都是前两项之和。比萨的列奥纳多,即斐波那契,在 1202 年的《算盘书》(Liber abaci)中通过一个兔子繁殖的问题发表了它。相邻两项之比趋近于 $\varphi$:$\frac85=1.6$,$\frac{13}8=1.625$,$\frac{21}{13}\approx1.615$。牛顿法在这些比值之间跳跃,每一步大约使正确的位数加倍:$x_3$ 已经有六位小数正确。

例子:没有公式的方程

方程 $e^x+x-3=0$ 混合了指数函数和多项式。这类方程叫作超越方程,在物理、化学和工程中随处可见。取 $f(x)=e^x+x-3$,$f'(x)=e^x+1$,从 $x_0=0.85$ 开始:

$$x_1\approx0.7932,\qquad x_2\approx0.79206,\qquad x_3\approx0.7920600.$$

如果是一次方程呢?

用 $3x-6=0$ 来检验这个方法。$f'(x)=3$,任取猜测值 $c$:

$$c-\frac{3c-6}{3}=c-(c-2)=2.$$

无论猜测是多少,一步就得到精确答案。这很合理:图像本身就是直线,它的切线就是它自己。

方法何时失灵

这个方法很快,但并非万无一失。如果切线是水平的($f'(x_n)=0$),它永远不会与横轴相交,除法也无法进行。糟糕的初始猜测可能把序列带离根,或者让它在几个值之间来回跳动。实际使用时,我们从靠近根的地方开始(比如先看图像),当相邻两次猜测在所需精度上一致时就停止。

练习:从 x = 1 出发,对 √2 走一步

$x_1=\frac12\left(1+\frac21\right)=1.5$。残差从 $1^2-2=-1$ 变为 $1.5^2-2=0.25$:猜测跳到了根的另一侧,但离根近多了。

练习:写出求 10 的立方根的迭代公式

解 $x^3-10=0$,$f'(x)=3x^2$: $x_{n+1}=x_n-\dfrac{x_n^3-10}{3x_n^2}=\dfrac{2x_n^3+10}{3x_n^2}$。从 $2$ 开始:$x_1=\dfrac{26}{12}\approx2.1667$,而 $\sqrt[3]{10}\approx2.1544$。

资料来源: 牛顿传记,MacTutor · 牛顿–拉弗森法的历史图示。


艾萨克·牛顿的全部主题 · ← 面积与积分:流数的逆运算 · 运动定律:力与速度的变化 →

图片来源.