牛顿方法(Newton-Raphson Method)
本博客已经迁往http://www.kemaswill.com/, 博客园这边也会继续更新, 欢迎关注~
牛顿方法是一种求解等式的非常有效的数值分析方法.
1. 牛顿方法
假设\(x_0\)是等式的根\(r\)的一个比较好的近似, 且\(r=x_0+h\), 所以\(h\)衡量了近似值\(x_0\)和真实的根\(r\)之间的误差. 假定\(h\)很小, 根据泰勒展开式:
$$0=f(r)=f(x_0+h)\approx f(x_0)+hf'(x_0)$$
所以, 当\(f'(x_0)\)不接近\(0\)时, 有
$$h\approx -\frac{f(x_0)}{f'(x_0)}$$
所以新的近似值\(x_1\)应该取值:
$$x_1=x_0-\frac{f(x_0)}{f'(x_0)}$$
推广得
$$x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}$$
2. 牛顿方法的几何解释
牛顿方法的几何解释很直观: 在当前点\(x_n=a\)处, 做函数\(f(x)\)的切线, 该切线的\(x\)轴截距就是\(x_{n+1}=b\), 然后再在该点处做切线...以此类推:
3. 牛顿方法的收敛性:
牛顿方法是二次收敛的: 令\(\epsilon_{n}=r-x_n\), 则\(\epsilon_{n+1}=\frac{-f"(\xi_n)}{2f'(x_n)}\epsilon_n^2\), 亦即在根\(r\)附近时, 牛顿方法的每次迭代基本上都可以使得近似解的有效数字增倍. 证明如下:
令等式的根为\(r\), \(f(x)\)二阶可导, 则根据泰勒展开式:
$$f(r)=f(x_n)+f'(x_n)(r-x_n)+R_1$$
其中\(R_1=\frac{1}{2!}f''(\xi_n)(r-x_n)^2\), 其中\(\xi_n\)位于\(x_n\)和\(r\)之间.
因为\(r\)是跟, 则:
$$0=f(r)=f(x_n)+f'(x_n)(r-x_n)+\frac{1}{2}f''(\xi_n)(r-x_n)^2$$
上式除以\(f'(x_n)\)可得
$$\frac{f(x_n)}{f'(x_n)}+(r-x_n)=\frac{-f''(\xi_n)}{2f'(x_n)}(r-x_n)^2$$
因为\(x_{n+1}\)的可以定义为:
$$x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}$$
所以
$$r-x_{n+1}=\frac{-f"(\xi_n)}{2f'(x_n)}(r-x_n)^2$$
$$\epsilon_{n+1}=\frac{-f"(\xi_n)}{2f'(x_n)}\epsilon_n^2$$
但是, 当初始值\(x_0\)不在\(r\)附近时, 牛顿方法可能会陷入局部极值或者死循环:
4. 割线方法(Secant Method)
割线方法是牛顿方法的变种, 可以避免计算函数的导数.
初始时设置两个根的近似值\(x_0,x_1\), 对于\(n\leq1\):
$$x_{n+1}=x_n-\frac{f(x_n)}{Q(x_{n-1},x_n)}$$
其中
$$Q(x_{n-1},x_n)=\frac{f(x_{n-1})-f(x_n)}{x_{n-1}-x_n}$$
割线方法通过使用割线来替代牛顿方法中的切线, 来避免可能非常复杂的函数求导. 但是为了达到相同的精度, 割线方法可能多需要45%的迭代次数.
参考文献:
[1]. The Newton-Raphson Method
[2]. William H.Press, Saul A. Teukolsky, William T. Vetterling, Brain P.Flannery. Numerical Recipes: The Art of Scientific Computing. Section 9.4, Newton-Raphson Method Using Derivative.
[3]. Wikipedia: Newton's Method
牛顿方法(Newton-Raphson Method)的更多相关文章
- 牛顿迭代法(Newton's Method)
牛顿迭代法(Newton's Method) 简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出.但是,这一方法在牛顿生前并未公开发表. 牛顿法的作用是使用迭代的方法来求解函数方程的根. ...
- 牛顿迭代法(Newton's Method)
牛顿迭代法(Newton's Method) 简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出.牛顿法的作用是使用迭代的方法来求解函数方程的根.简单地说,牛顿法就是不断求取切线的过程. ...
- 牛顿方法(Newton's Method)
在讲义<线性回归.梯度下降>和<逻辑回归>中我们提到可以用梯度下降或梯度上升的方式求解θ.在本文中将讲解另一种求解θ的方法:牛顿方法(Newton's method). 牛顿方 ...
- Newton's Method
在求最优解时,前面很多地方都用梯度下降(Gradient Descent)的方法,但由于最优步长很难确定,可能会出现总是在最优解附近徘徊的情况,致使最优解的搜索过程很缓慢.牛顿法(Newton's M ...
- 牛顿法(Newton's Method)
Newton's Method 在求最优解时,前面很多地方都用梯度下降(Gradient Descent)的方法,但由于最优步长很难确定,可能会出现总是在最优解附近徘徊的情况,致使最优解的搜索过程很缓 ...
- 【cs229-Lecture4】Newton’s method
之前我们在求Logistic回归时,用的是梯度上升算法,也就是要使得似然函数最大化,利用梯度上升算法,不断的迭代.这节课引出牛顿方法,它的作用和梯度上升算法的一样的,不同的是牛顿方法所需的迭代次数更少 ...
- 机器学习-牛顿方法&指数分布族&GLM
本节内容 牛顿方法 指数分布族 广义线性模型 之前学习了梯度下降方法,关于梯度下降(gradient descent),这里简单的回顾下[参考感知机学习部分提到的梯度下降(gradient desce ...
- 小菜学习设计模式(三)—工厂方法(Factory Method)模式
前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...
- 浅谈C++设计模式之工厂方法(Factory Method)
为什么要用设计模式?根本原因是为了代码复用,增加可维护性. 面向对象设计坚持的原则:开闭原则(Open Closed Principle,OCP).里氏代换原则(Liskov Substitution ...
随机推荐
- clientHeight,offsetHeight与scrollHeight的相关知识
在html里,width与height是最常用也是最基础的两个属性,因此,在js里,我们也经常需要操作这两个属性.js关于这两个属性提供了client*,offset*与scroll*,很多同学搞不清 ...
- Atitit.计算机图形图像图片处理原理与概论attilax总结
Atitit.计算机图形图像图片处理原理与概论attilax总结 计算机图形1 图像处理.分析与机器视觉(第3版)1 数字图像处理(第六版)2 图像处理基础(第2版)2 发展沿革 1963年,伊凡·苏 ...
- atitit.无线网卡 不能搜索到WiFi 无线路由信号的解决不能上网
atitit.无线网卡 不能搜索到WiFi 无线路由信号的解决不能上网 #---现象 pc机无线网卡不能搜索到无线路由信号.. 但是笔记本和手机是可以的... 不过pc机无线网卡能搜索到别的路由的信号 ...
- iOS开发-迭代器模式
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示.开发过程中,我们可能需要针对不同的需求,可能需要以不同的方式来遍历整个整合对象,但是我们不希望 ...
- php三种基础算法:冒泡,插入和快速排序法
$array = array(2,3,5,6,9,8,1); //冒泡排序思想,前后元素比较 function sort_bulldle($array){ $num = count($array); ...
- android: 内容提供器简介
我们学了 Android 数据持久化的技术,包括文件存储.SharedPreferences 存 储.以及数据库存储.不知道你有没有发现,使用这些持久化技术所保存的数据都只能在当 前应用程序中访问.虽 ...
- Puppet Openstack Mitaka Design Summit小结
Puppet Openstack Design Summit小结 经过Puppet Openstack社区的不断努力,Puppet Openstack社区目前提供的Official Modules已经 ...
- Code Consultation
Need help architecting or coding your application? You can get technical help with building applicat ...
- PUT vs POST in REST
来自:http://stackoverflow.com/questions/630453/put-vs-post-in-rest http://www.15yan.com/story/7dz6oXiS ...
- Gradle中ProGuard的配置
好久没有写博客了…元旦前赶紧写一篇吧… 这些日子琢磨了一下gradle.对比起maven确实在配置上灵活很多,对groovy的支持可以更容易的自定义任务. 由于最近的几个项目中都使用到了moco这个开 ...