牛顿法(也称为牛顿-拉弗森方法)是一种递归算法,用于逼近可微函数的根。我们知道用于寻找线性和二次方程的根的简单公式,并且还有一些用于三次方程和四次方程的更复杂公式。曾经有人希望能够找到用于五次方程和更高次方程的公式,但后来由尼尔斯·亨利克·阿贝尔证明,这样的方程不存在。牛顿-拉弗森方法是一种用于逼近任意阶数多项式方程的根的方法。事实上,该方法适用于任何方程,无论是否为多项式,只要函数在所需区间内可微。
为了解释牛顿法,假设
已经非常接近
的一个零点。我们知道,如果我们只查看非常接近
的点,那么
看起来像它的切线。如果
已经接近
为 0 的位置,并且在
附近我们知道
看起来像它的切线,那么我们希望
处切线的零点比
本身是一个更好的近似值。
过点
的函数
的切线的方程为:

现在我们令
并解出
。




我们认为这个
值应该是
的一个更好的近似值。我们称这个
值为
,经过简单的代数运算,我们得到

如果我们的直觉是正确的,并且
实际上是
的根的更好近似值,那么我们的逻辑应该同样适用于
。我们可以看看在
处的切线为零的地方。我们称之为
,根据上面的代数,我们得到了公式

我们可以一直这样做,只要我们愿意。在每一步中,如果你的当前近似值是
,我们的新近似值将是
。
求函数
的根。
图 1:牛顿法应用于
的几个迭代,从
开始。蓝色曲线是
。其他实线是各个迭代点的切线。
可以看到,
逐渐逼近 0(我们知道这是
的根)。可以以任意精度逼近函数的根。
答案:
在
处有一个根。
图 2:牛顿法应用于函数

从
开始。
当
时,此方法会失效。在这种情况下,应该选择一个新的起点。有时会发生
和
有一个共同的根。为了检测是否属实,我们应该首先找到
的解,然后检查
在这些地方的值。
牛顿法也不一定能对每个函数都收敛,例如

对于这个函数,选择任何
则
将会导致连续的近似值来回交替,因此无论迭代多少次,我们都无法比第一次猜测更接近根。
图 3:牛顿法应用于函数
,初始猜测为
,最终会在上面显示的三个点之间迭代。
如果函数有一个局部最大值或最小值没有穿过 x 轴,牛顿法也可能无法收敛到一个根。例如,考虑
,初始猜测为
。在这种情况下,牛顿法会被这个函数所迷惑,因为它会向 x 轴倾斜,但在初始猜测附近不会穿过 x 轴。