-
Notifications
You must be signed in to change notification settings - Fork 1
/
Newton's method
38 lines (33 loc) · 1.09 KB
/
Newton's method
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
%matplotlib inline
import numpy
import matplotlib.pyplot as plt
import scipy
from scipy import special
import sympy
def newton(x_0, f, f_prime, tolerance):
"""Find the zeros of the given function f using Newton's method
:Input:
- *M_0* (float) - Initial iterate
- *f* (function) - The function that will be analyzed
- *f_prime* (function) - The derivative of *f*
- *tolerance* (float) - Stopping tolerance for iteration
:Output:
If the iteration was successful the return values are:
- *M* (float) - Zero found via the given intial iterate.
- *n* (int) - Number of iterations it took to achieve the specified
tolerance.
otherwise
- *M* (float) - Last iterate found
- *n* (int) - *n = -1*
"""
# Parameters
MAX_STEPS = 1000
x=x_0
if numpy.abs(f(x)) < TOLERANCE: #if x0 is already close to the root
return x,0
# INSERT CODE HERE
for n in xrange(1,MAX_STEPS+1):
x = x - f(x) / f_prime(x) #newtwon's interation
if numpy.abs(f(x)) < TOLERANCE:
break
return x, n