本文使用 Zhihu On VSCode 创作并发布
从不动点迭代到牛顿法
为了利用不动点迭代法求解函数零点,我们需要对
做一定的变形,得到
的形式。
当然我们可以简单变形为
,但是这么做不一定能保证
不动点迭代收敛定理中的导数条件
成立。
一个简单的改进是
,我们设想其中K是我们选定的能使导数条件成立的常数。
但是很可惜这种策略不能应对
符号发生变化的情形:当
变号时,K不能跟着变号,这就造成了
进一步的,我们想到可以把常数K换成一个函数
,也就是将方程变形为
.只要在
变号的时候
也变号,那么我们也许就有办法让导数条件成立。
最简单的选择就是直接取
,于是我们就得到了
牛顿法:
设想将
当作常数处理,我们能得到当然按照商的导数法则我们不能这么办,但这暗示我们取
可能是某种意义下的最优选择
牛顿法
从上一节的讨论中,我们可以看到牛顿法是不动点方法的一个变种.
在牛顿法中,我们取
,也就是说我们有迭代式:
现在我们重新审查这个迭代式,我们可以发现它具有很好的性质。从几何和分析的角度出发,我们可以重新解释牛顿法(这也是科普牛顿法时通常的切入点)
几何意义: 切线法
GIF动图演示
牛顿法迭代动图
分析意义: 泰勒近似
众所周知
在
处的一阶泰勒展开式为:
若
为
的根,则
假设
很小,那么我们可以忽略掉高阶小量
于是我们就有
从而
牛顿法的局部收敛性
即便采用了种种策略,我们仍然发现牛顿法迭代并不能时刻满足导数条件
对于一些离根较远的初始估计,牛顿法常常不能收敛到我们想要的根,如下图↓
只有对于足够接近
的初值
才能收敛到我们想要的解。
这点表明,牛顿法是一种局部收敛的方法
定义(局部收敛).
如果存在函数零点
的某个邻域,迭代方法对在该邻域内所有的初值都收敛到,则称该迭代方法局部收敛到
牛顿法收敛定理
设
.若是在上的零点,且满足. 那么牛顿法局部收敛到
证明.
我们只需验证
满足不动点收敛定理的条件
(
) 由
知
,即
连续
(
)
由
的连续性知存在
的邻域
,
(
)
牛顿法的收敛速度
定义(二次收敛).
令
表示迭代过程中第步的误差,如果则该方法称为满足二次收敛
牛顿法的二次收敛
在满足收敛定理的条件下,牛顿法二次收敛到函数的零点。
证明.
于是
Note.
牛顿法能比二分法和FPI更快地收敛到根,这是因为它使用了函数更多的信息(例如切线的方向)