Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >牛顿法(Newton Method)求解f(x)=0

牛顿法(Newton Method)求解f(x)=0

原创
作者头像
黑豆梨
修改于 2018-06-16 03:04:43
修改于 2018-06-16 03:04:43
3.2K0
举报

今天继续探讨f(x)=0的解法,这次要介绍的是牛顿迭代法。

问题描述

已知f(x)=0,求使等式成立的x的值。

解法如下

求出f(x)的导函数f\_d(x)=f'(x)

任取初值x_0进行迭代

x_1=x_0-f(x_0)/f'(x_0)

x_2=x_1-f(x_1)/f'(x_1)

x_3=x_2-f(x_2)/f'(x_2)

...

x_n=x_{n-1}-f(x_{n-1})/f'(x_{n-1})

直到 f(x_n)≈0 (此处约等于的意思是两者的差值小于预设误差)

示例

求解 f(x)=e^{-x}-x=0

根据求导公式有 f\_d(x)=f'(x)=-e^{-x}-1

求解代码如下

代码语言:txt
AI代码解释
复制
#include <math.h>
#include <stdio.h>

double f(double x)
{
    return exp(-x)-x;
}

double f_d(double x)
{
    return -exp(-x)-1;
}

int main()
{
    double x = 0;
    while (f(x) > 1e-6) {
        x = x-f(x)/f_d(x);
    }
    printf("solution for function exp(-x)-x=0 is %lf\n", x);
    return 0;
}

求解结果如下:

牛顿迭代法求解结果
牛顿迭代法求解结果

原理

我也不懂了……详细的可以参考维基百科

https://en.wikipedia.org/wiki/Newton%27s_method

这里仅解释下浅显的理解,而且对收敛性也不做证明。

根据高等数学里面学到的泰勒展开

f(x)=f(x_0)+(x-x_0)f'(x_0) +\frac{(x-x_0)^2}{2}f''(x_0)+\frac{(x-x_0)^3}{3!}f^{(3)}(x_0)+\frac{(x-x_0)^4}{4!}f^{(4)}(x_0)+...+\frac{(x-x_0)^n}{n!}f^{(n)}(x_0)

约掉二阶及二阶以上的小量(至于详细的证明需要参照维基百科了,因为这里任取的初值实际上不一定是小量,这里仅仅是做一个简单解释),得到

f(x)≈f(x_0)+(x-x_0)f'(x_0)

故而可以推出,当 f(x)=0

