2
我试图用牛顿法返回k的平方根的最小值。Python 3.3,在while循环中返回最小值
k=float(input("Number? "))
x = k/2
def newton(x):
while abs(x**(1/2)- k) >= 10**(-10):
if k >= 0:
x = (x+k/x)/(2)
return x
elif k < 0:
raise ValueError ("Cannot take the square root of a negative number")
print ("The approximate square root of", k, "is", newton(k))
print ("The error is", abs(x**(1/2)- k))
但是,上面的代码只返回第一次迭代。例如,如果k是2,则牛顿法的精确平方根应该是1.41422,这是第三次迭代。但是,代码目前正在返回1.5,这是第一次迭代。我如何返回更精确的平方根1.41422而不是1.5?同样,错误也需要反映这种变化。
究竟做什么你期望的时候会发生,在第一次迭代循环中,'return x'(用'x = 1.5')命中? – Ben