牛顿法解方程的根

转载 2013年12月05日 11:56:13

牛顿法

4248人阅读 评论(13) 收藏 举报

平时经常看到牛顿法怎样怎样,一直不得要领,今天下午查了一下维基百科,写写我的认识,很多地方是直观理解,并没有严谨的证明。在我看来,牛顿法至少有两个应用方向,1、求方程的根,2、最优化。牛顿法涉及到方程求导,下面的讨论均是在连续可微的前提下讨论。

 

1、求解方程。

并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难。利用牛顿法,可以迭代求解。

原理是利用泰勒公式,在x0处展开,且展开到一阶,即f(x) = f(x0)+(x-x0)f'(x0)

求解方程f(x)=0,即f(x0)+(x-x0)*f'(x0)=0,求解x = x1=x0-f(x0)/f'(x0),因为这是利用泰勒公式的一阶展开,f(x) = f(x0)+(x-x0)f'(x0)处并不是完全相等,而是近似相等,这里求得的x1并不能让f(x)=0,只能说f(x1)的值比f(x0)更接近f(x)=0,于是乎,迭代求解的想法就很自然了,可以进而推出x(n+1)=x(n)-f(x(n))/f'(x(n)),通过迭代,这个式子必然在f(x*)=0的时候收敛。整个过程如下图:

 

2、牛顿法用于最优化

在最优化的问题中,线性最优化至少可以使用单纯行法求解,但对于非线性优化问题,牛顿法提供了一种求解的办法。假设任务是优化一个目标函数f,求函数f的极大极小问题,可以转化为求解函数f的导数f'=0的问题,这样求可以把优化问题看成方程求解问题(f'=0)。剩下的问题就和第一部分提到的牛顿法求解很相似了。

这次为了求解f'=0的根,把f(x)的泰勒展开,展开到2阶形式:

这个式子是成立的,当且仅当 Δx 无线趋近于0。此时上式等价与:

求解:

得出迭代公式:

一般认为牛顿法可以利用到曲线本身的信息,比梯度下降法更容易收敛(迭代更少次数),如下图是一个最小化一个目标方程的例子,红色曲线是利用牛顿法迭代求解,绿色曲线是利用梯度下降法求解。

在上面讨论的是2维情况,高维情况的牛顿迭代公式是:

其中H是hessian矩阵,定义为:

 

高维情况依然可以用牛顿迭代求解,但是问题是Hessian矩阵引入的复杂性,使得牛顿迭代求解的难度大大增加,但是已经有了解决这个问题的办法就是Quasi-Newton methond,不再直接计算hessian矩阵,而是每一步的时候使用梯度向量更新hessian矩阵的近似。Quasi-Newton method的详细情况我还没完全理解,且听下回分解吧。。。

牛顿迭代法求根——C语言

牛顿迭代法求根的原理: 设r是 的根,选取 作为r的初始近似值,过点 做曲线 的切线L,L的方程为 ,求出L与x轴交点的横坐标 ,称x...
  • cx1363525141
  • cx1363525141
  • 2016年11月12日 09:38
  • 4998

求一元方程的根(牛顿迭代法)

牛顿迭代公式: 那么根据该公式可以按以下步骤求解一元方程的任意次的根 (1) 选一个方程的近似根,赋给变量Xn; (2) 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;...
  • u013074465
  • u013074465
  • 2015年04月27日 09:05
  • 1527

二分法和牛顿迭代法求平方根(Python实现)

原文地址 求一个数的平方根函数sqrt(int num) ,在大多数语言中都提供实现。那么要求一个数的平方根,是怎么实现的呢? 实际上求平方根的算法方法主要有两种:二分法(binary...
  • Yan456jie
  • Yan456jie
  • 2016年08月26日 22:16
  • 2704

牛顿法解方程之混沌情况1.32VC++版

  • 2003年09月15日 00:00
  • 243KB
  • 下载

牛顿法解方程之混沌情况1.32

  • 2003年09月15日 00:00
  • 162KB
  • 下载

delphi版牛顿法求方程的根

  • 2011年04月11日 14:11
  • 165KB
  • 下载

迭代法解方程:牛顿迭代法、Jacobi迭代法

牛顿迭代公式 设已知方程f(x)=0的近似根x0 ,则在x0附近f(x)可用一阶泰勒多项式近似代替.因此, 方程f(x)=0可近似地表示为p(x)=0。用x1表示p(x)=0的根,它与f...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年01月11日 19:16
  • 612

关于使用牛顿迭代法和二分法解方程的算法说明

一、牛顿迭代法: 用牛顿迭代法求f(x)=0在x0附近的一个实根的方法是(1) 选一个接近于x的真实根的近似根x1;(2) 通过x1求出f(x1)。在几何上就是作x=x1,交f(x)于f(x1);(...
  • zcj331
  • zcj331
  • 2014年04月11日 13:30
  • 558

【数值分析】迭代法解方程:牛顿迭代法、Jacobi迭代法

本科课程参见:《软件学院那些课》 牛顿迭代公式 设已知方程f(x)=0的近似根x0 ,则在x0附近f(x)可用一阶泰勒多项式近似代替.因此, 方程f(x)=0可近似地表示为p(x)=0。用x1...
  • xiaowei_cqu
  • xiaowei_cqu
  • 2013年02月18日 14:31
  • 56670

【数值分析】迭代法解方程:牛顿迭代法、Jacobi迭代法

牛顿迭代公式 设已知方程f(x)=0的近似根x0 ,则在x0附近f(x)可用一阶泰勒多项式近似代替.因此, 方程f(x)=0可近似地表示为p(x)=0。用x1表示p(x)=0的根,它与f(x)=...
  • slime_kirito
  • slime_kirito
  • 2015年10月24日 10:39
  • 366
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:牛顿法解方程的根
举报原因:
原因补充:

(最多只允许输入30个字)