问题是 要找到数字“ N”的平方根。使用此过程,我们必须实现 步骤如下:
我已经设置了代码,以使其在前一个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) 打印(答案)
答案 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