这篇文章对牛顿法的讨论比较浅,主要就是说一下用途,定义,然后自己手撸个简单的代码实现一下看看效果。若有错误,欢迎指正。
牛顿法的用途
牛顿法最初是被设计出来,通过迭代不断地逼近目标函数的零点的,也就是用来求解函数零点的一种方法。但是,我们都知道当函数存在极值点时,函数的极值点处的导数为0。所以,我们可以转变一下思路,将函数的微分函数设为我们的目标函数,然后用牛顿法去逼近它的零点,这样我们就可以用牛顿法求解优化问题啦。
牛顿法的定义
这里就不再具体的总结牛顿法的定义了,百度百科,维基百科什么的都写得非常清楚而且比较通俗易懂,花点时间仔细看一下就能明白它的大概思路。简单来讲,牛顿法就是迭代地,从初始点开始对当前变量在函数上的点做切线,并将切线与变量轴的交点(该切线的零点)设为新的测试点,如果新的测试点的函数值为0,停止迭代,否则继续以以上方法继续逼近零点。因此,根据我们初中的时候所学的点斜式定义直线的方法,新旧点之间的迭代公式为:
x k + 1 = x k − f ( x k + 1 ) f ′ ( x k + 1 ) x_{k+1} = x_k-\frac{f(x_{k+1})}{f'(x_{k+1})} xk+1=xk−