## Features of a Good Algorithm

All numerical solutions involve some error. An important goal for any numerical algorithm is that the error should be small. However, it is equally important to have bounds on any error so that

we have confidence in any answers. How accurate an answer needs to be depends upon the

application. For example, an error of 0:1% may be more than enough in many cases but might

be hopelessly inaccurate for landing a probe on a planet.

Efficiency

An efficient algorithm is one that minimises the amount of computation time, which usually means the number of arithmetic calculations. A very large calculation can take weeks to run, so efficiency becomes important, especially if it needs to be run many times.

Stability and Robustness

All calculations involve rounding errors. Although the error in each calculation may be small, it is possible for the errors to multiply exponentially with each calculation so that the error becomes as large as the answer. For example ifandthen with this value ofsubject to this uncertainty

When this happens, the methods is described as being unstable or ill conditioned. For example, a set of equations is ill conditioned if the coefficients are close together. The equations

and

are very similar with only a difference of 0.1 in one coefficient, but the first set has a unique solution and the second set has an infinite number of solutions. In this case the line defined byandare nearly parallel, so a small change in coefficients may lead to the point of intersection being very different. This is illustrated qualitatively below.

A robust algorithm is one that is stable for a wide range of problems.