首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

正实数X的开方

2013-11-02 
求一个正实数X的开方问题:求一个正实数X的平方根,不能使用sqrt等库函数。解析:本题要求求一个正实数的平方

求一个正实数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;}


热点排行