牛顿迭代法 这里不多说,直接上代码:
求平方根:
public static double getPingFangRoot(double input){
if(input==0)
return 0;
double x0,x1;
x0=input;
x1=(1*x0/2)+(input/(x0*2));//利用迭代法求解
while(Math.abs(x1-x0)>0.000001){
x0=x1;
x1=(1*x0/2)+(input/(x0*2));
}
return x1;
}
求立方根:
public static double getCubeRoot(double input){
if(input==0)
return 0;
double x0,x1;
x0=input;
x1=(2*x0/3)+(input/(x0*x0*3));//利用迭代法求解
while(Math.abs(x1-x0)>0.000001){
x0=x1;
x1=(2*x0/3)+(input/(x0*x0*3));
}
return x1;
}
求四次方根:
public static double getSiciRoot(double input){
if(input==0)
return 0;
double x0,x1;
x0=input;
x1=(3*x0/4)+(input/(x0*x0*x0*4));//利用迭代法求解
while(Math.abs(x1-x0)>0.000001){
x0=x1;
x1=(3*x0/4)+(input/(x0*x0*x0*4));
}
return x1;
}
求五次方根:
public static double getWuciRoot(double input){
if(input==0)
return 0;
double x0,x1;
x0=input;
x1=(4*x0/5)+(input/(x0*x0*x0*x0*5));//利用迭代法求解
while(Math.abs(x1-x0)>0.000001){
x0=x1;
x1=(4*x0/5)+(input/(x0*x0*x0*x0*5));
}
return x1;
}
求n次方根解法是一样的,从以上可以看出规律,不多说。。。。