当前位置: 首页 > 面试题库 >

巴比伦平方根方法背后的数学

蔚和安
2023-03-14
问题内容

我读了计算任何数字的平方根的方法,算法如下:

double findSquareRoot(int n) {
    double x = n;
    double y = 1;
    double e = 0.00001;
    while(x-y >= e) {
        x = (x+y)/2;
        y = n/x;
    }
    return x;
}

我对这种方法的问题是

  1. 它如何计算平方根?我不了解其背后的数学原理。如何x=(x+y)/2 and y=n/x收敛到n的平方根。解释这个数学。

  2. 该算法的复杂性是什么?


问题答案:

很容易看出您是否进行了一些运行并打印了x和y的连续值。例如100:

50.5 1.9801980198019802
26.24009900990099 3.8109612300726345
15.025530119986813 6.655339226067038
10.840434673026925 9.224722348894286
10.032578510960604 9.96752728032478
10.000052895642693 9.999947104637101
10.000000000139897 9.999999999860103

见,诀窍是,如果x
的平方根n,那么它是高于或低于实际的根,并n/x始终是在另一侧上。所以,如果你计算的中点x,并n/x会在一定程度上更接近真正的根。

关于复杂性,它实际上是无限的,因为真正的根永远都不会到达。这就是为什么要使用e参数。



 类似资料:
  • 本文向大家介绍巴比伦方法求平方根,包括了巴比伦方法求平方根的使用技巧和注意事项,需要的朋友参考一下 查找平方根的巴比伦方法基于一种数值方法,该方法基于牛顿-拉夫森方法来求解非线性方程。 这个想法很简单,从x的任意值开始,并且y为1,我们可以通过找到x和y的平均值来简单地得到根的下一个近似值。然后,y值将更新为数字/ x。 输入输出 算法 输入:实数。 输出:给定数字的平方根。 示例 输出结果

  • 我想寻求有关使用巴比伦旋转的帮助。js框架。 我需要球体旋转45度,与对角圆对齐,对角圆有45度的方向,但我不明白。 我的代码在下面的链接中:https://codepen.io/polalas/pen/VwvaKwL 负责旋转的方法是loop()方法,每次渲染场景时都会触发该方法。 我想我对轮换处理不当。有人能帮忙吗?

  • 本文向大家介绍Python求解平方根的方法,包括了Python求解平方根的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python求解平方根的方法。分享给大家供大家参考。具体如下: 主要通过SICP的内容改写而来。基于newton method求解平方根。代码如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 问题 你想快速计算某数的平方根倒数。 解决方案 在 Quake Ⅲ Arena 的源代码中,这个奇怪的算法对一个幻数进行整数运算,来计算平方根倒数的浮点近似值。 在 CoffeeScript 中,他使用经典原始的变量,以及由 Chris Lomont 发现的新的最优 32 位幻数。除此之外,还使用 64 位大小的幻数。 另一特征是可以通过控制牛顿迭代法的迭代次数来改变其精确度。 相比于传统的,该算

  • 问题内容: 在python或标准库中的某个地方是否存在整数平方根?我希望它是准确的(即返回一个整数),如果没有解决办法,可以吠叫。 此刻,我滚动了自己的幼稚: 但这很丑陋,我不太相信大整数。我可以遍历正方形,如果超出了该值,则放弃,但是我认为做这样的事情有点慢。另外我想我可能正在重新发明轮子,像这样的东西肯定已经存在于python中了… 问题答案: 牛顿的方法在整数上工作得很好: 这将返回的最大整

  • python或标准库中是否有整数平方根?我希望它是精确的(即返回一个整数),如果没有解决方案,就吠叫。 此刻我卷起了我自己天真的一个: 但是它很难看,而且我不相信它是大整数。我可以遍历这些方块,如果超过了这个值就放弃,但我认为这样做会有点慢。而且我想我可能会重新发明轮子,像这样的东西肯定已经存在于python中了。。。