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


猜测N的平方根的值
将N除以该猜测
使用原始猜测对结果求平均值,以得到新的猜测
转到步骤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


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

最佳答案

使用巴比伦方法意味着求解(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 + V/x) / 2.0
square_root = x



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

07-27 20:21