Newton's Method Practice
Recall the following definitions from Newton’s Method from discussion:
def approx_deriv(fn, x, dx=0.00001):
return (fn(x+dx)-fn(x))/dx
def newtons_method(fn, guess=1, max_iterations=100):
ALLOWED_ERROR_MARGIN = 0.0000001
i = 1
while abs(fn(guess)) > ALLOWED_ERROR_MARGIN and i <= max_iterations:
guess = guess - fn(guess) / approx_deriv(fn, guess)
i += 1
return guess
If you don’t understand Newton’s Method at all, be sure to ask your TA during office hours or ask on Piazza.
We want to write a function that will help us find the roots of the following mathematical equation:
f(x) = x^3 + x + 1
Write a function, f
that can find the root(s) of the function above.
def f():
"""Returns at least one root of the equation x^3 + x + 1."""
"***YOUR CODE HERE***"
Now, we want to make this function more general. How can we write a new function g
that takes in an argument y
and finds the roots of:
f(x, y) = x^3 + y + 1
For any y
value.
def g(y):
"""Returns at least one root of the equation x^3 + y + 1.
>>> round(g(5), 3)
-1.817
"""
"***YOUR CODE HERE***"
def f():
return newtons_method(lambda x: x**3 + x + 1
def g(y):
return newtons_method(lambda x: x**3 + y + 1
I don't claim to be perfect so if you find an error on this page, please send me an email preferably with a link to this page so that I know what I need to fix!