|
|
Line 1: |
Line 1: |
| {{more footnotes|date=November 2013}}
| | Hi there! :) My name is Dina, I'm a student studying Agriculture and Life Sciences from Bois-De-Villers, Belgium.<br><br>my blog: [http://www.termlifepolicy.com/insurance-companies/nationwide-mutual.html/rk=0 termlife policy] |
| {{Use dmy dates|date=July 2012}}
| |
| [[Image:Ybc7289-bw.jpg|thumb|250px|right|Babylonian clay tablet YBC 7289 (c. 1800–1600 BC) with annotations. The approximation of the [[square root of 2]] is four [[sexagesimal]] figures, which is about six [[decimal]] figures. 1 + 24/60 + 51/60<sup>2</sup> + 10/60<sup>3</sup> = 1.41421296...<ref>[http://it.stlawu.edu/%7Edmelvill/mesomath/tablets/YBC7289.html Photograph, illustration, and description of the ''root(2)'' tablet from the Yale Babylonian Collection]</ref>]]
| |
| '''Numerical analysis''' is the study of [[algorithm]]s that use numerical [[approximation]] (as opposed to general [[symbolic computation|symbolic manipulations]]) for the problems of [[mathematical analysis]] (as distinguished from [[discrete mathematics]]).
| |
| | |
| One of the earliest mathematical writings is a Babylonian tablet from the [[Yale Babylonian Collection]] (YBC 7289), which gives a [[sexagesimal]] numerical [[numerical approximation|approximation]] of <math>\sqrt{2}</math>, the length of the [[diagonal]] in a [[unit square]]. Being able to compute the sides of a triangle (and hence, being able to compute square roots) is extremely important, for instance, in [[astronomy]], [[carpentry]] and construction.<ref>The New Zealand Qualification authority specifically mentions this skill in document 13004 version 2, dated 17 October 2003 titled [http://www.nzqa.govt.nz/nqfdocs/units/pdf/13004.pdf CARPENTRY THEORY: Demonstrate knowledge of setting out a building]</ref>
| |
| | |
| Numerical analysis continues this long tradition of practical mathematical calculations. Much like the Babylonian approximation of <math>\sqrt{2}</math>, modern numerical analysis does not seek exact answers, because exact answers are often impossible to obtain in practice. Instead, much of numerical analysis is concerned with obtaining approximate solutions while maintaining reasonable bounds on errors.
| |
| | |
| Numerical analysis naturally finds applications in all fields of engineering and the physical sciences, but in the 21st century, the life sciences and even the arts have adopted elements of scientific computations. [[Ordinary differential equation]]s appear in [[celestial mechanics]] (planets, stars and galaxies); [[numerical linear algebra]] is important for data analysis; [[stochastic differential equation]]s and [[Markov chain]]s are essential in simulating living cells for medicine and biology.
| |
| | |
| Before the advent of modern computers numerical methods often depended on hand [[interpolation]] in large printed tables. Since the mid 20th century, computers calculate the required functions instead. These same interpolation formulas nevertheless continue to be used as part of the software [[algorithms]] for solving [[differential equations]].
| |
| | |
| ==General introduction==
| |
| The overall goal of the field of numerical analysis is the design and analysis of techniques to give approximate but accurate solutions to hard problems, the variety of which is suggested by the following:
| |
| | |
| * Advanced numerical methods are essential in making [[numerical weather prediction]] feasible.
| |
| * Computing the trajectory of a spacecraft requires the accurate numerical solution of a system of [[ordinary differential equation]]s.
| |
| * Car companies can improve the crash safety of their vehicles by using computer simulations of car crashes. Such simulations essentially consist of solving [[partial differential equation]]s numerically.
| |
| * [[Hedge fund]]s (private investment funds) use tools from all fields of numerical analysis to attempt to calculate the value of stocks and derivatives more precisely than other market participants.
| |
| * Airlines use sophisticated optimization algorithms to decide ticket prices, airplane and crew assignments and fuel needs. Historically, such algorithms were developed within the overlapping field of [[operations research]].
| |
| * Insurance companies use numerical programs for [[Actuary|actuarial]] analysis.
| |
| | |
| The rest of this section outlines several important themes of numerical analysis.
| |
| | |
| ===History===
| |
| | |
| The field of numerical analysis predates the invention of modern computers by many centuries. [[Linear interpolation]] was already in use more than 2000 years ago. 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 polynomial|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 1000-plus 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.
| |
| | |
| ===Direct and iterative methods===
| |
| | |
| {| class="wikitable" style="float: right; width: 250px; margin-left: 1em;"
| |
| |-
| |
| |
| |
| '''Direct vs iterative methods'''
| |
| | |
| Consider the problem of solving
| |
| | |
| :3''x''<sup>3</sup> + 4 = 28
| |
| | |
| for the unknown quantity ''x''.
| |
| | |
| {| style="margin:auto;"
| |
| |+ Direct method
| |
| |-
| |
| | || 3''x''<sup>3</sup> + 4 = 28.
| |
| |-
| |
| | ''Subtract 4'' || 3''x''<sup>3</sup> = 24.
| |
| |-
| |
| | ''Divide by 3'' || ''x''<sup>3</sup> = 8.
| |
| |-
| |
| | ''Take cube roots'' || ''x'' = 2.
| |
| |}
| |
| | |
| For the iterative method, apply the [[bisection method]] to ''f''(''x'') = 3''x''<sup>3</sup> − 24. The initial values are ''a'' = 0, ''b'' = 3, ''f''(''a'') = −24, ''f''(''b'') = 57.
| |
| | |
| {| style="margin:auto;"
| |
| |+ Iterative method
| |
| |-
| |
| ! ''a'' !! ''b'' !! mid !! ''f''(mid)
| |
| |-
| |
| | 0 || 3 || 1.5 || −13.875
| |
| |-
| |
| | 1.5 || 3 || 2.25 || 10.17...
| |
| |-
| |
| | 1.5 || 2.25 || 1.875 || −4.22...
| |
| |-
| |
| | 1.875 || 2.25 || 2.0625 || 2.32...
| |
| |}
| |
| | |
| We conclude from this table that the solution is between 1.875 and 2.0625. The algorithm might return any number in that range with an error less than 0.2.
| |
| | |
| ==== Discretization and numerical integration ====
| |
| | |
| [[Image:Schumacher (Ferrari) in practice at USGP 2005.jpg|right|125px]]
| |
| In a two hour race, we have measured the speed of the car at three instants and recorded them in the following table.
| |
| | |
| {| style="margin:auto;"
| |
| ! Time
| |
| | 0:20 || 1:00 || 1:40
| |
| |-
| |
| ! km/h
| |
| | 140 || 150 || 180
| |
| |}
| |
| | |
| A '''discretization''' would be to say that the speed of the car was constant from 0:00 to 0:40, then from 0:40 to 1:20 and finally from 1:20 to 2:00. For instance, the total distance traveled in the first 40 minutes is approximately (2/3h × 140 km/h) = 93.3 km. This would allow us to estimate the total distance traveled as 93.3 km + 100 km + 120 km = 313.3 km, which is an example of '''numerical integration''' (see below) using a [[Riemann sum]], because displacement is the [[integral]] of velocity.
| |
| | |
| '''Ill posed problem''': Take the function ''f''(''x'') = 1/(''x'' − 1). Note that ''f''(1.1) = 10 and ''f''(1.001) = 1000: a change in ''x'' of less than 0.1 turns into a change in ''f''(''x'') of nearly 1000. Evaluating ''f''(''x'') near ''x'' = 1 is an ill-conditioned problem.
| |
| | |
| '''Well-posed problem''': By contrast, the function <math>f(x)=\sqrt{x}</math> is continuous and so evaluating it is well-posed, at least for ''x'' being not close to zero.
| |
| |}
| |
| | |
| Direct methods compute the solution to a problem in a finite number of steps. These methods would give the precise answer if they were performed in [[Computer numbering formats|infinite precision arithmetic]]. Examples include [[Gaussian elimination]], the [[QR algorithm|QR]] factorization method for solving [[system of linear equations|systems
| |
| of linear equations]], and the [[simplex method]] of [[linear programming]]. In practice, [[Floating point|finite precision]] is used and the result is an approximation of the true solution (assuming [[Numerically stable|stability]]).
| |
| | |
| In contrast to direct methods, [[iterative method]]s are not expected to terminate in a finite number of steps. Starting from an initial guess, iterative methods form successive approximations that [[Limit of a sequence|converge]] to the exact solution only in the limit. A convergence test, often involving [[Residual (numerical analysis)|the residual]], is specified in order to decide when a sufficiently accurate solution has (hopefully) been found. Even using infinite precision arithmetic these methods would not reach the solution within a finite number of steps (in general). Examples include [[Newton's method]], the [[bisection method]], and [[Jacobi iteration]]. In computational matrix algebra, iterative methods are generally needed for large problems.
| |
| | |
| Iterative methods are more common than direct methods in numerical analysis. Some methods are direct in principle but are usually used as though they were not, e.g. [[GMRES]] and the [[conjugate gradient method]]. For these methods the number of steps needed to obtain the exact solution is so large that an approximation is accepted in the same manner as for an iterative method.
| |
| | |
| ===Discretization===
| |
| | |
| Furthermore, continuous problems must sometimes be replaced by a discrete problem whose solution is known to approximate that of the continuous problem; this process is called ''[[discretization]]''. For example, the solution of a [[differential equation]] is a [[function (mathematics)|function]]. This function must be represented by a finite amount of data, for instance by its value at a finite number of points at its domain, even though this domain is a [[Continuum (set theory)|continuum]].
| |
| | |
| ==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.
| |
| | |
| ===Round-off===
| |
| | |
| [[Round-off error]]s arise because it is impossible to represent all [[real number]]s exactly on a machine with finite memory (which is what all practical [[digital computer]]s are).
| |
| | |
| ===Truncation and discretization error===
| |
| | |
| [[Truncation]] errors are committed when an iterative method is terminated or a mathematical procedure is approximated, 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. For instance, in the iteration in the sidebar to compute the solution of <math>''3x^3+4=28''</math>, after 10 or so iterations, we conclude that the root is roughly 1.99 (for example). We therefore have a truncation error of 0.01.
| |
| | |
| Once an error is generated, it will generally propagate through the calculation. For instance, we have already noted that the operation + on a calculator (or a computer) is inexact. It follows that a calculation of the type a+b+c+d+e is even more inexact.
| |
| | |
| What does it mean when we say that the truncation error is created when we approximate a mathematical procedure? We know that to integrate a function exactly requires one to find the sum of infinite trapezoids. But numerically one can find the sum of only finite trapezoids, and hence the approximation of the mathematical procedure. Similarly, to differentiate a function, the differential element approaches to zero but numerically we can only choose a finite value of the differential element.
| |
| | |
| ===Numerical stability and well-posed problems===
| |
| | |
| [[Numerical stability]] is an important notion in numerical analysis. An algorithm is called ''numerically stable'' if an error, whatever its cause, does not grow to be much larger during the calculation. This happens if the problem is ''[[condition number|well-conditioned]]'', meaning that the solution changes by only a small amount if the problem data are changed by a small amount. To the contrary, if a problem is ''ill-conditioned'', then any small error in the data will grow to be a large error.
| |
| | |
| Both the original problem and the algorithm used to solve that problem can be ''well-conditioned'' and/or ''ill-conditioned'', and any combination is possible.
| |
| | |
| So an algorithm that solves a well-conditioned problem may be either numerically stable or numerically unstable. An art of numerical analysis is to find a stable algorithm for solving a well-posed mathematical problem. For instance, computing the square root of 2 (which is roughly 1.41421) is a well-posed problem. Many algorithms solve this problem by starting with an initial approximation ''x''<sub>1</sub> to <math>\sqrt{2}</math>, for instance ''x''<sub>1</sub>=1.4, and then computing improved guesses ''x''<sub>2</sub>, ''x''<sub>3</sub>, etc.. One such method is the famous [[Babylonian method]], which is given by ''x''<sub>''k''+1</sub> = ''x<sub>k</sub>''/2 + 1/''x<sub>k</sub>''. Another iteration, which we will call Method X, is given by ''x''<sub>''k'' + 1</sub> = (''x''<sub>''k''</sub><sup>2</sup>−2)<sup>2</sup> + ''x''<sub>''k''</sub>.<ref>This is a [[fixed point iteration]] for the equation <math>x=(x^2-2)^2+x=f(x)</math>, whose solutions include <math>\sqrt{2}</math>. The iterates always move to the right since <math>f(x)\geq x</math>. Hence <math>x_1=1.4<\sqrt{2}</math> converges and <math>x_1=1.42>\sqrt{2}</math> diverges.</ref> We have calculated a few iterations of each scheme in table form below, with initial guesses ''x''<sub>1</sub> = 1.4 and ''x''<sub>1</sub> = 1.42.
| |
| | |
| {| class="wikitable"
| |
| |-
| |
| ! Babylonian
| |
| ! Babylonian
| |
| ! Method X
| |
| ! Method X
| |
| |-
| |
| | ''x''<sub>1</sub> = 1.4
| |
| | ''x''<sub>1</sub> = 1.42
| |
| | ''x''<sub>1</sub> = 1.4
| |
| | ''x''<sub>1</sub> = 1.42
| |
| |-
| |
| | ''x''<sub>2</sub> = 1.4142857...
| |
| | ''x''<sub>2</sub> = 1.41422535...
| |
| | ''x''<sub>2</sub> = 1.4016
| |
| | ''x''<sub>2</sub> = 1.42026896
| |
| |-
| |
| | ''x''<sub>3</sub> = 1.414213564...
| |
| | ''x''<sub>3</sub> = 1.41421356242...
| |
| | ''x''<sub>3</sub> = 1.4028614...
| |
| | ''x''<sub>3</sub> = 1.42056...
| |
| |-
| |
| |
| |
| |
| |
| | ...
| |
| | ...
| |
| |-
| |
| |
| |
| |
| |
| | ''x''<sub>1000000</sub> = 1.41421...
| |
| | ''x''<sub>28</sub> = 7280.2284...
| |
| |}
| |
| | |
| Observe that the Babylonian method converges fast regardless of the initial guess, whereas Method X converges extremely slowly with initial guess 1.4 and diverges for initial guess 1.42. Hence, the Babylonian method is numerically stable, while Method X is numerically unstable.
| |
| :'''Numerical stability''' is affected by the number of the significant digits the machine keeps on, if we use a machine that keeps on the first four floating-point digits, a good example on loss of significance is given by these two equivalent functions
| |
| :<math>
| |
| f(x)=x\left(\sqrt{x+1}-\sqrt{x}\right)
| |
| \text{ and } g(x)=\frac{x}{\sqrt{x+1}+\sqrt{x}}.
| |
| </math>
| |
| :If we compare the results of
| |
| :: <math> f(500)=500(\sqrt{501}-\sqrt{500})=500(22.3830-22.3607)=500(0.0223)=11.1500</math>
| |
| :and
| |
| :<math>
| |
| \begin{alignat}{3}g(500)&=\frac{500}{\sqrt{501}+\sqrt{500}}\\
| |
| &=\frac{500}{22.3830+22.3607}\\
| |
| &=\frac{500}{44.7437}=11.1748
| |
| \end{alignat}
| |
| </math>
| |
| : by looking to the two above results, we realize that '''[[loss of significance]]''' which is also called '''Subtractive Cancelation''' has a huge effect on the results, even though both functions are equivalent; to show that they are equivalent simply we need to start by f(x) and end with g(x), and so
| |
| :: <math> \begin{alignat}{4}
| |
| f(x)&=x(\sqrt{x+1}-\sqrt{x})\\
| |
| & =x(\sqrt{x+1}-\sqrt{x})\frac{(\sqrt{x+1}+\sqrt{x})}{(\sqrt{x+1}+\sqrt{x})}\\
| |
| &=x\frac{((\sqrt{x+1})^2-(\sqrt{x})^2)}{(\sqrt{x+1}+\sqrt{x})}
| |
| &=\frac {x}{(\sqrt{x+1}+\sqrt{x})}
| |
| \end{alignat}</math>
| |
| :The true value for the result is 11.174755..., which is exactly ''g''(500) = 11.1748 after rounding the result to 4 decimal digits.
| |
| :Now imagine that lots of terms like these functions are used in the program; the error will increase as one proceeds in the program, unless one uses the suitable formula of the two functions each time one evaluates either ''f''(''x''), or ''g''(''x''); the choice is dependent on the parity of ''x''.
| |
| *The example is taken from Mathew; Numerical methods using matlab, 3rd ed.
| |
| | |
| ==Areas of study==
| |
| | |
| The field of numerical analysis includes many sub-disciplines. Some of the major ones are:
| |
| | |
| ===Computing values of functions===
| |
| | |
| {| class="wikitable" style="float: right; width: 250px; clear: right; margin-left: 1em;"
| |
| |
| |
| '''Interpolation''': We have observed the temperature to vary from 20 degrees Celsius at 1:00 to 14 degrees at 3:00. A linear interpolation of this data would conclude that it was 17 degrees at 2:00 and 18.5 degrees at 1:30pm.
| |
| | |
| '''Extrapolation''': If the [[gross domestic product]] of a country has been growing an average of 5% per year and was 100 billion dollars last year, we might extrapolate that it will be 105 billion dollars this year.
| |
| | |
| [[Image:Linear-regression.svg|right|100px|A line through 20 points]]
| |
| | |
| '''Regression''': In linear regression, given ''n'' points, we compute a line that passes as close as possible to those ''n'' points.
| |
| | |
| [[Image:LemonadeJuly2006.JPG|right|100px|How much for a glass of lemonade?]]
| |
| | |
| '''Optimization''': Say you sell lemonade at a [[lemonade stand]], and notice that at $1, you can sell 197 glasses of lemonade per day, and that for each increase of $0.01, you will sell one glass of lemonade less per day. If you could charge $1.485, you would maximize your profit, but due to the constraint of having to charge a whole cent amount, charging $1.49 per glass will yield the maximum income of $220.52 per day.
| |
| | |
| [[Image:Wind-particle.png|right|Wind direction in blue, true trajectory in black, Euler method in red.]]
| |
| | |
| '''Differential equation''': If you set up 100 fans to blow air from one end of the room to the other and then you drop a feather into the wind, what happens? The feather will follow the air currents, which may be very complex. One approximation is to measure the speed at which the air is blowing near the feather every second, and advance the simulated feather as if it were moving in a straight line at that same speed for one second, before measuring the wind speed again. This is called the [[Euler method]] for solving an ordinary differential equation.
| |
| |}
| |
| | |
| One of the simplest problems is the evaluation of a function at a given point. The most straightforward approach, of just plugging in the number in the formula is sometimes not very efficient. For polynomials, a better approach is using the [[Horner scheme]], since it reduces the necessary number of multiplications and additions. Generally, it is important to estimate and control [[round-off error]]s 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?
| |
| | |
| [[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 analysis|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 squares]]-method 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. For instance, the equation <math>2x+5=3</math> is linear while <math>2x^2+5=3</math> is not.
| |
| | |
| Much effort has been put in the development of methods for solving [[systems of linear equations]]. Standard direct methods, i.e., methods that use some [[matrix decomposition]] are [[Gaussian elimination]], [[LU decomposition]], [[Cholesky decomposition]] for [[symmetric matrix|symmetric]] (or [[hermitian matrix|hermitian]]) and [[positive-definite matrix]], and [[QR decomposition]] for non-square matrices. [[Iterative method]]s such as the [[Jacobi method]], [[Gauss–Seidel method]], [[successive over-relaxation]] and [[conjugate gradient method]] are usually preferred for large systems. General iterative methods can be developed using a [[matrix splitting]].
| |
| | |
| [[Root-finding algorithm]]s 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 [[derivative|differentiable]] and the derivative is known, then [[Newton's method]] is a popular choice. [[Linearization]] is another technique for solving nonlinear equations.
| |
| | |
| ===Solving eigenvalue or singular value problems===
| |
| Several important problems can be phrased in terms of [[eigenvalue decomposition]]s or [[singular value decomposition]]s. For instance, the [[image compression|spectral image compression]] algorithm<ref>[http://online.redwoods.cc.ca.us/instruct/darnold/maw/single.htm The Singular Value Decomposition and Its Applications in Image Compression]</ref> is based on the singular value decomposition. The corresponding tool in statistics is called [[principal component analysis]].
| |
| | |
| ===Optimization===
| |
| {{Main|Mathematical optimization}}
| |
| | |
| Optimization problems ask for the point at which a given function is maximized (or minimized). Often, the point also has to satisfy some [[Constraint (mathematics)|constraint]]s.
| |
| | |
| 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 unconstrained optimization problems.
| |
| | |
| ===Evaluating integrals===
| |
| {{Main|Numerical integration}}
| |
| | |
| Numerical integration, in some instances also known as numerical [[quadrature (mathematics)|quadrature]], asks for the value of a definite [[integral]]. Popular methods use one of the [[Newton–Cotes formulas]] (like the midpoint rule or [[Simpson's rule]]) or [[Gaussian quadrature]]. These methods rely on a "divide and conquer" strategy, whereby an integral on a relatively large set is broken down into integrals on smaller sets. In higher dimensions, where these methods become prohibitively expensive in terms of computational effort, one may use [[Monte Carlo method|Monte Carlo]] or [[quasi-Monte Carlo method]]s (see [[Monte Carlo integration]]), or, in modestly large dimensions, the method of [[sparse grid]]s.
| |
| | |
| ===Differential equations===
| |
| {{main|Numerical ordinary differential equations|Numerical partial differential equations}}
| |
| | |
| Numerical analysis is also concerned with computing (in an approximate way) the solution of [[differential equation]]s, both ordinary differential equations and [[partial differential equation]]s.
| |
| | |
| Partial differential equations are solved by first discretizing the equation, bringing it into a finite-dimensional 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.
| |
| | |
| ==Software==
| |
| {{main|List of numerical analysis software|Comparison of numerical analysis software}}
| |
| | |
| Since the late twentieth century, most algorithms are implemented in a variety of programming languages. The [[Netlib]] repository contains various collections of software routines for numerical problems, mostly in [[Fortran]] and [[C (programming language)|C]]. Commercial products implementing many different numerical algorithms include the [[IMSL Numerical Libraries|IMSL]] and [[Numerical Algorithms Group|NAG]] libraries; a free alternative is the [[GNU Scientific Library]].
| |
| | |
| There are several popular numerical computing applications such as [[MATLAB]], [[S-PLUS]], [[LabVIEW]], and [[IDL (programming language)|IDL]] as well as free and open source alternatives such as [[FreeMat]], [[Scilab]], [[GNU Octave]] (similar to Matlab), [[IT++]] (a C++ library), [[R (programming language)|R]] (similar to S-PLUS) and certain variants of [[Python (programming language)|Python]]. Performance varies widely: while vector and matrix operations are usually fast, scalar loops may vary in speed by more than an order of magnitude.<ref>[http://www.sciviews.org/benchmark/ Speed comparison of various number crunching packages]</ref><ref>[http://www.scientificweb.com/ncrunch/ncrunch5.pdf Comparison of mathematical programs for data analysis] Stefan Steinhaus, ScientificWeb.com</ref>
| |
| | |
| Many [[computer algebra system]]s such as [[Mathematica]] also benefit from the availability of [[arbitrary precision arithmetic]] which can provide more accurate results.
| |
| | |
| Also, any [[spreadsheet]] software can be used to solve simple problems relating to numerical analysis.
| |
| | |
| ==See also==
| |
| *[[Scientific computing]]
| |
| *[[List of numerical analysis topics]]
| |
| *[[Numerical differentiation]]
| |
| *[[Symbolic-numeric computation]]
| |
| *[[Analysis of algorithms]]
| |
| *[[Numerical Recipes]]
| |
| | |
| ==Notes==
| |
| <references/>
| |
| | |
| ==References==
| |
| <!--
| |
| This template can be used for additional references.
| |
| *{{cite book |last= |first= |authorlink= |coauthors= |title= |year= |publisher= |location= |id= }}
| |
| -->
| |
| *{{cite book|author=[[Gene H. Golub|Golub, Gene H.]] and [[Charles F. Van Loan]]|title=Matrix Computations, Third Edition (Johns Hopkins University Press, ISBN 0-8018-5413)|year=1986}}
| |
| *{{cite book |first=Nicholas J.|last=Higham | authorlink=Nicholas Higham|title=Accuracy and Stability of Numerical Algorithms (Society for Industrial and Applied Mathematics, ISBN 0-89871-355-2)|year=1966}}
| |
| *{{cite book |last=Hildebrand |first=F. B. | authorlink=Francis B. Hildebrand | title=Introduction to Numerical Analysis | edition=2nd edition |year=1974 |publisher=McGraw-Hill |location= |isbn= 0-07-028761-9}}
| |
| *{{cite book |last=Leader |first=Jeffery J. | authorlink=Jeffery J. Leader|title=Numerical Analysis and Scientific Computation |year=2004 |publisher=Addison Wesley |location= |isbn= 0-201-73499-0 }}
| |
| *{{cite book|last= Wilkinson |first =J.H.| authorlink=James H. Wilkinson| title=The Algebraic Eigenvalue Problem (Clarendon Press)|year=1965}}
| |
| *{{cite journal | author=Kahan, W. | authorlink= William Kahan| title= "A survey of error-analysis," in Info. Processing 71 (Proc. IFIP Congress 71 in Ljubljana), vol. 2, pp. 1214–39, North-Holland Publishing, Amsterdam|year=1972}} (examples of the importance of accurate arithmetic).
| |
| * [[Lloyd N. Trefethen| Trefethen, Lloyd N.]] (2006). [http://people.maths.ox.ac.uk/trefethen/NAessay.pdf "Numerical analysis"], 20 pages. In: Timothy Gowers and June Barrow-Green (editors), ''Princeton Companion of Mathematics'', Princeton University Press.
| |
| | |
| ==External links==
| |
| {{Wikibooks}}
| |
| | |
| '''Journals'''
| |
| *[http://www-gdz.sub.uni-goettingen.de/cgi-bin/digbib.cgi?PPN362160546 Numerische Mathematik], volumes 1-66, Springer, 1959-1994 (searchable; pages are images). {{en icon}} {{de icon}}
| |
| *[http://www.springerlink.com/content/0029-599X Numerische Mathematik at SpringerLink], volumes 1-112, Springer, 1959–2009
| |
| *[http://siamdl.aip.org/dbt/dbt.jsp?KEY=SJNAAM SIAM Journal on Numerical Analysis], volumes 1-47, SIAM, 1964–2009
| |
| | |
| '''Software and Code'''
| |
| *[http://people.sc.fsu.edu/~tomek/Fortran/num_meth.html Numerical methods for Fortran programmers]
| |
| *[http://www.apropos-logic.com/nc/ Java Number Cruncher] features free, downloadable code samples that graphically illustrate common numerical algorithms
| |
| *[http://www.ifh.uni-karlsruhe.de/people/fenton/Lectures.html Excel Implementations]
| |
| *[http://www.akiti.ca/Mathfxns.html Several Numerical Mathematical Utilities (in Javascript)]
| |
| | |
| '''Online Texts'''
| |
| *{{springer|title=Numerical analysis|id=p/n120130}}
| |
| *[http://www.nr.com/oldverswitcher.html ''Numerical Recipes''], William H. Press (free, downloadable previous editions)
| |
| *[http://kr.cs.ait.ac.th/~radok/math/mat7/stepsa.htm#Numerical%20Analysis ''First Steps in Numerical Analysis''], R.J.Hosking, S.Joe, D.C.Joyce, and J.C.Turner
| |
| *[http://ece.uwaterloo.ca/~dwharder/NumericalAnalysis/ ''Numerical Analysis for Engineering''], D. W. Harder
| |
| *[http://www.phy.ornl.gov/csep/CSEP/TEXTOC.html ''CSEP'' (Computational Science Education Project)], [[U.S. Department of Energy]]
| |
| | |
| '''Online Course Material'''
| |
| *[http://www.damtp.cam.ac.uk/user/fdl/people/sd103/lectures/nummeth98/index.htm#L_1_Title_Page Numerical Methods], Stuart Dalziel [[University of Cambridge]]
| |
| *[http://www.math.upenn.edu/~wilf/DeturckWilf.pdf Lectures on Numerical Analysis], Dennis Deturck and Herbert S. Wilf [[University of Pennsylvania]]
| |
| *[http://www.ifh.uni-karlsruhe.de/people/fenton/LectureNotes/Numerical-Methods.pdf Numerical methods], John D. Fenton [[University of Karlsruhe]]
| |
| *[http://numericalmethods.eng.usf.edu/ Numerical Methods for Science, Technology, Engineering and Mathematics], Autar Kaw [[University of South Florida]]
| |
| *[http://math.fullerton.edu/mathews/numerical.html Numerical Analysis Project], John H. Mathews [[California State University, Fullerton]]
| |
| *[http://www.math.jct.ac.il/~naiman/nm/ Numerical Methods - Online Course], Aaron Naiman [[Jerusalem College of Technology]]
| |
| *[http://www-teaching.physics.ox.ac.uk/computing/NumericalMethods/NMfP.pdf Numerical Methods for Physicists], Anthony O’Hare [[Oxford University]]
| |
| *[http://kr.cs.ait.ac.th/~radok/math/mat7/stepsa.htm#Numerical%20Analysis Lectures in Numerical Analysis], R. Radok [[Mahidol University]]
| |
| *[http://ocw.mit.edu/courses/mechanical-engineering/2-993j-introduction-to-numerical-analysis-for-engineering-13-002j-spring-2005/ Introduction to Numerical Analysis for Engineering], Henrik Schmidt [[Massachusetts Institute of Technology]]
| |
| | |
| {{Mathematics-footer}}
| |
| {{Physics-footer}}
| |
| {{Computer science}}
| |
| | |
| {{DEFAULTSORT:Numerical Analysis}}
| |
| [[Category:Numerical analysis| Numerical analysis]]
| |
| [[Category:Mathematical physics]]
| |
| [[Category:Computational science]]
| |