0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

牛顿拉夫逊迭代法的原理解析

lPCU_elecfans 来源:百度知道 作者:百度知道 2020-10-13 10:00 次阅读

什么是牛顿-拉夫逊方法?

牛顿其人:Isaac Newton(1642年12月25日– 1727年3月20日)是一位英国数学家,物理学家,天文学家,神学家和作家,被公认为有史以来最有影响力的科学家之一,并且是科学革命的关键人物。他的书《自然哲学的数学原理》于1687年首次出版,奠定了古典力学的基础。牛顿还为光学做出了开创性的贡献,并与戈特弗里德·威廉·莱布尼兹(Gottfried Wilhelm Leibniz)发展了无穷微积分的学科。

牛顿

拉弗森Joseph Raphson 生卒不详,其最著名的著作是1690年出版的《通用分析方程》。它包含一种方法,现在称其为牛顿-拉夫森方法,用于近似方程式的求根。艾萨克·牛顿(Isaac Newton)在1671年写的《通量法》中开发了一个非常相似的公式,但是这项工作要到1736年才出版,这是拉夫森分析之后近50年。但是,该方法的Raphson版本比Newton方法更简单,因此通常被认为是更好的方法。

所以,牛顿迭代法(简写)就是一种近似求解实数域与复数域求解方程的数学方法。那么这个方法是具体是什么原理呢?

牛顿迭代如何迭代?

直接看数学公式描述如何迭代不直观,先来看动图就很容易理解牛顿迭代法为什么叫迭代法以及怎样迭代的:

牛顿迭代法是原理是根据一个初始点在该点做切线,切线与X轴相交得出下一个迭代点的坐标,再在处做切线,依次类推,直到求得满足精度的近似解为止。

由前面描述知道,牛顿迭代法是用来近似求解方程的,这里有两个点需要说明:

为啥要近似求解?很多方程可能无法直接求取其解

迭代法非常适合计算机编程实现,实际上计算机编程对于牛顿迭代法广为应用

来看看,数学上如何描述的? 其中为函数在处的一阶导数,也就是该点的切线。 来简单推一推上面公式的由来,直线函数方程为: 知道一个直线的一个坐标点以及斜率则该直线的方程就很容易可以得知:那么该直线与轴的交点,就是也即等式的解:

啥时候停止迭代呢?

计算出

给出一个初始假定根值,利用上面迭代式子进行迭代

计算绝对相对迭代近似误差

将绝对相对近似误差与预定的相对误差容限进行比较。如果,则迭代步骤2,否则停止算法。另外,检查迭代次数是否已超过允许的最大迭代次数。如果是这样,则需要终止算法并退出。另一个终止条件是:

如何编码呢?

由于牛顿迭代法主要目的是解方程,当然也有可能用于某一个数学函数求极值,所以无法写出通用的代码,这里仅仅给出一个编代码的思路。相信掌握了思路,对于各种实际应用应该能很快的写出符合实际应用的代码。 假定一函数为 其波形图如下:

其一阶导数为: 那么对于该函数的根: 从图上大致可以知道有两个根,如果直接解方程,则很难求出其根,可以编个代码试试:

#include #include #include /*假定待求根函数如下*/ #defineF(x)(2*(x)*(x)-10*cos(x)+(x)-80) /*其一阶导数为*/ #defineDF(x)(4*(x)+10*sin(x)+1) floatnewton_rooting(floatx0,floatprecision,floatmin_deltax,intmax_iterations) { floatxn,xn1,fn,fn1,dfn; floatdeltax; intstep=0; xn=x0; xn1=x0; do{ xn=xn1; fn=F(xn); dfn=DF(xn); /*判0*/ if(fabs(dfn)<1e-6 )        {             if( fabs(fn)>precision) returnNAN; else returnfn; } xn1=xn-fn/dfn; fn1=F(xn1); deltax=fabs(xn1-xn); step++; if(step>max_iterations) { if(fabs(fn1)precision||deltax>min_deltax); returnxn1; } voidmain() { floatroot_guess=23.0f; floatprecision=0.00001f; floatmin_deltax=0.001f; floatroot; intstep=7; root=newton_rooting(root_guess,precision,min_deltax,step); printf("根为:%f,函数值为:%f ",root,F(root)); root_guess=-23; root=newton_rooting(root_guess,precision,min_deltax,step); printf("根为:%f,函数值为:%f ",root,F(root)); } 结果:根为:6.457232, 函数值为:0.000004 根为:-6.894969,函数值为:-0.000008 函数值已经很接近于0了,如果还需要更为精确的值,则可以选择在此基础上进一步求解,比如利用二分法逼近。

需要注意些啥?

求斜率可能为0,如为0时,则可能找到了函数的极值,比如:

如果选择的初始猜测根的接近方程f(x)=0中函数f(x)的拐点 ,Newton-Raphson方法可能开始偏离根。然后,它可能会又收敛回到根。例如:

5435866

如果选择的初值不合适,可能会跳掉一些根,比如:

所以实际应用时,需要知道自己待求解模型的大致情况,在合理的加以调整。

有哪些应用?

比如知道某系统的传递函数,求解传函的参数,可以将上述方法推而广之,求解多维变量方程组,求导就变成求偏导了

又比如设计一电路测量某物质的阻抗

总结一下

牛顿迭代法在解决实际问题时,利用迭代求方程近似根的数学原理,在工程中有着很好的实用价值。比如求一个趋势的极值,传递函数参数辨识等都有广泛的实际应用。本文抛砖引玉,有可能文章也有很多错误疏漏的地方,如有不同看法或者发现错误,欢迎留言交流指正。

责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 迭代法
    +关注

    关注

    0

    文章

    4

    浏览量

    6257

原文标题:数学之美:牛顿-拉夫逊迭代法原理及其实现

