天天看点

利用牛顿迭代法 求n次方根

牛顿迭代法 这里不多说,直接上代码:

求平方根:

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次方根解法是一样的,从以上可以看出规律,不多说。。。。