牛顿-迭代法计算平方根

牛顿-拉弗森方法

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

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

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

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

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

使用牛顿迭代法计算平方根,设某数为P,则有方程,方程为0所求的根即是所求数的平方根。 根据牛顿迭代公式化简得到:

–>

得–>

代码实现
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;
}