牛顿迭代法(英文名Newton’s Iteration)是用来求函数的根的高效算法。
图1
递推公式为
大概思想:
如图所示,取一个点(xn,f(xn)),过该点作切线交x轴于(xn+1,0)很容易得到
稍微变形,就可以得到最开始给出的公式。
这大概是一个无限逼近的思想,通过一次计算得到xn+1当作下次计算的xn,一直递推下去,因为斜率一直都更加逼近f ’(x),虽然△y不断变小,但是算法效率还是相当高的,每一次运算得到的的精度,大概都会增加一倍,计算7~10步,就可以得到一个精度相当高的近似值。
作用举例,我现在想求x^(1/3);
首先,我需要构造函数,f(x)=x^3 -n,这样我只要求出f(x)=0的根,即为:使x^3=n的x;即为n的1/3次幂;
带入公式(图1) 可得 递推即可轻松求解。
C的sqrt()就是利用这个算法求的