您的位置:首页 > 其它

求平方根

2013-09-17 00:45 190 查看
不用系统函数sqrt,求输入数据的平方根,误差在0.0001以内。

源自创新工场2014年校园招聘。

简要分析:可以采用二分的思想,首先去给定值的一半,将这个一半平方后与给定值比较,若给定值大,则继续二分上半部分;否则,继续二分下半部分。

另一种方法则巧妙很多,是数值分析里面讲到的“牛顿迭代”!该方法用到的递推式为:Xk+1 = (Xk + N / Xk) / 2 其中N为给定数,X从1.0开始,进行若干次迭代后,可接近N的平方根。

参考代码如下:

double mySqrt(double N)
{
double x = 1.0;

while(fabs(x * x - N) > 0.0001)	// math.h
{
x = (x + N / x) / 2;
}

return x;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  求平方根 算法 数学