This notebook contains an excerpt from the Python Programming and Numerical Methods - A Guide for Engineers and Scientists, the content is also available at Berkeley Python Numerical Methods.

The copyright of the book belongs to Elsevier. We also have this interactive book online for a better learning experience. The code is released under the MIT license. If you find this content useful, please consider supporting the work on Elsevier or Amazon!

# Tolerance¶

In engineering and science, error is a deviation from an expected or computed value. Tolerance is the level of error that is acceptable for an engineering application. We say that a computer program has converged to a solution when it has found a solution with an error smaller than the tolerance. When computing roots numerically, or conducting any other kind of numerical analysis, it is important to establish both a metric for error and a tolerance that is suitable for a given engineering/science application.

For computing roots, we want an $$x_r$$ such that $$f(x_r)$$ is very close to 0. Therefore $$|f(x)|$$ is a possible choice for the measure of error since the smaller it is, the likelier we are to a root. Also if we assume that $$x_i$$ is the $$i$$th guess of an algorithm for finding a root, then $$|x_{i+1} - x_i|$$ is another possible choice for measuring error, since we expect the improvements between subsequent guesses to diminish as it approaches a solution. As will be demonstrated in the following examples, these different choices have their advantages and disadvantages.

TRY IT! Let error be measured by $$e = |f(x)|$$ and tol be the acceptable level of error. The function $$f(x) = x^2 + \text{tol}/2$$ has no real roots. However, $$|f(0)| = {\text{tol}}/2$$ and is therefore acceptable as a solution for a root finding program.

TRY IT! Let error be measured by $$e = |x_{i+1} - x_i|$$ and tol be the acceptable level of error. The function $$f(x) = 1/x$$ has no real roots, but the guesses $$x_i = -{\text{tol}}/4$$ and $$x_{i+1} = {\text{tol}}/4$$ have an error of $$e = {\text{tol}}/2$$ and is an acceptable solution for a computer program.

Based on these observations, the use of tolerance and converging criteria must be done very carefully and in the context of the program that uses them.