- 因为牛顿法求的是零点,首先我们要构造零点等于解的算式:
f(x) = x * x - y
,其中y
是我们要开方的目标值。 - 然后就用泰勒一阶展开来求就好了
http://sofasofa.io/forum_main_post.php?postid=1000182
double newton(double target, double threshold){
double ret = 1;
while(abs(target - ret * ret) > threshold){
ret = ret / 2 + target / (2 * ret);
}
return ret;
}