第6章問題22(数学:平方根を近似する)(数学:平方根を近似する)

第6章問題22(数学:平方根を近似する)(数学:平方根を近似する)

  • ** 6.22(数学:平方根の近似メソッド)Mathクラスにsqrtメソッドを実装するためのいくつかの手法があります。それらの1つはバビロニア法と呼ばれています。次の式を繰り返し使用して、数値nの平方根を近似します
    。nextGuess=(lastGuess + n / lastGuess)/ 2
    nextGuessとlastGuessがほぼ同じ場合、nextGuessは平方根の近似値です。初期推定値は、任意の正の値(たとえば、1)にすることができます。この値はlastGuessの初期値です。nextGuessとlastGuessの差が0.0001などの小さい数値よりも小さい場合、nextGuessはnの平方根の近似値と見なすことができます。そうでない場合、nextGuessはlastGuessになり、近似値を見つけるプロセスが続行されます。次のメソッドを実装して、nの平方根を返します。
    public static double sqrt(long n)
    ** 6.22(Math:平方根を近似する)Mathクラスにsqrtメソッドを実装するためのいくつかの手法があります。そのような手法の1つは、バビロニア法として知られています。次の式を使用して計算を繰り返し実行することによる数値n:
    nextGuess =(lastGuess + n / lastGuess)/ 2
    nextGuessとlastGuessがほぼ同じである場合、nextGuessは近似平方根です。最初の推測は、任意の正の値(たとえば、1)にすることができます。この値は、lastGuessの開始値になります。nextGuessとlastGuessの差が0.0001などの非常に小さい数よりも小さい場合、nextGuessはnの近似平方根であると主張できます。そうでない場合、nextGuessはlastGuessになり、近似プロセスが続行されます。nの平方根を返す次のメソッドを実装します
    。publicstaticdoublesqrt(long n)
  • 参照コード:
package chapter06;

public class Code_22 {
    
    
    public static void main(String[] args) {
    
    
        System.out.println(sqrt(2));
    }
    public static double sqrt(long n) {
    
    
        double nextGuess = n, lastGuess = 1;
        while(Math.abs(nextGuess-lastGuess) >= 1E-2) {
    
    
            lastGuess = nextGuess;
            nextGuess = (lastGuess + n / lastGuess) / 2;
        }
        return nextGuess;
    }
}

  • 結果は次のことを示しています。
1.4142156862745097

Process finished with exit code 0

おすすめ

転載: blog.csdn.net/jxh1025_/article/details/109168993