2
Newton의 방법을 사용하여 k의 제곱근에 대해 가장 작은 값을 반환하려고합니다.while 루프에서 가장 작은 값을 반환하는 Python 3.3
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이면 Newton의 방법에 의한 정확한 제곱근은 1.41422가되어야하며 이는 세 번째 반복입니다. 그러나 코드는 현재 1.5 번째 반복을 반환합니다. 1.5 대신 1.41422의 더 정확한 제곱근을 반환하려면 어떻게합니까? 마찬가지로 오류는이 변경 사항을 반영해야합니다.
는
을 정확하게 당신이 첫 번째 반복에, 때 발생하는 것으로 예상 할 무엇을 : 당신이 처음에 한 번 검사를 할 수 있도록
k
오히려 반복 모든보다는, 루프 내에서 변경하는는 또한 불가능 루프의'return x' ('x = 1.5'와 함께)가 맞았습니까? – Ben