Numerical analysis

Numerical analysis is the study of algorithms for the problems of continuous mathematics (as distinguished from discrete mathematics). This means it deals mainly with real variable or complex variable questions, numerical linear algebra over the real or complex fields, the solution of differential equations, and other related problems arising in the physical sciences and engineering.
Contents 
General introduction
Some problems in continuous mathematics can be solved exactly by an algorithm. These algorithms are called direct methods. Examples are Gaussian elimination for solving systems of linear equations and the simplex method in linear programming.
However, no direct methods exist for most problems. We might then try to replace the continuous problem by a discrete problem; this process is called discretization. Another possibility is to use an iterative method. Such a method starts from a guess and finds successive approximations that hopefully converge to the solution. Even when a direct method does exist, an iterative method may be preferable because it is more efficient.
The generation and propagation of errors
The study of errors forms an important part of numerical analysis. There are several ways in which error can be introduced in the solution of the problem. Roundoff errors arise because it is impossible to represent all real numbers exactly on a finitestate machine (which is what all practical digital computers are). Truncation errors are committed when an iterative method is terminated and the approximate solution differs from the exact solution. Similarly, discretization induces a discretization error because the solution of the discrete problem does not coincide with the solution of the continuous problem.
Once an error is generated, it propagates through the calculation. This leads to the notion of numerical stability: an algorithm is numerically stable if an error, once it is generated, does not grow too much during the calculation. This is only possible if the problem is wellconditioned, meaning that the solution changes by only a small amount if the problem data are changed by a small amount. Indeed, if a problem is illconditioned, then any error in the data will grow a lot.
However, an algorithm that solves a wellconditioned problem may or may not be numerically stable. An art of numerical analysis is to find a stable algorithm for solving a wellposed mathematical problem.
Applications
The algorithms of numerical analysis are routinely applied to solve many problems in science and engineering. Examples are the design of structures like bridges and airplanes (see computational physics and computational fluid dynamics), weather forecasting, climate models, the analysis and design of molecules (computational chemistry), and finding oil reservoirs. In fact, almost all supercomputers are continually running numerical analysis algorithms.
As a consequence, efficiency plays an important role and a heuristic method may be preferred above a method with a solid theoretic foundation because it is more efficient. Generally, numerical analysis uses empirical results of computation runs to probe new methods and analyze problems, though it of course also employs mathematical axioms, theorems and proofs.
Areas of study
The field of numerical analysis is divided in different disciplines according to the problem that is to be solved.
Computing values of functions
One of the simplest problems is the evaluation of a function at a given point. But even evaluating a polynomial is not straightforward: the Horner scheme is often more efficient than the obvious method. Generally, it is important to estimate and control roundoff errors arising from the use of floating point arithmetic.
Interpolation, extrapolation and regression
Interpolation solves the following problem: given the value of some unknown function at a number of points, what value does that function have at some other point between the given points? A very simple method is to use linear interpolation, which assumes that the unknown function is linear between every pair of successive points. This can be generalized to polynomial interpolation, which is sometimes more accurate but suffers from Runge's phenomenon. Other interpolation methods use localized functions like splines or wavelets.
Extrapolation is very similar to interpolation, except that now we want to find the value of the unknown function at a point which is outside the given points.
Regression is also similar, but it takes into account that the data is imprecise. Given some points, and a measurement of the value of some function at these points (with an error), we want to determine the unknown function. The least squaresmethod is one popular way to achieve this.
Solving equations and systems of equations
Another fundamental problem is computing the solution of some given equation. Two cases are commonly distinguished, depending on whether the equation is linear or not.
Much effort has been put in the development of methods for solving systems of linear equations. Standard methods are GaussJordan elimination and LUfactorization. Iterative methods such as the conjugate gradient method are usually preferred for large systems.
Rootfinding algorithms are used to solve nonlinear equations (they are so named since a root of a function is an argument for which the function yields zero). If the function is differentiable and the derivative is known, then Newton's method is a popular choice. Linearization is another technique for solving nonlinear equations.
Optimization
Main article: Optimization (mathematics).
Optimization problems ask for the point at which a given function is maximized (or minimized). Often, the point also has to satisfy some constraints.
The field of optimization is further split in several subfields, depending on the form of the objective function and the constraint. For instance, linear programming deals with the case that both the objective function and the constraints are linear. A famous method in linear programming is the simplex method.
The method of Lagrange multipliers can be used to reduce optimization problems with constraints to an unconstrained optimization problems.
Evaluating integrals
Main article: Numerical integration.
Numerical integration, also known as numerical quadrature, asks for the value of a definite integral. Popular methods use some NewtonCotes formula, for instance the midpoint rule or the trapezoid rule, or Gaussian quadrature. However, if the dimension of the integration domain becomes large, these methods become prohibitively expensive. In this situation, one may use a Monte Carlo method, a quasiMonte Carlo method, or, in modestly large dimensions, the method of sparse grids.
Differential equations
Main articles: Numerical ordinary differential equations, Numerical partial differential equations.
Numerical analysis is also concerned with computing (in an approximate way) the solution of differential equations, both ordinary differential equations and partial differential equations.
Partial differential equations are solved by first discretizing the equation, bringing it into a finitedimensional subspace. This can be done by a finite element method, a finite difference method, or (particularly in engineering) a finite volume method. The theoretical justification of these methods often involves theorems from functional analysis. This reduces the problem to the solution of an algebraic equation.
History
The field of numerical analysis predates the invention of modern computers by many centuries. In fact, many great mathematicians of the past were preoccupied by numerical analysis, as is obvious from the names of important algorithms like Newton's method, Lagrange interpolation polynomial, Gaussian elimination, or Euler's method.
To facilitate computations by hand, large books were produced with formulas and tables of data such as interpolation points and function coefficients. Using these tables, often calculated out to 16 decimal places or more for some functions, one could look up values to plug into the formulas given and achieve very good numerical estimates of some functions. The canonical work in the field is the NIST publication edited by Abramowitz and Stegun, a 1000plus page book of a very large number of commonly used formulas and functions and their values at many points. The function values are no longer very useful when a computer is available, but the large listing of formulas can still be very handy.
The mechanical calculator was also developed as a tool for hand computation. These calculators evolved into electronic computers in the 1940s, and it was then found that these computers were also useful for administrative purposes. But the invention of the computer also influenced the field of numerical analysis, since now longer and more complicated calculations could be done.
Software
Nowadays, most algorithms are implemented and run on a computer. The Netlib repository contains various collections of software routines for numerical problems, mostly in Fortran and C. Commercial products implementing many different numerical algorithms include the IMSL and NAG libraries; a free alternative is the GNU Scientific Library. A different approach is taken by the Numerical Recipes library, where emphasis is placed on clear understanding of algorithms.
There are a number of computer programs used for performing numerical calculations:
 MATLAB is a widelyused program for performing numerical calculations. It comes with its own programming language, in which numerical algorithms can be implemented.
 GNU Octave is a nearclone of MATLAB (free software, GNU GPL license).
 R programming language is a widely used system with a focus on data manipulation and statistics. Several hundred freely downloadable specialized packages are available (free software, GNU GPL license).
 Scilab, an opensource (Scilab license) program for performing numerical calculations.
 DADiSP is popular program that combines the numerical capability of Matlab with a spreadsheet like interface.
 IDL programming language.
 FreeMat, an opensource MATLABlike environment with a MITtype license.
 Python programming language:
 SciPy, a library of scientific tools;
 matplotlib, a MATLABlike plotting library.
 Perl Data Language, a dialect of Perl used for data manipulation, statistics, and numerical simulation.
Many computer algebra systems such as Mathematica or the Maple computer algebra system (free software systems include Maxima, Axiom, calc and Yacas) can also be used for numerical computations.
See also
 Scientific computing
 List of numerical analysis topics
 GramSchmidt process
 Important publications in numerical analysis
External links
 Numerical analysis DMOZ category (http://dmoz.org/Science/Math/Numerical_Analysis/)
 Numerical Recipes Homepage  with free, complete downloadable books (http://www.nr.com/)
 Links to great Open Source Scientific Computing codes (http://wiki.enst.fr/bin/view/Main/FlorianDeVuyst)
References
 Nick Trefethen, The definition of numerical analysis (http://web.comlab.ox.ac.uk/oucl/work/nick.trefethen/defn.ps.gz), SIAM News, November 1992.
cs:Numerická matematika de:Numerische Mathematik es:Análisis numérico fr:Calcul numérique it:Analisi numerica ja:数値解析 nl:Numerieke wiskunde pl:Metody numeryczne pt:Análise numérica ro:Analiză numerică ru:Вычислительная математика su:Analisis numeris sv:Beräkningsvetenskap