2020-09-17
数学类
题目:求num的n次方根
思路1:设置一个精度,利用二分的方法,不断二分,得到k,直到kk…… <precision
思路2:利用牛顿迭代法:X(n+1) = Xn - f(Xn)’/f(Xn)
利用上一项和下一项之间的关系求解
主要就是找一下规律
依次向下推进,不断迭代,小于精度就可以得到结果
// n次方根,牛顿迭代法
public static double get(int n,int num){
DecimalFormat decimalFormat = new DecimalFormat("#.00");
// x1 = (x0 + a/x0)/2
// x1 =(2x0 + a/x0^2)/3
// x1 = ( 3x0 + a/x0^3)/4
double x1 =100,x0 = num;
double precision = 0.0000001;
int count1 =1;
while ((x1 - num) > precision){
int count = 2;
while (count < n){
x0 *= x0;
count++;
}
x1 = ((n-1)*x0+num/x0)/n;
x0 = x1;
while (count1 <= n){ x1*=x1;count1++;};
}
return Double.valueOf(decimalFormat.format(x1));
}
n:表示求几次方根;num表示要求根的数据