文章出处:【微信号:elecfans,微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SSM框架的源码解析理解

    的核心是控制反转(IoC)和面向切面编程(AOP)。 源码解析: Spring的源码主要分为以下几个部分: Bean容器: 负责实例化、配置和组装对象。核心接口是 B
    的头像 发表于 12-17 09:20 173次阅读

    防水测试仪的多样化测试方法:浸水与气压的深度解析

    如今,随着科学技术的飞速发展,防水性能已成为许多产品不可或缺的重要特征。防水测试仪应运而生,以确保产品的防水性能符合标准。这些测试仪采用多种测试方法,包括浸水和气压。顾名思义,浸水是将待测产品
    的头像 发表于 12-12 14:23 138次阅读
    防水测试仪的多样化测试方法:浸水<b class='flag-5'>法</b>与气压<b class='flag-5'>法</b>的深度<b class='flag-5'>解析</b>

    miniled 技术原理解析 miniled与 OLED 比较

    MiniLED技术原理解析 MiniLED技术是一种新型的显示技术,它结合了传统LED背光技术与MicroLED技术的优势。MiniLED背光技术使用更小的LED芯片作为背光源,这些芯片的尺寸通常在
    的头像 发表于 12-10 15:11 533次阅读

    汽车制动系统原理解析 如何检查汽车制动系统

    汽车制动系统原理解析 汽车制动系统是车辆安全行驶的重要组成部分,它的作用是在需要时使车辆减速或停止。现代汽车的制动系统通常包括以下几个部分:制动踏板、制动总泵、制动分泵、制动盘或制动鼓以及制动液
    的头像 发表于 11-28 09:40 271次阅读

    三种常见平方根算法的电路设计及Verilog实现与仿真

    、图形显示等领域具有重要的地位,所以如何在硬件上实现该运算可以提高计算单元的性能,加快计算速度。 本文实现的算法包括二分迭代法牛顿迭代法、逐次逼近,前两种方法来源于数值计算方法,第
    的头像 发表于 11-26 10:12 304次阅读
    三种常见平方根算法的电路设计及Verilog实现与仿真

    GRAEFF(格拉夫)顺利通过UKCA(英标体系)认证

      格拉夫(嘉兴)仪器仪表有限公司的G系列传感器,通过英国LRQA认证专家进行UKCA(英标体系)的各项严格审核,GRAEFF (格拉夫)中国顺利通过UKCA(英标体系)认证。 UKCA认证是英国
    的头像 发表于 07-15 17:32 880次阅读

    自然语言列举描述各自的特点

    自然语言处理(Natural Language Processing,简称NLP)是人工智能领域的一个重要分支,它涉及到计算机与人类语言之间的交互。自然语言处理技术使得计算机能够理解、生成和处理
    的头像 发表于 07-03 14:13 1033次阅读

    【《计算》阅读体验】+徜徉于历史人物事件中-跑跑计算实例感叹于前人的智慧

    体验到古人的智慧。 这里就来分享一个计算平方根数的书中的例子,我们来写成代码测试下。 书中提到的美索不达米亚人计算正数的平方根的递归方法,实际就是现在我们常用的牛顿迭代法,可见古人的智慧,虽然这个时候古人
    发表于 06-28 13:17

    航盛电子荣获2024汤湖汽车创新大会优质创新企业奖!

    2024年5月23日,由凤凰网汽车主办的“2024汤湖汽车创新大会”在武汉举办。
    的头像 发表于 05-24 15:56 735次阅读
    航盛电子荣获2024汤<b class='flag-5'>逊</b>湖汽车创新大会优质创新企业奖!

    岩土工程监测仪器之一:振弦采集仪的工作原理解析

    岩土工程监测仪器之一:振弦采集仪的工作原理解析 振弦采集仪是岩土工程监测中常用的一种仪器,广泛应用于地基、土体、山体等的振动监测。其工作原理基于振弦的共振现象,通过测量振弦的共振频率来判断监测对象
    的头像 发表于 05-14 13:55 407次阅读
    岩土工程监测仪器之一:振弦采集仪的工作原<b class='flag-5'>理解析</b>

    HFSS不能使用迭代求解

    新手小白提问,如图,设置的是迭代求解,运行时转为直接求解导致内存不够,请大神解答为什么不能用迭代求解啊
    发表于 03-27 14:24

    电磁屏蔽技术的原理解析

    电磁屏蔽技术的原理解析 电磁屏蔽技术是一种利用特定材料或构造来阻挡、吸收或反射外界电磁波的技术。它在电子设备、通信系统以及电磁环境的净化等方面具有重要应用,可以有效地防止电磁干扰,保护设备和人员
    的头像 发表于 03-06 14:58 2323次阅读

    网孔电流适用于什么样的电路

    网孔电流(Mesh Current Analysis)是一种用来解析电路中的电流分布的分析方法。它基于欧姆定律和基尔霍夫电流定律,适用于求解具有多个回路的电路。 在复杂的电路中,往往存在多个回路
    的头像 发表于 03-01 11:04 3103次阅读

    同步置数和异步清零的优缺点 异步计数器的级联方法总结

    。其中,同步置数是最常见的实现方法之一。该方法的特点如下: 优点: 简单直观:同步置数的设计相对简单,容易理解和实现。 稳定可靠:由于所有的状态转移是在时钟信号的同步控制下进行的,计数器的输出结果相对稳定可
    的头像 发表于 02-22 14:20 8700次阅读

    节点电压怎么列方程 节点电压流入为正还是负

    节点电压(Node Voltage Method)是一种用于解析电路中各节点电压的分析方法,也是电路分析中的一项重要技术。本文将详细介绍节点电压的基本原理和应用。 一、节点电压
    的头像 发表于 01-30 11:20 6014次阅读