牛顿法和牛顿迭代法一样吗_牛顿迭代法流程图

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

牛顿法

牛顿法用来迭代的求解一个方程的解,原理如下:
对于一个函数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) + \nabla f(x_0)^T (x-x_0) + \frac{1}{2} (x-x_0)^T \nabla^2 f(x_0)(x-x_0) \]

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

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

\[x = x_0 – {\nabla ^2 f(x_0) }^{-1} \nabla f(x_0) \]

所以,迭代公式变为

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168015.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 递归简单举例_递归定义举例

    递归简单举例_递归定义举例刚接触递归的同学,可能难以理解递归,难以理解的点可能很多,例如:1.函数为什么可以在自己的内部又调用自己呢?2.既然可以自己调用自己,那么递归运行过程中一定回有很多层相互嵌套,到底什么时候不再嵌套呢?3.递归运行过程中,相互嵌套的多层之间会有参数传递,多层之间是否会相互影响?递归两个要素1.递归边界2.递归的逻辑——递归”公式”递归的过程一定有参数的变化,并且参

    2025年7月8日
    5
  • Thinkphp3.2.3查询24小时之内的数据条件

    Thinkphp3.2.3查询24小时之内的数据条件

    2022年2月24日
    35
  • tensorflow2.0卷积神经网络_python神经网络框架

    tensorflow2.0卷积神经网络_python神经网络框架卷积神经网络一般用来处理图像信息,对于序列这种一维的数据而言,我们就得采用一维的卷积,tensorflow中提供有专用的函数conv1d,各参数的使用说明如下:conv1d参数说明value输入数据,value的格式为:[batch,in_width,in_channels],batch为样本维,表示多少个样本,in_width为宽度维,表示样本的宽度,in_channels维通道维,表示样本有多少个通道。filters卷积核,filters的格式为:[filter_wi

    2022年9月22日
    4
  • docker搭建LDAP统一用户认证

    docker搭建LDAP统一用户认证1 安装 LDAPdockerru dit p389 389 v data ldap ldap var lib ldap v data ldap slapd d etc ldap slapd d nameldap envLDA

    2025年7月4日
    3
  • sql server 字符串和日期的转换函数[通俗易懂]

    sql server 字符串和日期的转换函数[通俗易懂]字符串转换为日期:cast(‘20100514’asdatetime)日期转换为字符串:CONVERT(nvarchar(30),GETDATE(),126)日期格式规则如下:1101美国mm/dd/yyyy2102ANSIyy.mm.dd3103英国/法国dd/mm/yy4104德国dd.mm.yy5105意大利dd-m

    2022年10月8日
    3
  • 一个发邮件的Python脚本。

    一个发邮件的Python脚本。

    2022年3月13日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号