zoukankan      html  css  js  c++  java
  • 求一个正实数X的开方

    问题:求一个正实数X的平方根,不能使用sqrt等库函数。

    解析:本题要求求一个正实数的平方根,不能使用sqrt等已有的库函数,我们可以做一下考虑:

    利用二分法,mid=X/2.0,若mid*mid>X+p(由于浮点数不能精确表示和计算,设定p为一阈值),则说明X的开方小于mid,令mid=mid-q(q为设定的一个正的"小"实数);若mid*mid<X-p,则说明X的开方大于mid,令mid=mid+q;若X-p<mid*mid<X+p,则可返回mid为X的平方根。

    代码如下:

    double p=1.0E-8;//精确到小数点后8位;
    double q=1.0E-5;//精确到小数点后5位;
    double mysqrt(double X)
    {
        if(X<p)//浮点数X小于0
            return -1;
        double mid=X/2.0;
        while((mid*mid-X)>p||(mid*mid-X)<-p)
        {
            if(mid*mid-X>p)
                mid=mid-q;
            else
                mid=mid+q;
        }
        return mid;
    }


  • 相关阅读:
    python的包和模块
    python 匿名函数
    hdu 1455 Sticks
    python 返回函数
    python 自定义排序函数
    batchsize对收敛速度的影响
    mini_batch GD
    dropout
    sift
    hog
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3402547.html
Copyright © 2011-2022 走看看