码迷,mamicode.com
首页 > 其他好文 > 详细

自己实现的一个sqrt函数

时间:2017-09-22 19:45:10      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:自己实现   计算   结果   pre   自己   std   class   mit   logs   

看了MIT的6.00的计算机科学导论课的第一节,其中,老师讲的一个sqrt的实现算法记忆犹新。

代码如下:

#include <stdio.h>
#define E 1e-10
double Abs(double a,double b){
        if(a-b<0){
                return b - a;
        }
        return a - b;
}
double Sqrt(double value){
        double i,last=0,cur=0;
        for(i=0;i*i<value;i++);
        i--;
        do{
                last = cur;
                i = (value/i+i)/2;
                cur = i*i;
        }while(Abs(cur,last) > E);
        return i;
}

代码写的有点丑,效率可能也不会比库函数高(记得网上看到过有比库函数效率高的,不过你们自己去查把。。。),但是大致的思想还是很有收获的。

这个算法就是根据一个数的平方根的平方等于这个数来建立的。

假设求的是16的平方根

猜想数g   g^2    x/g   (x/g + g) 

3       9     16/3    16/3 + 3

16/3+3    ......

依次迭代直到x - g^2达到指定的精度,就是所求得结果,我这里设置的是E = 10e-10。

然后就是感叹一下,同样是大学,差距真的是。。。。

自己实现的一个sqrt函数

标签:自己实现   计算   结果   pre   自己   std   class   mit   logs   

原文地址:http://www.cnblogs.com/mtl6906/p/7576636.html

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