牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛。
设相邻两个迭代点:x_(k+1), x_{k}, 最优值点 x*,若存在实数 q>0,满足:
牛顿迭代法迭代法最常见的应用是求取平方根
class Solution {
public int mySqrt(int x){
if(x==0){
return 0;
}
return (int)myFloatSqrt((double)x/2,x);
}
private double myFloatSqrt(double y,int x){
double y1 = y - (y*y-x)/(2*y);
double diff = Math.abs(y1-y);
double down = y1 - Math.floor(y1);
double up = Math.floor(y1) + 1 -y1;
System.out.println(up+" "+down+" "+y1+" "+y+" "+diff);
if(up>diff && down>=diff){
return y1;
}
return myFloatSqrt(y1,x);
}
}