其他分享
首页 > 其他分享> > 记一笔牛顿迭代求平方根与立方根

记一笔牛顿迭代求平方根与立方根

作者:互联网

假设现在所求为平方根,即函数 x^2 = input 的解,即 x^2 - input = 0 的解.

令 f(x) = x^2 - input

牛顿迭代公式:

 

即假设 X_n 为函数 f(x) 的第 n 次解,那么第 n + 1 次解就是 X_n - f(X_n) / f'(X_n)

其中 f'(x) 是 f(x) 的导函数.

当 abs(X_(n + 1) - X_n) < eps 时,X_(n + 1) 符合要求精度,即 X_(n + 1) 的平方在要求精度内满足 X_(n + 1) 的平方等于 input

 

 

求立方根是同理的,即 f(x) = x^3 - input.

 

//迭代法求立方根
    public double getCube(double input){
        double x = 1;
        double x1 = x - (x*x*x - input) / (3*x*x);
        while(x - x1 >0.000000001 || x - x1 < -0.000000001){        //判断精度
            x = x1;
            x1 = x - (x*x*x - input) / (3*x*x);
        }
        return x1;
    }
    
    //迭代法求平方根
    public double getSqrt(double input){
        double x = 1;
        double x1 = x - (x*x - input)/(2*x);
        while(x - x1 > 0.00000001 || x - x1 < -0.00000001){
            x = x1;
            x1 = x - (x*x - input)/(2*x);
        }
        return x1;
    }

 

标签:迭代,double,立方根,input,平方根,x1,迭代法
来源: https://www.cnblogs.com/rookie-acmer/p/15317574.html