什么是牛顿-拉夫逊方法?
牛顿其人:isaac newton(1642年12月25日– 1727年3月20日)是一位英国数学家,物理学家,天文学家,神学家和作家,被公认为有史以来最有影响力的科学家之一,并且是科学革命的关键人物。他的书《自然哲学的数学原理》于1687年首次出版,奠定了古典力学的基础。牛顿还为光学做出了开创性的贡献,并与戈特弗里德·威廉·莱布尼兹(gottfried wilhelm leibniz)发展了无穷微积分的学科。
拉弗森joseph raphson 生卒不详,其最著名的著作是1690年出版的《通用分析方程》。它包含一种方法,现在称其为牛顿-拉夫森方法,用于近似方程式的求根。艾萨克·牛顿(isaac newton)在1671年写的《通量法》中开发了一个非常相似的公式,但是这项工作要到1736年才出版,这是拉夫森分析之后近50年。但是,该方法的raphson版本比newton方法更简单,因此通常被认为是更好的方法。
所以,牛顿迭代法(简写)就是一种近似求解实数域与复数域求解方程的数学方法。那么这个方法是具体是什么原理呢?
牛顿迭代如何迭代?
直接看数学公式描述如何迭代不直观,先来看动图就很容易理解牛顿迭代法为什么叫迭代法以及怎样迭代的:
牛顿迭代法是原理是根据一个初始点在该点做切线,切线与x轴相交得出下一个迭代点的坐标,再在处做切线,依次类推,直到求得满足精度的近似解为止。
由前面描述知道,牛顿迭代法是用来近似求解方程的,这里有两个点需要说明:
为啥要近似求解?很多方程可能无法直接求取其解
迭代法非常适合计算机编程实现,实际上计算机编程对于牛顿迭代法广为应用
啥时候停止迭代呢?
如何编码呢?
由于牛顿迭代法主要目的是解方程,当然也有可能用于某一个数学函数求极值,所以无法写出通用的代码,这里仅仅给出一个编代码的思路。相信掌握了思路,对于各种实际应用应该能很快的写出符合实际应用的代码。
假定一函数为
其波形图如下:
从图上大致可以知道有两个根,如果直接解方程,则很难求出其根,可以编个代码试试:
#include #include #include /*假定待求根函数如下*/#define f(x) (2*(x)*(x)-10*cos(x)+(x)-80)/*其一阶导数为*/#define df(x) (4*(x)+10*sin(x)+1)float newton_rooting(float x0,float precision,float min_deltax,int max_iterations){ float xn,xn1,fn,fn1,dfn; float deltax; int step = 0; xn = x0; xn1 = x0; do{ xn = xn1; fn = f(xn); dfn = df(xn); /*判0*/ if( fabs(dfn) precision ) return nan; else return fn; } xn1 = xn - fn/dfn; fn1 = f(xn1); deltax = fabs(xn1-xn); step++; if( step>max_iterations ) { if( fabs(fn1)precision || deltax>min_deltax ); return xn1;}void main(){ float root_guess = 23.0f; float precision = 0.00001f; float min_deltax = 0.001f; float root; int step = 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时,则可能找到了函数的极值,比如:
如果选择的初值不合适,可能会跳掉一些根,比如:
所以实际应用时,需要知道自己待求解模型的大致情况,在合理的加以调整。
有哪些应用?
比如知道某系统的传递函数,求解传函的参数,可以将上述方法推而广之,求解多维变量方程组,求导就变成求偏导了
又比如设计一电路测量某物质的阻抗
....
总结一下
牛顿迭代法在解决实际问题时,利用迭代求方程近似根的数学原理,在工程中有着很好的实用价值。比如求一个趋势的极值,传递函数参数辨识等都有广泛的实际应用。
pll倍频最大倍数
推荐几个半入耳式蓝牙耳机,300以内半入耳蓝牙耳机
Ameco成都分公司圆满完成了澳门航空一架A320飞机交付检工作
第三季度智能手表出货量为270万部
诺西与中移动携手在GSMA上演示TD-LTEFemtocel
牛顿-拉夫逊迭代法原理及其实现
苹果已预订台积电3nm制程工艺今年全部产能 用于代工A17和M3
M6103/M6362A/M6362B充电器、适配器、AC-DC开关电源真实应用案例图
站在时尚最前沿,也可经典传世的Master & Dynamic for 0.95耳机
红外线遥控开关电路图大全(六款模拟电路设计原理图详解)
poe供电交换机最大传输距离分析
米家互联网空调新品即将发布 或将继续主打2000元左右价位
回顾小鹏汽车发布首款智能汽车--小鹏G3
“发现智联高手”第六届“台达杯”高校自动化设计大赛结果揭晓
机器学习如何加速新材料的发现,寻找可用于白光LED的新型光转换材料
LED高清投影机市场发展格局调查分析
终极USB示波器PicoScope 6000系列
基于MAX630的简单光电管电源电路图
传音控股入驻浦东新区博士后创新实践基地
三星首次出口AMOLED面板给中国手机厂