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

摘要

今天在Python书上无意看到了巴比伦求平方根的算法,感觉很是有趣,就写下来和大家分享一下。   & […]

今天在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时,结果如下:
求平方根的巴比伦方法和牛顿迭代法

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

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: