python 拟牛顿法 求非线性方程_02非线性方程求根:牛顿法

本文使用 Zhihu On VSCode 创作并发布

从不动点迭代到牛顿法

为了利用不动点迭代法求解函数零点,我们需要对

做一定的变形,得到
的形式。

当然我们可以简单变形为

,但是这么做不一定能保证
不动点迭代收敛定理中的导数条件
成立。

一个简单的改进是

,我们设想其中K是我们选定的能使导数条件成立的常数。

但是很可惜这种策略不能应对

符号发生变化的情形:当
变号时,K不能跟着变号,这就造成了

进一步的,我们想到可以把常数K换成一个函数

,也就是将方程变形为
.只要在
变号的时候
也变号,那么我们也许就有办法让导数条件成立。

最简单的选择就是直接取

,于是我们就得到了
牛顿法

设想将

当作常数处理,我们能得到

当然按照商的导数法则我们不能这么办,但这暗示我们取

可能是某种意义下的最优选择

牛顿法

从上一节的讨论中,我们可以看到牛顿法是不动点方法的一个变种.

在牛顿法中,我们取

,也就是说我们有迭代式:

现在我们重新审查这个迭代式,我们可以发现它具有很好的性质。从几何和分析的角度出发,我们可以重新解释牛顿法(这也是科普牛顿法时通常的切入点)

几何意义: 切线法

GIF动图演示

1479ed6637ef9906790279864a374ffe.gif
牛顿法迭代动图
分析意义: 泰勒近似

众所周知

处的一阶泰勒展开式为:

的根,则

假设

很小,那么我们可以忽略掉高阶小量

于是我们就有

从而

牛顿法的局部收敛性

即便采用了种种策略,我们仍然发现牛顿法迭代并不能时刻满足导数条件

对于一些离根较远的初始估计,牛顿法常常不能收敛到我们想要的根,如下图↓

b27467687bf519dfdf3ae4c3c23b1b96.png
只有足够接近p的初始值能收敛

只有对于足够接近

的初值
才能收敛到我们想要的解。

这点表明,牛顿法是一种局部收敛的方法

定义(局部收敛).

如果存在函数零点

的某个邻域
,迭代方法对在该邻域内所有的初值
都收敛到
,则称该迭代方法
局部收敛

牛顿法收敛定理

.若
上的零点,且满足
. 那么牛顿法
局部收敛

证明.

我们只需验证

满足不动点收敛定理的条件

(

) 由
,即
连续

(

)

的连续性知存在
的邻域
,

(

)

牛顿法的收敛速度

定义(二次收敛).

表示迭代过程中第
步的误差,如果

则该方法称为满足二次收敛

牛顿法的二次收敛

在满足收敛定理的条件下,牛顿法二次收敛到函数的零点。

证明.

于是

Note.

牛顿法能比二分法和FPI更快地收敛到根,这是因为它使用了函数更多的信息(例如切线的方向)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值