コード public class SquareRoot { /** * @param args */ public static void main(String[] args) { for(int i=0; i<100; i++) { int n=(int)(Math.random()* Integer.MAX_VALUE); double sqrt = calcSQRoot(n); } // TODO Auto-generated method stub } public static double calcSQRoot(int a) { double x0,x1; x0 = 1.0; x1 = 0.0; double epsilon = 1e-10; ➀ while(true) { x1 = (x0+(a/x0))/2; if(Math.abs(x1-x0) < epsilon) { ➁ break; } x0 = x1; System.out.println(x1); if(a <= 0) { return 0.0; } } return x1; } }
平方根(の近似値)を求めるアルゴリズムはいくつかあるが、ここではごく簡単に実装でき、短い計算時間でそれなりの精度の値が求められる方法を用いる。
具体的に、正数値 s の平方根を求める際、初期値として適当な正数値 x0 を用意し、
xn+1=(xn+(s/xn2))/2
の計算を繰り返し、ある程度、値が収束した時点で計算を終えるというものである。
x0に1.0を代入
x1には引数とx0から計算したx1を代入
return x1;
xnとxn+1のdouble値が同じになったら計算を終えるように書き換えるとき、➀のeが何を表しているのか、➁のif文の実行内容が分からないです。
回答2件
あなたの回答
tips
プレビュー