重启数学:如使何用牛顿迭代法?

889 字

一、几何解释

牛顿、拉弗森曾各自提出解决高次方程的方法,最后被合称为牛顿-拉弗森方法或称牛顿迭代法。这种方法的思路就是:切线是曲线的线性逼近,怎么理解呢?假如存在一个函数$f(x)=x^{2}$,我们随便选取$f(x)$上的点$(a,f(a))$做它的切线:

当在 A 点放大时,可以看出切线和函数$f(x)$非常接近。很显然,如果进一步放大图像,A 点切线就越接近$f(x)$。因为切线是一条直线(也就是线性的),那就可以说 A 点的切线是f(x)的线性逼近。离A点距离越近,这种逼近的效果也就越好,也就是说,切线与曲线之间的误差越小。所以我们可以说在A点附近,”切线 $\approx f(x)$”。

相对复杂函数的根,显然切线的根研究起来非常容易,既然切线可以近似于曲线,那么能否通过切线来研究复杂函数的根呢?存在这样一个事实:

随便找一个曲线上的 A 点(为什么随便找,根据切线是切点附近的曲线的近似,应该在根点附近找,但是很显然我们现在还不知道根点在哪里),做一个切线,切线的根(就是和x轴的交点)与曲线的根,还有一定的距离。从这个切线的根出发,做一根垂线,和曲线相交于B点,继续重复刚才的工作;显然当过 D 切点的切线的根和函数的解已经非常接近!我们有理由相信当经过足够多次迭代之后我们得到的切线的根会无线接近曲线的根,这从数学属于来说是:迭代收敛了;我们从代数的角度来看:

已知曲线方程$f(x)$,选取$x_{n}$点做切线,求$x_{n+1}$:

显然根据斜率公式可得:

$$\frac{f(x_{n+1}) - f(x_{n})}{x_{n+1}-x_{n}} = f’(x_{n}) \Rightarrow \\ x_{n+1} = x_{n} - \frac{f(x_{n})}{f’{x_{n}}}$$

二、代数求解

虽然几何方法更直观,但现在很多教材使用泰勒展开式来推导牛顿法:

在$x_{n}$附近,将$f(x)$展开到一阶:

$$f(x) \approx f(x_{n}) + f’(x_{n})(x-x_{n})$$

我们想找到$f(x)=0$的解,于是近似式为零:

$$0 = f(x_{n}) + f’(x_{n})(x-x_{n})$$

解得:

$$x = x_{n} - \frac{f(x_{n})}{f’{x_{n}}}$$

几何方式与泰勒展开方式的关系可如下表所示:

特征 几何(切线)视角 泰勒展开视角
本质 几何直观的方法是公式的解释 数学分析方法是公式的来源
优点 严谨,具有普适性,且便于分析收敛性,
可以推广到更复杂的情况(如多元函数)
极其直观,容易理解和记忆,
提供了清晰的图像化思考
关系 内核与基础 外在表现与等价解释

三、存在的问题

牛顿迭代法对于初始值非常敏感,如果初始值选的不好,可能出现:

  • 不收敛
  • 收敛到错误的根(非目标根)
  • 在局部振荡或者发散
  • 导数约等于0导致的数据爆炸

这就需要我们在面对的实际问题中引入其他的解决方式去尽可能的消除这种缺陷的影响。

//