精华
如果需求求平方根,即设函数f(x)=x^2 - num
即求 f(x) = 0 的解
这个时候可以先定义一个初始化的解,init_solve = num/2
定义一个可以接受的误差范围: double tolerance = 1e-10
牛顿迭代法,x_n+1 = x_n - f(x_n)/f`(x_n)
f(x_n) =x_n^2 - num
f`(x_n)=2*x_n
x_n+1 = x_n - (x_n^2 - num)/ 2*x_n
Java实现
public static double sqrt_newton(double num) {
double guess = num / 2.0;
double tolerance = 1e-10;
if (tolerance < 1.0) {
System.out.print("right");
} else {
System.out.print("wrong");
}
while (true) {
double nextGuess = guess - (guess * guess - num) / (2 * guess);
if (Math.abs(nextGuess * nextGuess - num) < tolerance) {
break;
}
guess = nextGuess;
}
return guess;
}