x≈x_0-\frac{f(x_0)}{f'(x_0)}

此即为牛顿迭代法中得迭代公式。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
固定点迭代法(Fixed Point Iteration)求解f(x)=0
求解f(x)=0还是很有用的,具体应用此不做讨论。这里将使用一系列专题阐述求解f(x)=0的各种方法。此次先讨论固定点迭代法(Fixed Point Iteration)。
黑豆梨
2018/06/10
9.4K0
固定点迭代法(Fixed Point Iteration)求解f(x)=0
算法细节系列(3):梯度下降法,牛顿法,拟牛顿法
话不多说,直接进入主题。在我看来,不管是梯度下降法还是牛顿法,它们都可以归结为一个式子,即
用户1147447
2019/05/26
2.4K0
割线法(Secant Method)求解f(x)=0
x_3=x_2-f(x_2) \frac{x_2-x_1}{f(x_2)-f(x_1)}
黑豆梨
2018/07/19
2.1K0
割线法(Secant Method)求解f(x)=0
牛顿法和牛顿迭代法一样吗_牛顿迭代法流程图
牛顿法,大致的思想是用泰勒公式的前几项来代替原来的函数,然后对函数进行求解和优化。牛顿法和应用于最优化的牛顿法稍微有些差别。
全栈程序员站长
2022/09/20
7890
Levenberg-Marquardt算法浅谈
在讲Levenberg-Marquardt算法之前我想先谈下牛顿法和高斯牛顿法。
用户1148525
2019/05/26
5.9K0
牛顿迭代法求解平方根
迭代,是一种数值方法,具体指从一个初始值,一步步地通过迭代过程,逐步逼近真实值的方法。 与之相对的是直接法,也就是通过构建解析解,一步求出问题的方法。
用户1147754
2019/05/27
1.5K0
每日一问之初识牛顿迭代法(Newton's method)
今天在刷 LeetCode 的 sqrt(x) 这道题的时候,看到别人的解法中有使用牛顿迭代法。之前也看到这个方法很多次,但都没有去了解。今天正好就这个问题来稍微整理一下:
caoqi95
2019/03/28
1.6K0
每日一问之初识牛顿迭代法(Newton's method)
大厂面试题:求根号2简单?高级算法你肯定不会
前两天逛github看到一道很简单的面试题——如何不用库函数快速求出\sqrt2的值,精确到小数点后10位! 第一反应这不很简单嘛,大学数据结构课讲二分查找的时候老师还用这个做过示例。但转念一想,能作为大厂的面试题,背后绝对没有那么简单,于是我google了下,结果找到了更巧妙的数学方法,甚至发现了一件奇闻趣事…… 一道简简单单的面试题,不仅能考察到候选人的编程能力,还能间接考察到候选人的数学素养,难怪很多大厂都会问这个。。。 回到正题,求\sqrt2究竟有多少种解法,我们由简入难一步步来看下我们是如何让计算机更快计算sqrt的。
xindoo
2021/01/22
1.9K0
大厂面试题:求根号2简单?高级算法你肯定不会
日拱一卒,伯克利教你牛顿法,而我只想逃课……
今天我们继续来看伯克利CS61A,我们来看作业5的最后一道附加题。这道题非常有意思,涉及很多知识,因此想要完整讲明白,需要很多篇幅,所以单独写了一篇。
TechFlow-承志
2022/09/21
4860
日拱一卒,伯克利教你牛顿法,而我只想逃课……
算法--迭代法
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
1.1K0
牛顿迭代法(Newton's Method)
牛顿迭代法(Newton's Method)                    简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出。但是,这一方法在牛顿生前并未公开发表。 牛顿法的
Angel_Kitty
2018/04/08
2.1K0
牛顿迭代法(Newton's Method)
机器学习中牛顿法凸优化的通俗解释
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/red_stone1/article/details/80821760
红色石头
2019/05/25
9180
牛顿迭代法的可视化详解
来源:DeepHub IMBA本文约1800字,建议阅读10分钟本文利用可视化方法,为你直观地解析牛顿迭代法。 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。 以 Isaac Newton 和 Joseph Raphson 命名的 Newton-Raphson 方法在设计上是一种求根算法,这意味着它的目标是找到函数 f(x)=0 的值 x。在几何上可以将其视为 x
数据派THU
2022/03/04
6940
优化器--牛顿法总结
---这里记录下一些关于牛顿法来作为优化器的个人笔记 :) 关于牛顿法,先不说其中的概念,来简单看一个例子? 不用计算器,如何手动开一个值的平方根,比如计算{sqrt(a) | a=4 } ? 不用程序和代码如何求?   ----比较简单有木有,直接上用公式来套就好了.       xt = ( xt-1 + ( a / xt-1 ) ) / 2       我们看 sqrt(4) 这个值的区间在1<=sqrt(4)<=4里,写成这种形式吧[1,4],我们令x0 = 1,       x = ( 1 + (
Gxjun
2018/03/27
1.4K0
优化器--牛顿法总结
【数值计算方法(黄明游)】常微分方程初值问题的数值积分法:欧拉方法(向后Euler)【理论到程序】
是一个关键参数,它决定了离散化的程度,选择合适的步长对于数值解的准确性和稳定性非常重要。
Qomolangma
2024/07/30
4040
【数值计算方法(黄明游)】常微分方程初值问题的数值积分法:欧拉方法(向后Euler)【理论到程序】
多项式整理
多项式求逆元,即已知多项式$A(x)$,我们需要找到一个多项式$A^{-1}(x)$
attack
2019/02/13
9530
多项式整理
数值计算方法 Chapter4. 非线性方程求根
给定一个复杂方程 ,如果直接求解其解析解非常复杂或者难以求解的话,那么可以通过数值求解的方法得到一定精度条件下的数值解。
codename_cys
2022/05/23
4910
Jacobian矩阵和Hessian矩阵简析
在向量分析中,雅可比(Jacobian)矩阵是一阶偏导数以一定方式排列成的矩阵,其行列式成为雅可比行列式。
红色石头
2019/05/25
1.3K0
4.2 非线性方程求解
这里主要以简单的牛顿迭代法介绍非线性方程的求解,维基百科对“牛顿迭代法”的解释:
周星星9527
2018/08/08
1K0
4.2 非线性方程求解
经典面试题:如何快速求解根号2?
回到正题,这个肯定不是想问你应该调用哪个函数,而是想问如何自己去实现一个这样的开方函数。
小K算法
2022/06/09
1.2K0
经典面试题:如何快速求解根号2?
相关推荐
固定点迭代法(Fixed Point Iteration)求解f(x)=0
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档