今天在Python书上无意看到了巴比伦求平方根的算法,感觉很是有趣,就写下来和大家分享一下。
巴比伦求平方根的算法实际上很简单:(假设要求一个数N的平方根)
(1)预测一个平方根x,初始另一个值y,且x*y=N
(2)求预测值与初始值的均值:x=x=(x+y)/2
(3)比较x和y的差值是否达到精度,如果无,继续步骤(2)
实际上,书上说的更简单,也模糊一些,这里我就加一些个人理解。但这里的问题在于我们的第一个预测值的选取,如果选取得太离谱,效率就会很低,这里我们举一个例子:
N=60,x=60,y=1,精度取位0.0001
![](../../upload/2016_10/161016135195212.png)
![](../../upload/2016_10/161016135195213.png)
这里我们可以发现程序的效率很低,当我们选取x=30,y=2时,结果如下:
![](../../upload/2016_10/161016135195211.png)
可见,预测值的选取很重要,那该如何选取这个值呢,这就要用到我们的快速平方根法,这种方法许多人都写过博客,我就发一个链接吧,里面的程序非常有意思,只要迭代一次就可以得到比较好的开方效果,其中涉及到的牛顿迭代我也发一个链接供大家参考:
(1)
快速平方根法