求平方根的巴比伦方法和牛顿迭代法

今天在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

求平方根的巴比伦方法和牛顿迭代法


求平方根的巴比伦方法和牛顿迭代法

这里我们可以发现程序的效率很低,当我们选取x=30,y=2时,结果如下:

求平方根的巴比伦方法和牛顿迭代法



可见,预测值的选取很重要,那该如何选取这个值呢,这就要用到我们的快速平方根法,这种方法许多人都写过博客,我就发一个链接吧,里面的程序非常有意思,只要迭代一次就可以得到比较好的开方效果,其中涉及到的牛顿迭代我也发一个链接供大家参考:

 (1)快速平方根法

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d2949127fa80ba5785749c1198782a0e.html