Further Exercises on Root-finding

1.8. Further Exercises on Root-finding#

Exercise A

a) Create a Python file (module) named rootfinding.py, containing an updated version of your function for the bisection method with usage format

(root, errorEstimate, backwardError, functionEvaluations) =
    bisection(f, a, b errorTolerance)

and add functions implementing the Newton and secant methods with usage

(root, errorEstimate, backwardError, functionEvaluations) =
    newton(f, Df, x0, errorTolerance)

(root, errorEstimate, backwardError, functionEvaluations) =
    secant(f, x0, x1, errorTolerance)

b) Then initially use each of this program to solve the equation

\[ 10 - 2x + \sin(x) = 0 \]

with an absolute error of no more than \(10^{-8}\), and then no more than \(10^{-15}\). Note in particular how many iterations and how many function evaluations are needed.

Do the final testing from a notebook, importing the three functions from this module.

However, initial code development and testing is sometimes most conveniently done within the module file, using the method with

if __name__ == "__main__":

We will discuss details like refinements and further test cases in class.

c) Discuss the comparisons of “speed” or “cost”, in terms of both iterations and function evaluations needed.