1、牛顿法应用范围

                         牛顿法主要有两个应用方向:1、目标函数最优化求解。例:已知 f(x)的表达形式,,求 ,及g(x)取最小值时的 x ?,即

                                                          由于||f(x)||通常为误差的二范数,此时这个模型也称为最小二乘模型,即

                                                      2、方程的求解(根)。例:求方程的解:g(x) = 0,求 x ?

                    这两个应用方面都主要是针对g(x)为非线性函数的情况。2中,如果g(x)为线性情况下的求解通常使用最小二乘法求解。

                         牛顿法的核心思想是对函数进行泰勒展开。

           2、牛顿法用于方程求解

                    对f(x)进行一阶泰勒公式展开:

                                                

                    此时,将非线性方程 g(x) = 0 近似为线性方程:

                                                

                    若 f’(x) != 0,则下一次迭代解为:

                                                   

                    牛顿迭代示意图(因此Newton迭代法也称为切线法):

                                         

          3、牛顿法用于函数最优化求解

                     对f(x)进行二阶泰勒公式展开:

                                               

                     此时,将非线性优化问题 min f(x) 近似为为二次函数的最优化求解问题:

                                               

                     对于(5)式的求解,即二次函数(抛物线函数)求最小值,对(5)式中的函数求导:

                                               

                                              

                     从本质上来讲,最优化求解问题的迭代形式都是:

                     其中k为系数,为函数的梯度(即函数值上升的方向),那么为下降的方向,

                     最优化问题的标准形式是:求目标函数最小值,只要每次迭代沿着下降的方向迭代那么将逐渐达到最优,

                     而牛顿将每次迭代的步长定为:

            4、补充

                          a、严格来讲,在“3、牛顿法用于函数最优化求解”中对函数二阶泰勒公式展开求最优值的方法称为:Newton法

                         而在“2、牛顿法用于方程求解”中对函数一阶泰勒展开求零点的方法称为:Guass-Newton(高斯牛顿)法

                     b、在上面的陈述中,如果x是一个向量,那么公式中:

                         应该写成:为Jacobi(雅克比)矩阵。

                         应该写成:为Hessian(海森)矩阵。

                     c、牛顿法的优点是收敛速度快,缺点是在用牛顿法进行最优化求解的时候需要求解Hessian矩阵。

                         因此,如果在目标函数的梯度和Hessian矩阵比较好求的时候应使用Newton法。

                         牛顿法在进行编程实现的时候有可能会失败,具体原因及解决方法见《最优化方法》-张薇 东北大学出版社 第155页。

           5、Newton法与Guass-Newton法之间的联系

                        对于优化问题 ,即,当理论最优值为0时候,这个优化问题就变为了函数求解问题:

                                                             

                          结论:当最优化问题的理论最小值为0时,Newton法求解就可变为Guass-Newton法求解。        

                     另外:对f(x)进行二阶泰勒展开:

                                                            

                          f(x)乘以f(x)的转置并忽略二次以上的项:

                                  

                                                     

                                                   

                                                   

                     因此,当在最优解附近时,即满足,此时可认为:

            6、扩展阅读

                        a、修正牛顿(Newton)法

                    b、共轭方向法与共轭梯度法

                    c、拟牛顿法(避免求解Hessian矩阵):DFP算法、BFGS算法

            自己所有博客汇总

Newton法(牛顿法 Newton Method)的更多相关文章

  1. 牛顿法(Newton's Method)

    Newton's Method 在求最优解时,前面很多地方都用梯度下降(Gradient Descent)的方法,但由于最优步长很难确定,可能会出现总是在最优解附近徘徊的情况,致使最优解的搜索过程很缓 ...

  2. newton法分形图

    方程:z^6-1=0; %f为求解的方程,df是导数,使用的时候用funchandler定义 %res是目标分辨率,iter是循环次数,(xc,yc)是图像的中心,xoom是放大倍数 %参数视自己需求 ...

  3. 简单工厂法( Factory Method)

    工厂方法 (Factory Method) Define an interface for creating an object ,but let subclasses decide which cl ...

  4. Apply Newton Method to Find Extrema in OPEN CASCADE

    Apply Newton Method to Find Extrema in OPEN CASCADE eryar@163.com Abstract. In calculus, Newton’s me ...

  5. Newton's Method

    在求最优解时,前面很多地方都用梯度下降(Gradient Descent)的方法,但由于最优步长很难确定,可能会出现总是在最优解附近徘徊的情况,致使最优解的搜索过程很缓慢.牛顿法(Newton's M ...

  6. MATLAB用二分法、不动点迭代法及Newton迭代(切线)法求非线性方程的根

    MATLAB用二分法.不动点迭代法及Newton迭代(切线)法求非线性方程的根 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 一.实验原理 二.实验步骤 ...

  7. 用牛顿-拉弗森法定义平方根函数(Newton-Raphson method Square Root Python)

    牛顿法(Newton’s method)又称为牛顿-拉弗森法(Newton-Raphson method),是一种近似求解实数方程式的方法.(注:Joseph Raphson在1690年出版的< ...

  8. Newton插值的C++实现

    Newton(牛顿)插值法具有递推性,这决定其性能要好于Lagrange(拉格朗日)插值法.其重点在于差商(Divided Difference)表的求解. 步骤1. 求解差商表,这里采用非递归法(看 ...

  9. devstack安装openstack newton版本

    准备使用devstack安装openstack N版,搞一套开发环境出来.一连整了4天,遇到各种问题,各种错误,一直到第4天下午4点多才算完成. 在这个过程中感觉到使用devstack搭建openst ...

随机推荐

  1. 2019牛客暑期多校训练营(第九场)All men are brothers——并查集&&组合数

    题意 最初有 $n$ 个人且互不认识,接下来 $m$ 行,每行有 $x,y$,表示 $x$ 和 $y$ 交朋友,朋友关系满足自反性和传递性,每次输出当前选取4个人且互不认识的方案数. 分析 并查集维护 ...

  2. [Javascript] Run asynchronous functions in sequence using reduce

    This can be handy if you have a rate limit on API requests or if you need to pass the result of each ...

  3. umeditor+粘贴word图片

    图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码 目前限chrome浏览器使用,但是项目要求需要支持所有的浏览器,包括Windows和macOS系统.没有办 ...

  4. learning scala stream collection

    最关键的部分是计算序列的同时,不会引发无限递归, #:: 表达式的右边只有在被请求时才会被求值.

  5. scala 延迟加载

  6. AGC037C Numbers on a Circle【构造】

    从后往前做,每次将\(B_i\)减去相邻两个数,注意如果最大的数没有变成初始状态,那么肯定要减,否则相邻两边的就减不了,所以用堆维护.根据辗转相除的复杂度,\(O(n\log^2 n)\). #inc ...

  7. CMD browser in Linux -- Links

    Links is an open source web browser written in C programming Language. It is available for all major ...

  8. 数据结构实验之图论十:判断给定图是否存在合法拓扑序列(SDUT 2140)

    分析:BFS判断是否有环. #include<bits/stdc++.h> using namespace std; typedef long long ll; int gra[200][ ...

  9. Ansible管理上千台主机时需要的速度优化

    1 开启ssh长连接 OpenSSH 5.6版本后SSH支持了Multiplexing 设置参数 ssh_args = -C -o ControlMaster=auto -o ControlPersi ...

  10. Vuex学习心得

    最近公司项目中使用Vuex做状态管理,就全面温习了一遍文档,然后在项目使用中遇到一些常见问题就一一总结下. 一.由来 我们知道Vue中数据是自顶向下单向流动的,但是以下两种情况单向数据流实现起来十分繁 ...