У меня проблемы с Java-кодом, который должен вычислять корневой квадрат заданного параметра.Однако после некоторого исследования я нашел код, который я не знаю, как он был реализован должным образом.
// read in the command-line argument
double c = Double.parseDouble(args[0]);
double epsilon = 1.0e-15; // relative error tolerance
double t = c; // estimate of the square root of c
// repeatedly apply Newton update step until desired precision is achieved
while (Math.abs(t - c/t) > epsilon *t) {
t = (c/t + t) / 2.0;
}
// print out the estimate of the square root of c
System.out.println(t);
Первое, что я не до конца понимаю, это то, почему они делятся на два в 8-й строке.
t = (c/t + t) / 2.0;
Второе, что я не понимаю, это условие из цикла while , если быть более точным:
while(Math.abs(t - c/t) > epsilon*t)
Не будетнеобходимо иметь только:
while(Math.abs(t - c/t) > epsilon)