mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-24 13:31:07 +00:00
3a0555bdd7
Newton-Raphson method is non bracketing iterative algorithm to find the nearest root of an equation from point 'a'. It's much faster because convergence to the real root is very much faster than any other methods.
39 lines
985 B
Python
39 lines
985 B
Python
# Implementing Newton Raphson method in python
|
|
# Author: Haseeb
|
|
|
|
from sympy import diff
|
|
from decimal import Decimal
|
|
from math import sin, cos, exp
|
|
|
|
def NewtonRaphson(func, a):
|
|
''' Finds root from the point 'a' onwards by Newton-Raphson method '''
|
|
while True:
|
|
x = a
|
|
c = Decimal(a) - ( Decimal(eval(func)) / Decimal(eval(str(diff(func)))) )
|
|
|
|
x = c
|
|
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 trignometric fucntion
|
|
# 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))
|
|
|
|
|
|
|
|
|