zoukankan      html  css  js  c++  java
  • 牛顿法和牛顿迭代法

    牛顿法,大致的思想是用泰勒公式的前几项来代替原来的函数,然后对函数进行求解和优化。牛顿法应用于最优化的牛顿法稍微有些差别。

    牛顿法

    牛顿法用来迭代的求解一个方程的解,原理如下:
    对于一个函数f(x),它的泰勒级数展开式是这样的

    [f(x) = f(x_0) + f'(x_0)(x-x_0) + frac{1}{2} f''(x_0)(x-x_0)^2 + ...+frac{1}{n!}f^{n}(x_0)(x-x_0)^n ]

    当使用牛顿法来求一个方程解的时候,它使用泰勒级数前两项来代替这个函数,即用(phi(x)代替f(x)),其中:

    [phi(x) = f(x_0) + f'(x_0)(x-x_0) ]

    (phi(x) = 0),则 (x = x_0 - frac{f(x_0)}{ f'(x_0)})
    所以,牛顿法的迭代公式是(x_{n+1} = x_n - frac{f(x_n)}{ f'(x_n)})

    牛顿法求解n的平方根

    求解n的平方根,其实是求方程(x^2 -n = 0)的解
    利用上面的公式可以得到:(x_{i+1} = x_i - frac{x_i^2 - n}{2 x_i} = (x_i + frac{n}{x_i} ) /2)
    编程的时候核心的代码是:x = (x + n/x)/2

    应用于最优化的牛顿法

    应用于最优化的牛顿法是以迭代的方式来求解一个函数的最优解,常用的优化方法还有梯度下降法。
    取泰勒展开式的二次项,即用(phi(x))来代替(f(x))

    [phi(x) = f(x_0) + f'(x_0)(x-x_0) + frac{1}{2} f''(x_0)(x-x_0)^2 ]

    最优点的选择是(phi'(x)=0)的点,对上式求导

    [phi'(x) =f'(x_0) + f''(x_0)(x-x_0) ]

    (phi'(x) = 0),则(x = x_0 - frac{f'(x_0)}{f''(x_0)})
    所以,最优化的牛顿迭代公式是

    [x_{n+1} = x_n - frac{f'(x_n)}{f''(x_n)} ]

    高维下的牛顿优化方法

    在高维下

    [phi(x) = f(x_0) + abla f(x_0)^T (x-x_0) + frac{1}{2} (x-x_0)^T abla^2 f(x_0)(x-x_0) ]

    ( abla phi(x)),并令它等于0,则公式变为了

    [ abla f(x_0) + abla^2 f(x_0)(x-x_0) =0 ]

    [x = x_0 - { abla ^2 f(x_0) }^{-1} abla f(x_0) ]

    所以,迭代公式变为

    [x_{n+1} = x_{n} - { abla ^2 f(x_n) }^{-1} abla f(x_n) ]

    其中:
    (x_{n+1} ,x_n)都是N*1维的矢量。
    ( abla^2 f(x_n))是Hessien矩阵,({ abla ^2 f(x_n) }^{-1})是Hessien矩阵的逆矩阵,它们都是是N*N维的。
    ( abla f(x_n))(f(x))的导数,是N*1维的。

    和梯度下降法相比,在使用牛顿迭代法进行优化的时候,需要求Hessien矩阵的逆矩阵,这个开销是很大的。

  • 相关阅读:
    NS2仿真:公交车移动周期模型及性能分析
    oracle 列行转换
    oracle dmp文件导出与导入
    fire workflow总结
    install mysql on centos7
    java反射机构应用
    table行颜色设置
    maven无法下依赖jar文件的解决方案
    windows环境jprofiler配置监控tomcat
    CAS tomcat6搭建
  • 原文地址:https://www.cnblogs.com/jiaxin359/p/9484133.html
Copyright © 2011-2022 走看看