UseModify the code to find the squareroot only at fx Solutio
Use/Modify the code to find the squareroot only at f(x)
Solution
print \'Find the root of a given function - NEWTON RAPHSONS METHOD\' print \'The function is the following: ...\' x=input(\'Choose an initial estimate:\') #An initial estimate is necessary to be choosen to start the iteration process x=float(x) #The number inserted is transformed into a floating point number max_n_iterations=input(\'Choose max n. iterations:\') #The user decides the maximum number of iterations to run approximations = [] #Vector collecting all the intermediate solutions; i.e. the approximated roots evaluated before reaching the final solution iterations= [] def f(x): #The given function has to be inserted manually in the code return 2*x**3+45*x+1/x**2+16 def D(f): #Evaluates the first derivative of the given function, using the definition of derivative def df(x, h): #x is the initial estimate, h is the increment return (f(x+h) - f(x))/h #Difference quotient return df #First derivative def newtons_method(f, x, h=0.000001, epsilon=0.000001,): #This is the main process: f is the given function, x and h are the same as above, epsilon is the tolerance level. Epsilon and h have to be choosen sufficiently small df = D(f) #df is just the first derivative, as before for i in range(max_n_iterations): #The code runs until the maximum number of iterations is reached x1 = x - f(x)/df(x, h) #Essence of Newton Raphson method: the iteration process approximations.append(x) #Every intermediate solution is collected into a vector, as defined above iterations.append(1) if abs(x1 - x) < epsilon: #When the absolute difference between two successive roots is less than the tolerance level (i.e. the sequence of solutions strongly converges), the program exists the cycle break x = x1 #The next solution becomes the starting solution in the new cycle return x #Final solution def final_solution(): #The final solution from the Newton Raphson method return newtons_method(f,x) df=D(f) #These values have to be inserted again to allow the execution of the final step h=0.000001 epsilon=0.000001 x=newtons_method(f,x) if abs((x-f(x)/df(x,h))-x) < epsilon: #If (strong) convergence has been reached print \'Solution is:\', final_solution() #Prints the final solution print \'Approximations before reaching convergence:\', approximations #Prints the vector of intermediate solutions print \'Convergence has been reached after\', len(iterations), \'iterations\' print \'Newton Raphson method was successful!\' elif abs((x-f(x)/df(x,h))-x) >= epsilon: #If (strong) convergence has not been reached print \'Approximated solution is:\', final_solution() print \'Approximations evaluated:\', approximations print \'Convergence has not been reached after\', max_n_iterations, \'iterations\' print \'Newton Raphson method was not successful\'