原理
实现代码
public class NewTonMethod {
public static double sqrt(double c){
double err = 1e-15;
double x = c;
double y = x - (x * x - c)/(2 * x);
while (abs(y - x) > err) {
x = y;
y = x - (x * x - c)/(2 * x);
}
return y;
}
public static double abs(double x){
if (x > 0) return x;
else return -x;
}
public static void main(String []args) {
System.out.println(sqrt(16));
}
}
public class NewTonMethod {
public static double sqrt(double c){
double err = 1e-15;
double x = c;
double y = (x + c / x) / 2.0; //优化公式计算
while (abs(y - x) > err) {
x = y;
y = (x + c / x) / 2.0;
}
return y;
}
public static double abs(double x){
if (x > 0) return x;
else return -x;
}
public static void main(String []args) {
System.out.println(sqrt(36));
}
}
public class NewTonMethod {
public static double sqrt(double c){
double err = 1e-15;
double x = c;
while (abs(x - c/x) > err * x ) { //优化迭代条件,减少变量数量
x = (x + c / x) / 2.0;
}
return x;
}
public static double abs(double x){
if (x > 0) return x;
else return -x;
}
public static void main(String []args) {
System.out.println(sqrt(36));
}
}