循环功能以找到数字的平方根

时间:2018-09-17 07:05:53

标签: python loops square-root

问题是 要找到数字“ N”的平方根。使用此过程,我们必须实现 步骤如下:

  1. 猜测N的平方根的值
  2. 通过该猜测除以N
  3. 将结果与您的原始猜测进行平均,以获得新的猜测
  4. 转到步骤2并重复

我已经设置了代码,以使其在前一个Guess的0.5以内时返回Guess,如果不重复该函数,则返回它。我不确定如何使其重复或如何闭合循环。

def SqrRt(Number,Guess):
while Guess2 == ((Estimate+Guess)/2):
    if (Estimate - Guess2) <= 0.5:
        return Guess2
    elif (Estimate - Guess2) >= -0.5:
        return Guess2
    else:
       Estimate = (Number/Guess)
    Guess2 = Estimate + 1

answer = SqrRt(34567823321421,500000) 打印(答案)

2 个答案:

答案 0 :(得分:3)

使用巴比伦方法意味着求解(S ^ 2-V)=0。在这里,S是将要找到的V的平方根。应用牛顿近似法得出一种迭代方法,其中“ x_new =(x_prev + V / x_prev)/ 2”。需要估计第一个“ x_prev”。

迭代单调收敛。因此,检查开发中的增量就足够了。

x      = V / 2.0       # First estimate
prev_x = x + 2 * Delta # Some value for that 'while' holds
while abs(prev_x - x) > Delta:
    prev_x = x
    x      = (x + S/x) / 2.0
square_root = x

选择Delta任意小(例如0.0001)。

答案 1 :(得分:0)

先行

对于这样的问题,您需要实际上可以运行的代码。我建议您的代码应更像这样:

def SqrRt(Number,Guess):
    while Guess2 == ((Estimate+Guess)/2):
        if (Estimate - Guess2) <= 0.5:
            return Guess2
        elif (Estimate - Guess2) >= -0.5:
            return Guess2
        else:
           Estimate = (Number/Guess)
        Guess2 = Estimate + 1
answer = SqrRt(34567823321421,500000)
print(answer) 
#Number to Use - 34567823321421
#Answer - 5879440.732