C语言里面的开方函数是怎么实现的?求代码

如题所述

用二分的方法,在一个区间中,每次拿中间数的平方来试验,如果大了,就再试左区间的中间数;如果小了,就再拿右区间的中间数来试。比如求sqrt(16)的结果,你先试(0+16)/2=8,8*8=64,64比16大,然后就向左移,试(0+8)/2=4,4*4=16刚好,你得到了正确的结果sqrt(16)=4。然后你三下五除二就把程序写出来了: float SqrtByBisection(float n) //用二分法 { if(n<0) //小于0的按照你需要的处理 return n; float mid,last; float low,up; low=0,up=n; mid=(low+up)/2; do { if(mid*mid>n) up=mid; else low=mid; last=mid; mid=(up+low)/2; }while(abs(mid-last) > eps);//精度控制 return mid; }
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-09

利用牛顿迭代法求算数平方根

double sqrt(double a)
{
    double x,y;
    x=0.0;
    y=a/2;
    while(x!=y)
    {
        x=y;
        y=(x+a/x)/2;
    } 
    return x;
}

相似回答