第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