【♂Not The Triumph♂O(∩_∩)O哈哈~But The Struggle♂】

竞赛决不是捷径,它只是另一种艰辛的生活方式。得到与失去,只有时间会去评判;成功与失败,只有历史能去仲裁。我不会永远成功,正如我不会永远失败一样

  C++博客 :: 首页 :: 联系 ::  :: 管理
  6 Posts :: 239 Stories :: 25 Comments :: 0 Trackbacks

常用链接

留言簿(7)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 104859
  • 排名 - 233

最新评论

阅读排行榜

评论排行榜

                           利用牛顿迭代法快速求平方根
下面我来介绍一种比起C里面库函数sqrt()快一些的算法来求一个数的平方根。

算法的主要过程是:首先我们设要求的这个数为a,它的平方根为x;然后我们一开始令x=a;然后我们进入一个循环,不断的令x=(x+a/x)/2,就是令x等于 x和a/x的平均值,这样迭代了7-10次左右就可以得到a的平方根x的近似值。

假如我们求10的平方根,那么a=10,x=10;

( 10     +   10/10   ) / 2 = 5.5
( 5.5     +   10/5.5 ) / 2 = 3.659090909….
( 3.659090909 + 10/3.659090909)/2=3.1960050818631…..
……


写成code的话就是这样:

double sqrt(double a){
     
double x;
      x=a;
     
for(int i=1;i<=10;i++)
            x=(x+a/x)/2;
     
return x;
}

这个算法的原理很简单,我们令f(x)=x^2-a,那么我们就是利用牛顿迭代法来求x^2-a=0的根。

posted on 2009-03-29 09:08 开拓者 阅读(2120) 评论(0)  编辑 收藏 引用 所属分类: 数论&几何

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理