【数论】牛顿迭代法

本文深入探讨牛顿迭代法,一种用于求解方程近似解和优化问题的方法。介绍了牛顿法的基本思想,即利用切线作为函数的线性逼近,通过迭代逼近方程的根。内容涵盖切线与曲线的关系、几何直觉、代数解法、收敛性分析及其局限性。此外,还讨论了牛顿法在最优化问题中的应用、优缺点,并对比了与梯度下降法的效率。文章还提及了阻尼牛顿法、拟牛顿法等变种,以及它们在实际计算中的应用和优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.引入/简介

2. 前置知识---导数

切线是曲线的线性逼近

3.几何直觉

4.代数解法

5.收敛性分析

5.1 驻点

5.2 越来越远离的不收敛

5.3 循环震荡的不收敛

5.4 不能完整求出所有的根

5.5 自己动手试试

5.6牛顿迭代法局部收敛定理

5.7总结

6.牛顿最优化方法

7.牛顿迭代法评价

关于牛顿法和梯度下降法的效率对比

8.牛顿迭代法的优缺点

9.牛顿-拉弗森方法的应用

10.计算重根的牛顿迭代法

11.阻尼牛顿法

12.拟牛顿法(Quasi-Newton Methods)

12.1拟牛顿条件

12.2满足拟牛顿条件的几种算法

12.3Wolf条件:步长的一维非精确搜索


1.引入/简介

五次及以上多项式方程没有根式解(就是没有像二次方程那样的万能公式),这个是被伽罗瓦用群论做出的最著名的结论。

但是,没有王屠夫难道非得吃带毛猪?工作生活中还是有诸多求解高次方程的真实需求(比如行星的轨道计算,往往就是涉及到很复杂的高次方程),这日子可怎么过下去啊?

没有根式解不意味着方程解不出来,数学家也提供了很多方法,牛顿迭代法就是其中一种。

本文介绍如何用牛顿迭代法(Newton's method for finding roots)求方程的近似解,该方法于 17 世纪由牛顿提出。

具体的任务是,对于在[a,b]  上连续且单调的函数 f(x) ,求方程  f(x)=0 的近似解。

牛顿迭代法
求出根号a的近似值:首先随便猜一个近似值x,然后不断令x等于x和a/x的平均数,迭代个六七次后x的值就已经相当精确了。 
例如,我想求根号2等于多少。假如我猜测的结果为4,虽然错的离谱,但你可以看到使用牛顿迭代法后这个值很快就趋近于根号2了: 
( 4 + 2/4 ) / 2 = 2.25 
( 2.25 + 2/2.25 ) / 2 = 1.56944.. 
( 1.56944..+ 2/1.56944..) / 2 = 1.42189.. 
( 1.42189..+ 2/1.42189..) / 2 = 1.41423.. 
…. 
 

 

对于高维函数,用牛顿法求极值也是这个形式,只不过这里的y'和y''都变成了矩阵和向量。而且你也可以想到,高维函数二阶导有多个,写成矩阵的形式Hessian矩阵:

 

 

y'就变成了对所有参数的偏导数组成的向量

 

 

然而算的可能非常慢,数也可能很大。简单的解决办法,有一种叫做批迭代的方法,不管是在梯度计算极值还是在牛顿计算极值上都是可行的,就是假设失去大部分点对准确度没有太大的影响,比如说3个在一条直线上的点,去掉一个也没什么关系,最后反正还是会拟合成同一个参数。批迭代就是在众多的点中随机抽取一些,进行迭代计算,再随机抽取一些再进行迭代。迭代的路径可能不完美,但是最终还是会找到我们想要的答案。(有点类似mini-batch)

当然还有其他更帅的解决方法,祝如DFP,BFGS,Broyden。

2. 前置知识---导数

切线是曲线的线性逼近

要讲牛顿迭代法之前我们先说一个关键问题:切线是曲线的线性逼近。

这个是什么意思呢?我们来看一看,下面是 f(x)=x^2 的图像:

我们随便选f(x) 上的一点(A,f(A)) 做它的切线:

我们在A点处放大图像:

上图中,红色的线是f(x) ,黑色的是A点处的切线,可以看出放大之后切线和 f(x)非常接近了。很明显,如果我们进一步放大图像,A点切线就越接近 f(x)。

可以自己动手试试:

此处有互动内容,点击此处前往操作。

因为切线是一条直线(也就是线性的),所以我们可以说,A点的切线是f(x) 的线性逼近。离A点距离越近,这种逼近的效果也就越好,也就是说,切线与曲线之间的误差越小。所以我们可以说在A点附近,“切线\approx f(x) ”。 

我们将切线的斜率记作在x处的导数 ,即\large f'(x)

对于幂函数 f( x )=x^n,它在 \large x_0 处的导数为 \large f'(x)=nx^{n-1},利用极限的思想即可推导出来。

3.几何直觉

牛顿迭代法又称为牛顿-拉弗森方法,实际上是由牛顿、拉弗森(又是一个被牛顿大名掩盖的家伙)各自独立提出来的。

牛顿-拉弗森方法提出来的思路就是利用切线是曲线的线性逼近这个思想。

牛顿、拉弗森们想啊,切线多简单啊,研究起来多容易啊,既然切线可以近似于曲线,我直接研究切线的根不就成了。

然后他们观察到这么一个事实:

随便找一个曲线上的A点(为什么随便找,根据切线是切点附近的曲线的近似,应该在根点附近找,但是很显然我们现在还不知道根点在哪里),做一个切线,切线的根(就是和x轴的交点)与曲线的根,还有一定的距离。牛顿、拉弗森们想,没关系,我们从这个切线的根出发,做一根垂线,和曲线相交于B点,继续重复刚才的工作:

之前说过,B点比之前A点更接近曲线的根点,牛顿、拉弗森们很兴奋,继续重复刚才的工作:

第四次就已经很接近曲线的根了:

经过多次迭代后会越来越接近曲线的根(下图进行了50次迭代,哪怕经过无数次迭代也只会更接近曲线的根,用数学术语来说就是,迭代收敛了):

牛顿法搜索动态示例图&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值