牛顿-拉夫逊迭代法原理及其实现
-
牛顿迭代法(简写)就是一种近似求解实数域与复数域求解方程的数学
方
法。那么这个方法是具体是什么原理呢?
牛顿迭代如何迭代?
直接看数学公式
描述如何迭代不直观,先来看动图就很容易理解牛顿迭代
法为什么叫迭代法以及怎样迭代
的:
牛顿迭代法是原理是根据一个初始点在该点做切线,切线
与
X
轴相交得出
下一个迭代点的坐标,
再在处做切线,依次类推,直到求得满足精度的近似解
为止。
由前面描述知道,牛顿迭代法是用
来近似求解方程的,这里有两个点需要说明:
•
为啥要近似求解?很多方程可能无法直接求取其解
•
迭代法非常适合计算机编程实现,
实际上计算机编程对于牛顿迭代法广为应用
来看看,数学上如何描述的?
p>
其中
为函数
在
处的
一阶导数,也就是该点的切线。
来简单推一推上面公式的由来,直线函数方程为:
知道一个直线的一个坐标点
易可以得
知:
以及斜率
则该直线的方程就很容
那么该直线与轴的交点,就是
y=0
也即
的解:
等式
x
啥时候停止迭代呢?
1.
计算出
2.
给出一个初始假定根值
x0,
利用上面
迭代式子进行迭代
3.
计算绝对相对迭代近似误差
4.
将绝对相对近似误差与预定的相
对误差容限
进行比较。如果
,则迭
代步
骤
2
,否则停止算法。另外,检查迭代次数是否已超过允许的最
大迭代次
数。如果是这样,则需要终止算法并退出。另一个终止条件是:
如何编码呢?
由于牛顿迭
代法主要目的是解方程,当然也有可能用于某一个数学函数求
极值,所以无法写出通用的
代码,这里仅仅给出一个编代码的思路。相信掌握
了思路,对于各种实际应用应该能很快
的写出符合实际应用的代码。
假定一函数为
其波形图如下:
其一阶导数为: