【002】要求不用數(shù)學(xué)庫,求 sqrt (2)精確到小數(shù)點后10位(Java版)

如題

  • 初步審題的時候,想到的是暴力搜索:初步設(shè)置一個合法的種子,依次按照1e-2,1e-3,1e-4,1e-5,1e-6 , 1e-7...暴力搜索,額,就是太麻煩了。

打比賽搜索寫多了,一看見題目就想到搜索。。。

  • 細(xì)想了一下,進(jìn)行優(yōu)化,二分估值法,貌似很合適.
  • 試了試,又調(diào)了數(shù)學(xué)庫求值開根號2 ,沒問題。

代碼

package com.szs;
/**
 * @description 要求不用數(shù)學(xué)庫,求 sqrt (2)精確到小數(shù)點后 10位
 * @author Administrator
 */
public class Main {
    public static void main(String[] args) {    
        //手寫二分估值
        System.out.println(myCalculate(1.4,1.4,1.5));
        //調(diào)用函數(shù)輸出
        System.out.println("----------sqrt= "+Math.sqrt(2.0));
    }
    //根號2約等于 1.414
    private static double myCalculate(double ans,double low,double high) {
        double mid = 0;
        // 二分法,結(jié)束條件:差值小于等于1e-10即可
        while(high-low>1e-10){
            
             mid = (high+low)/2.0;
            System.out.println("-----------mid= "+mid+"  mid*mid= "+mid*mid);
            //二分,逐步向中間值收攏
            if(mid*mid <= 2.0){
                low=mid;
            }
            else{
                high=mid;
            }
            
        }
        
        return mid;
    }
    
}

測試輸出結(jié)果

-----------mid= 1.45  mid*mid= 2.1025
-----------mid= 1.4249999999999998  mid*mid= 2.0306249999999997
-----------mid= 1.4124999999999999  mid*mid= 1.9951562499999995
-----------mid= 1.4187499999999997  mid*mid= 2.0128515624999994
-----------mid= 1.415625  mid*mid= 2.0039941406249997
-----------mid= 1.4140625  mid*mid= 1.99957275390625
-----------mid= 1.41484375  mid*mid= 2.0017828369140624
-----------mid= 1.414453125  mid*mid= 2.0006776428222657
-----------mid= 1.4142578125  mid*mid= 2.0001251602172854
-----------mid= 1.41416015625  mid*mid= 1.999848947525024
-----------mid= 1.414208984375  mid*mid= 1.9999870514869693
-----------mid= 1.4142333984375002  mid*mid= 2.000056105256081
-----------mid= 1.4142211914062501  mid*mid= 2.0000215782225137
-----------mid= 1.414215087890625  mid*mid= 2.000004314817488
-----------mid= 1.4142120361328125  mid*mid= 1.9999956831429155
-----------mid= 1.4142135620117187  mid*mid= 1.9999999989778732
-----------mid= 1.4142143249511718  mid*mid= 2.0000021568970987
-----------mid= 1.4142139434814451  mid*mid= 2.0000010779373403
-----------mid= 1.414213752746582  mid*mid= 2.00000053845757
-----------mid= 1.4142136573791504  mid*mid= 2.000000268717713
-----------mid= 1.4142136096954345  mid*mid= 2.0000001338477906
-----------mid= 1.4142135858535765  mid*mid= 2.0000000664128312
-----------mid= 1.4142135739326476  mid*mid= 2.000000032695352
-----------mid= 1.4142135679721832  mid*mid= 2.000000015836613
-----------mid= 1.414213564991951  mid*mid= 2.0000000074072433
-----------mid= 1.4142135635018347  mid*mid= 2.0000000031925578
-----------mid= 1.4142135627567767  mid*mid= 2.0000000010852155
-----------mid= 1.4142135623842478  mid*mid= 2.0000000000315445
-----------mid= 1.4142135621979832  mid*mid= 1.9999999995047089
-----------mid= 1.4142135622911156  mid*mid= 1.999999999768127
1.4142135622911156
----調(diào)用數(shù)學(xué)庫計算-----sqrt2= 1.4142135623730951

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容