mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-01-18 16:27:02 +00:00
Create NewtonRaphsonMethod.py
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.
This commit is contained in:
parent
0a1b6ad4cf
commit
3a0555bdd7
38
ArithmeticAnalysis/NewtonRaphsonMethod.py
Normal file
38
ArithmeticAnalysis/NewtonRaphsonMethod.py
Normal file
|
@ -0,0 +1,38 @@
|
|||
# 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))
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user