牛顿方法(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 ...
随机推荐
- jQuery Mobile + HTML5
最近项目需要,需要构建一个适合手持设备访问的站点,作者从网上查阅了一些资料,本文就是基于此而来. 首先下载jQuery Mobile http://jquerymobile.com/,选择稳定版即可. ...
- jenkins和docker 在docker里运行jenkins
在docker里运行jenkins server. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd ...
- 关于SQL SERVER的N前缀的理解
加N前缀指定后面的字符串为UNICODE常量, SQL Server 的 标准中的国家字符数据类型.SQL 使用前缀字符 N 标识这些数据类型及其值. , ),使用 个 个 Unicode字符时,使用 ...
- PAIP.MYSQL SLEEP 连接太多解决
PAIP.MYSQL SLEEP 连接太多解决 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.n ...
- html-css样式表
一.CSS:Cascading Style Sheet—层叠样式表,其作用是美化HTML网页. 样式表分类:内联样式表.内嵌样式表.外部样式表 1.内联样式表 和HTML联合显示,控制精确,但是可重用 ...
- Maven学习总结(八)——使用Maven构建多模块项目
在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层).dao(数据库访问层).service(业务逻辑层).web(表现层),这样分层之 ...
- Spring之@Configuration配置解析
1.简单的示例: @Configuration @EnableConfigurationProperties({DemoProperties.class}) public class DemoConf ...
- Android图片处理-图片压缩处理
这里先重复温习一下上一篇,调用相册获取图片: /*** * 这个是调用android内置的intent,来过滤图片文件 ,同时也可以过滤其他的 */ Intent intent = new Inten ...
- 冒泡算法应用(坐标Y值降序X值升序)
今天有个客户需求是有一坐标数组,希望按Y值降序X值升序排列,我临时写了个算法.先写个坐标类: class XYZ { public XYZ() { } public XYZ(doubl ...
- PHP引号转义中解决POST,GET,Mysql数据自动转义问题
在处理mysql和GET.POST的数据时,常常要对数据的引号进行转义操作. PHP中有三个设置可以实现自动对’(单引号),”(双引号),\(反斜线)和 NULL 字符转转. PHP称之为魔术引号,这 ...