求平方根
2013-09-17 00:45
190 查看
不用系统函数sqrt,求输入数据的平方根,误差在0.0001以内。
源自创新工场2014年校园招聘。
简要分析:可以采用二分的思想,首先去给定值的一半,将这个一半平方后与给定值比较,若给定值大,则继续二分上半部分;否则,继续二分下半部分。
另一种方法则巧妙很多,是数值分析里面讲到的“牛顿迭代”!该方法用到的递推式为:Xk+1 = (Xk + N / Xk) / 2 其中N为给定数,X从1.0开始,进行若干次迭代后,可接近N的平方根。
参考代码如下:
源自创新工场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; }
相关文章推荐
- 牛顿迭代法快速寻找平方根
- 【算法王道】二分法和牛顿迭代法求平方根
- 求一个数的平方根
- Thinking in scala (3)----求平方根
- 利用牛顿迭代法求平方根
- LintCode Sqrt(x) x的平方根
- 用来计算平方根
- 平方根的计算(二分逼近、牛顿拉普生法)
- 求素数为什么到平方根就行了
- 牛顿迭代法求解——平方根
- leetcode 69. Sqrt(x) 牛顿法求平方根
- 平方根运算的软件与硬件的加速计算
- 牛顿迭代法,求实数的平方根
- 利用牛顿迭代法求平方根
- 第一课:从一个简单的平方根运算学习平方根---【重温数学】
- 奇妙的算法(2)—— 求平方根
- 牛顿迭代法快速寻找平方根
- 牛顿迭代求平方根
- 牛顿迭代法求平方根(c++代码)