美文网首页
P8-x的平方根-牛顿迭代

P8-x的平方根-牛顿迭代

作者: YonchanLew | 来源:发表于2021-05-09 22:05 被阅读0次
    //x的平方根
    /*
     * 在不使用sqrt(x)的情况下,得到x的平方根的整数部分
     * */
    public class P8 {
    
        public static void main(String[] args) {
            System.out.println(newton(12));
        }
    
        //牛顿迭代
        /*
         * 跟微积分有关, y = x平方,是一个y轴对称的二次函数
         * y/x = x,回想一下P3中12的(2*6) (3*4) (4*3) (6*2)
         * 关于 (根号12 * 根号12)对称,y/x=根号12,x=根号12
         * 并且前后两个数的平均值会比前后两个数更接近结果
         * 如 2的平方=4,6的平方=36,它们的平均值4的平方=16,更接近12,
         * 即 y/x 和 x 的平均值会更接近结果 根号y即x  (y/x = x)
         *
         * */
        private static int newton(int y) {
            if(y == 0){
                return 0;
            }
            return (int) sqrt(y, y);        //第一个数是什么没有关系,正整数就可以,影响的是递归次数,会不断的找均值最终趋向x
        }
    
        //
        public static double sqrt(double x, int y) {
            double res = (x + y / x) / 2;
            if (res == x) {
                return x;       //直到找到确切的根号y,即x
            } else {
                return sqrt(res, y);        //不停找均值
            }
        }
    
    }
    

    相关文章

      网友评论

          本文标题:P8-x的平方根-牛顿迭代

          本文链接:https://www.haomeiwen.com/subject/eeehdltx.html