码迷,mamicode.com
首页 > 编程语言 > 详细

经典算法:牛顿迭代法求平方根

时间:2015-02-10 23:10:58      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:

//牛顿迭代法求平方根
1
double mysqrt(double num) 2 { 3 double x = num/2; 4 double y = 0; 5 do{ 6 x = x/2+num/(2*x); 7 y = x*x-num; 8 if(y<0) y = -y; 9 } while(y>0.0001); 10 return x; 11 } 12 int main(int argc, char* argv[]) 13 { 14 printf("%.3f",mysqrt(2));//1.414 15 return 0; 16 }

下面这段解释是从别的地方摘过来的,为了方便查看转了过来:

    这种算法的原理很简单,我们仅仅是不断用(x,f(x))的切线来逼近方程x^2-a=0的根。根号a实际上就是x^2-a=0的一个正实根,这个函数的导数是2x。也就是说,函数上任一点(x,f(x))处的切线斜率是2x。那么,x-f(x)/(2x)就是一个比x更接近的近似值。代入f(x)=x^2-a得到x-(x^2-a)/(2x),也就是(x+a/x)/2。

经典算法:牛顿迭代法求平方根

标签:

原文地址:http://www.cnblogs.com/jwk000/p/4285058.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!