# Implementing Newton Raphson method in Python # Author: Syed Haseeb Shah (github.com/QuantumNovice) # The Newton-Raphson method (also known as Newton's method) is a way to # quickly find a good approximation for the root of a real-valued function from sympy import diff from decimal import Decimal def NewtonRaphson(func, a): """ Finds root from the point 'a' onwards by Newton-Raphson method """ while True: c = Decimal(a) - (Decimal(eval(func)) / Decimal(eval(str(diff(func))))) a = c # This number dictates the accuracy of the answer if abs(eval(func)) < 10 ** -15: return c # Let's Execute if __name__ == "__main__": # Find root of trigonometric function # Find value of pi print("sin(x) = 0", NewtonRaphson("sin(x)", 2)) # Find root of polynomial print("x**2 - 5*x +2 = 0", NewtonRaphson("x**2 - 5*x +2", 0.4)) # Find Square Root of 5 print("x**2 - 5 = 0", NewtonRaphson("x**2 - 5", 0.1)) # Exponential Roots print("exp(x) - 1 = 0", NewtonRaphson("exp(x) - 1", 0))