数学解释
牛顿迭代法的思路为,取一点x,在该点处画曲线的切线,交于x轴为x0,然后再在x=x0处画曲线的切线,一直下去,直到精度达到最初设定的要求为止。
牛顿法的公式为 ,下面给出这个公式的推导过程与理解思路
对于解方程,即
,变为函数 f(x)=
结合函数图像,先找到一点x0,然后在曲线的该点画切线,切线斜率为f'(x0),该切线可这么表示:
该切线交于x轴的点即为f(x)=0时x的值,将f(x)=0带入,得
,将f'(x0)除到左边就有
代码解释
int mySqrt(int x) {
if(x<1) return 0;
if(x==1) return 1;
double r=0.001; //此处为设定的精度值,最好不要改变这个数
double x0=x;
double x1=x0/2+x/(2*x0);
while (fabs(x1-x0)>r){
x0=x1;
x1=x0/2+x/(2*x0);
}
return (int)x1;
}
由上式,我们对f(x)求导时可得
,并且还有
带入后就有