牛顿-迭代法计算平方根

牛顿-拉弗森方法

Posted by Jae on February 13, 2019
牛顿-拉弗森方法

牛顿迭代法又被称为牛顿-拉弗森方法,实际是牛顿、拉弗森各自独立提出来的,该方法提出的思路就是利用切线是曲线的线性逼近这个思想。

多数的方程不存在求根公式,所以求精确根非常困难,甚至是不可能,该方法利用函数 \( f(x) \)的泰勒级数的前面几项来寻找方程\( f(x)=0 \)的根,,牛顿迭代法最大的有点是在方程\( f(x)=0 \)的单根附近具有平方收敛,而且该方法在求方程的重根、复根还广泛用于计算机编程中。

牛顿-拉弗森方法代数解法

我们设\( r \)是\( f(x)=0 \)的根,选取\( x_0 \)作为\( r \)的初始近似值,过点\(\left( x_{0},f\left( x_{0}\right) \right)\) 做曲线\(f(x)\)的切线,则该切线的方程为: \(\dfrac {f\left( x_{0}\right) -y}{x_{0}-x}=f'\left( x_{0}\right)\) 即:\(y=f\left( x_{0}\right) +f'\left( x_{0}\right) \left( x-x_{0}\right)\) 则该切线与x轴的交点的横坐标\(x_{1}=x_{0}-f\left( x_{0}\right) /f'\left( x_{0}\right)\)称x1是r的一次近似值。再过点\(\left( x_{1},f\left( x_{1}\right) \right)\)作曲线的切线并求出该切线与x轴交点的横坐标x2,即为r的第二次近似。重复以上过程,得到r的近似值序列,其中\(x_{n+1}=x_{n}-f\left( x_{n}\right) /f'\left( x_{n}\right)\)称为r的n+1次近似值,该公式称为就牛顿迭代公式。

使用牛顿迭代法计算平方根,设某数为P,则有方程\(f\left( x\right) =x^{2}-p\),方程为0所求的根即是所求数的平方根。 根据牛顿迭代公式化简得到: \(x_{n+1}=x_{n}-f\left( x_{n}\right) /f'\left( x_{n}\right)\)

–> \(x_{n+1}=x_{n}-\dfrac {\left( x^{2}_{n}-p\right) }{\left( 2x_{n}\right) }\)

得–> \(x_{n+1}=\dfrac {x^{2}_{n}+p}{2x_{n}}\)

代码实现
public double newtonSqrt(double n)
{
    if (n < 0)
    {
        return -1;
    }

    final double JINGDU = 1e-9;
    double x = 1L;
    while (Math.abs(Math.pow(x, 2) - n) > JINGDU)
    {
        x = (x + n / x) / 2;
        System.out.println(x);
    }
    return x;
}

< script src = " / js / bootstrap.min.js " >