i am in need of help with this homework. The instructions are as followed: Package Newton's method for approximating square roots in a function named newton. This function expects the input number as an argument and returns the estimate of its square root. The script should also include a main function that allows the user to compute the square roots of inputs until the user presses the enter/return key. This is what I have so far:
import math
#Initialize tolerance
tolerance = 0.000001
def newton(x):
""" Returns the square root of x """
#Performs the successive approximations
estimate = 1.0
while True:
estimate = (estimate + x / estimate) / 2
difference = abs(x - estimate ** 2)
if difference <= tolerance: # Break out of loop if difference is less than tolerance
break
return estimate # While the difference value is > TOLERANCE, the process continues
def main():
"""Allows the user to obtain square roots."""
while True:
#Receive the input number from the user
x = input("Enter a positive number or enter/return to quit: ")
if x == "": #if user presses "Enter" then exit the program
break # Otherwise, continue the process of allowing new numbers
x = float(x)
#Output the result
print("The programs estimate of the square root of ", x, "is ", round(newton(x),2))
print("Python's estimate: ", math.sqrt(x))
main()
I tested it out, but it seems like the calculation is not accurate, can anyone help me?