【问题标题】:Finding square root without using math.sqrt()?不使用 math.sqrt() 求平方根?
【发布时间】:2016-09-02 16:57:45
【问题描述】:

我最近在不使用sqrt() 的情况下在python 中查找数字的平方根。我遇到了这段代码,很难理解这段代码中的逻辑:

def sqrt(x):
    last_guess= x/2.0
    while True:
        guess= (last_guess + x/last_guess)/2
        if abs(guess - last_guess) < .000001: # example threshold
            return guess
        last_guess= guess

更具体地说,在上面的代码中计算 guess 背后的逻辑。谁能帮我理解逻辑?

【问题讨论】:

  • 请说明您遇到的问题:您在网络上搜索“平方根算法”应该会找到很多点击量来回答您的问题。这也称为牛顿法(适用于平方根)或巴比伦法。
  • 逻辑:将最后的猜测初始化为½数。计算一个新的猜测,它是最后一个猜测的平均值和这个数字除以最后一个猜测。检查这个新值是否与上一个值足够不同以将其作为答案返回。如果不是,则将最后的猜测设为新的并重复该过程。假设这个平均过程的每次迭代都会更接近答案。

标签: python square-root


【解决方案1】:

您始终可以将幂 (**) 运算符与反指数一起使用:

a = 2 ** (1.0 / 2)
a
> 1.41421...

【讨论】:

  • ...虽然我怀疑这不是您想知道的...
  • 只需2 ** 0.5
  • 我知道电源运算符,但想了解我在帖子中提到的代码背后的逻辑
猜你喜欢
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 2021-12-09
  • 2012-10-02
  • 1970-01-01
  • 2011-10-02
相关资源
最近更新 更多