我正在尝试使用牛顿法返回 k 平方根的最小值。
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 的平方根?同样,错误需要反映这种变化。