您的位置:首页 > 其它

用牛顿迭代法求浮点数的平方根

2010-08-19 13:31 260 查看
比如我们要求a的平方根,首先随便猜一个近似值x,然后不断令x等于x和a/x的平均数,迭代几次后x的值就已经相当精确了。

看下面(假设a=2,我们求2的平方根):

1.先随便猜个数,比如我猜2的平方根为7

( 7 + 2/7 ) / 2 = 3.64287514

( 3.64287514 + 2/3.64287514 ) / 2 = 2.095946017

......

......

( n+ 2/n) / 2 = 1.414....

下面是代码:

#define ABS(VAL) (((VAL)>0)?(VAL):(-(VAL)))
//用牛顿迭代法求浮点数的平方根
float mysqrt(float x) {
float g0,g1;
if(x==0)
return 0;
g0=x/2;
g1=(g0+x/g0)/2;
while(ABS(g1-g0)>0.01)
{
g0=g1;
g1=(g0+(x/g0))/2;
}
return g1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息