用挤压定理逼近java中的平方根

时间:2016-10-17 01:59:54

标签: java nested sqrt

嘿伙计们,这是为了完成我的作业。我的老师很快就开始上课了。这是我用java编写的第四个程序,我正在寻找一些建议。我需要找到一个数字的大概sqrt到我的程序中定义的EPSILON错误。但是,这需要使用挤压定理来完成,并不断更新我的界限。在java中,当整个使用变量时,如何更新变量值?请记住,我的教授尚未返回值,所以我认为他不打算让我们使用它们。请记住,我是新手,但我有一个开放的心态。

    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    final double EPSILON = .0000000001;


    System.out.print("Enter a number to find its square root -> ");
    double number = sc.nextDouble();
    double low = 0;
    double high = 0;
    double midPoint = (low+high)/2;
    high = number;
    double midPointSqr = midPoint*midPoint;
    if (number < 0) {
        System.out.println("NaN");
    } else {
        while ((Math.abs(midPointSqr - number)) > EPSILON) {


            {
                if (number <= 1) {
                    low = 0;

                    if (midPointSqr > number)
                    {
                        midPoint = (high+low)/2;
                        high = high/2;
                     System.out.printf("%.6f, %.6f\n", low, high);
                    }
                    else
                    {
                       midPoint = (high+low)/2;
                       low = high/2;
                        System.out.printf("%.6f, %.6f\n", low, high);
                    }


                } else {
                    low = 1;

                     if (midPointSqr > number)
                    {
                        midPoint = (high+low)/2;
                        high = high/2;
                     System.out.printf("%.6f, %.6f\n", low, high);
                    }
                    else
                    {
                       midPoint = (high+low)/2;
                        low = high/2;
                        System.out.printf("%.6f, %.6f\n", low, high);
                    }

                }
            }
        }
    }

}

}

1 个答案:

答案 0 :(得分:0)

每当更新中点变量时,您都需要更新midPointSqr变量。所以只要你有像

这样的赋值语句
midPoint = <something>;

你应该在此之后重新开始你的广场:

midPointSqr = midPoint * midPoint

另一个替代方案是在任何地方使用函数而不是使用midPointSqr变量。

double getSqr(double value){
     return value* value;
}

所以,当您使用midPointSqr变量时,请使用以下方法代码替换它:

getSqr(midPoint)