私は働く再帰的なバビロニア平方根法を作成しましたが、私は誤差を組み入れたいと思います。私はテスト番号が+または - 実際の平方根のエラーであるときにプログラムを停止したい。この場合、5.015は実際の平方根(5)の0.1以内にあるので、プログラムは5.015で停止します。作業再帰的なバビロニア平方根、エラーを組み込む必要があります。
public class BabyRoot {
private static double testnum = 0;
private static double targetnum = 0;
private static double error = 0;
public static void babyRoot(double num) {
testnum = 0.5 * (testnum + (targetnum/testnum));
System.out.println("Test number equals: " + testnum);
if ((testnum * testnum) == targetnum)
System.out.println("The correct square root is: " + testnum);
else
babyRoot(testnum);
}
public static void main(String[] args) {
error = 0.1;
testnum = 25;
targetnum = testnum;
babyRoot(testnum);
}
}
出力:
Test number equals: 13.0
Test number equals: 7.461538461538462
Test number equals: 5.406026962727994
Test number equals: 5.015247601944898
Test number equals: 5.000023178253949
Test number equals: 5.000000000053722
Test number equals: 5.0
The correct square root is: 5.0
[OK]を感謝します。あなたの質問は何ですか?これは、2つの数値を減算し、絶対値(必要な場合)をとり、それをif文にポップする単純な問題ではありませんか? – tnw
プログラムにチェックを入れるだけの理由はありますか?それはむしろ単純な状態のようです。 –
あなたはエラーをどのように定義したいのですか?数値計算では、容易に利用できる「真の」回答の特権を必ずしも持っているわけではないので、通常、エラー値は別々に使用されます(たとえば、2回の連続した反復での結果と逆の計算)。 – RealSkeptic