这是我目前所拥有的:
Public static double Sqrt (double a){
double xOld = a / 2;
double xNew = 0;
while (Math.abs(xOld - xNew) >= 0.0001 {
xNew = (xOld + a / xOld) / 2;
xNew = xOld;
}
}
我需要使用算法 x1 = (x0 - a/x0)/2 求一个数的近似平方根。 a 是原始数字,x0 从值 a/2 开始。当我运行此代码时,我得到 12.5(即 a/2)。我需要帮助的是要初始化的 xNew 值和 while 循环的最后一行。感谢您的帮助
最佳答案
试穿这件尺码:
Public static double Sqrt(double a) throws IllegalArgumentException {
if (a < 0.0) throw new IllegalArgumentException();
double aSqrt = a / 2.0;
while (Math.abs(a - aSqrt*aSqrt) >= 0.0001) { // I'd use a smaller tolerance
double aSqrtPrev = aSqrt;
aSqrt = (aSqrtPrev + a / aSqrtPrev) / 2.0;
}
return aSqrt ;
}
关于iteration - 使用 x1 = (x0 - a/x0)/2 的平方根迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40180931/