牛顿-拉夫逊迭代法原理及其实现

巡山小妖精
628次浏览
2021年02月11日 06:02
最佳经验
本文由作者推荐

-

2021年2月11日发(作者:类似铁拳的电影)



牛顿迭代法(简写)就是一种近似求解实数域与复数域求解方程的数学 方


法。那么这个方法是具体是什么原理呢?



牛顿迭代如何迭代?



直接看数学公式 描述如何迭代不直观,先来看动图就很容易理解牛顿迭代


法为什么叫迭代法以及怎样迭代 的:



牛顿迭代法是原理是根据一个初始点在该点做切线,切线 与


X


轴相交得出


下一个迭代点的坐标, 再在处做切线,依次类推,直到求得满足精度的近似解


为止。





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



•



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



•



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



来看看,数学上如何描述的?




其中


为函数


在


处的 一阶导数,也就是该点的切线。



来简单推一推上面公式的由来,直线函数方程为:




知道一个直线的一个坐标点


易可以得 知:




以及斜率


则该直线的方程就很容




那么该直线与轴的交点,就是


y=0


也即


的解:



等式


x


啥时候停止迭代呢?




1.



计算出



2.



给出一个初始假定根值


x0,


利用上面 迭代式子进行迭代




3.



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



4.



将绝对相对近似误差与预定的相 对误差容限


进行比较。如果


,则迭


代步 骤


2


,否则停止算法。另外,检查迭代次数是否已超过允许的最 大迭代次


数。如果是这样,则需要终止算法并退出。另一个终止条件是:



如何编码呢?



由于牛顿迭 代法主要目的是解方程,当然也有可能用于某一个数学函数求


极值,所以无法写出通用的 代码,这里仅仅给出一个编代码的思路。相信掌握


了思路,对于各种实际应用应该能很快 的写出符合实际应用的代码。



假定一函数为





其波形图如下:



其一阶导数为:





-


-


-


-


-


-


-


-