计算数学专业概述(英文)
Computational mathematics From Wikipedia, the free encyclopedia
Jump to: navigation, search
Computational mathematics involves mathematical research in areas of science where computing plays a central and essential role, emphasizing algorithms, numerical methods, and symbolic methods. Computation in the [1]research is prominent. Computational mathematics emerged as a distinct part of applied mathematics by the early 1950s. Currently, computational
mathematics can refer to or include:
, computational science, also known as scientific computation or
computational engineering
, solving mathematical problems by computer simulation as opposed to
analytic methods of applied mathematics
, numerical methods used in scientific computation, for example
numerical linear algebra and numerical solution of partial
differential equations [2], stochastic methods, such as Monte Carlo methods and other
representations of uncertainty in scientific computation, for
example stochastic finite elements [3], the mathematics of scientific computation (the theoretical side [4]involving mathematical proofs), in particular numerical analysis,
the theory of numerical methods (but theory of computation and
complexity of algorithms belong to theoretical computer science)
, symbolic computation and computer algebra systems
, computer-assisted research in various areas of mathematics, such
as logic (automated theorem proving), discrete mathematics (search
for mathematical structures such as groups), number theory
(primality testing and factorization), cryptography, and
computational algebraic topology
, computational linguistics, the use of mathematical and computer
techniques in natural languages
, Computational geometry
, Computational topology
, Computational number theory
, Algorithmic information theory
, Algorithmic game theory
Numerical analysis
Numerical analysis is the study of algorithms that use numerical
approximation (as opposed to general symbolic manipulations) for the
problems of mathematical analysis (as distinguished from discrete
mathematics).
One of the earliest mathematical writings is the Babylonian tablet BC 7289, which gives a sexagesimal numerical approximation of , 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, [2]for instance, in carpentry and construction.
Numerical analysis continues this long tradition of practical mathematical calculations. Much like the Babylonian approximation of ,
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 equations appear in the movement of
heavenly bodies (planets, stars and galaxies); optimization occurs in
portfolio management; numerical linear algebra is important for data
analysis; stochastic differential equations and Markov chains 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. The interpolation algorithms nevertheless may be used as part of the software for solving differential equations.
Contents
[hide]
, 1 General introduction
o 1.1 History
o 1.2 Direct and iterative methods
, 1.2.1 Discretization and numerical integration
o 1.3 Discretization
, 2 The generation and propagation of errors
o 2.1 Round-off
o 2.2 Truncation and discretization error
o 2.3 Numerical stability and well-posed problems
, 3 Areas of study
o 3.1 Computing values of functions
o 3.2 Interpolation, extrapolation, and regression
o 3.3 Solving equations and systems of equations
o 3.4 Solving eigenvalue or singular value problems
o 3.5 Optimization
o 3.6 Evaluating integrals
o 3.7 Differential equations
, 4 Software
, 5 See also
, 6 Notes
, 7 References
, 8 External links
[edit] 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 equations.
, 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 equations numerically.
, Hedge funds (private investment funds) use tools from all fields of numerical analysis 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. This field is also called operations research.
, Insurance companies use numerical programs for actuarial analysis.
The rest of this section outlines several important themes of numerical analysis.
[edit] 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 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
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 infinite precision arithmetic. Examples include Gaussian elimination,
the QR factorization method for solving systems of linear equations, and
the simplex method of linear programming. In practice, finite precision
is used and the result is an approximation of the true solution (assuming stability).
In contrast to direct methods, iterative methods are not expected to
terminate in a number of steps. Starting from an initial guess, iterative methods form successive approximations that converge to the exact
solution only in the limit. A convergence test 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.
[edit] 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. 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.
[edit] 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.
[edit] Round-off
Round-off errors arise because it is impossible to represent all real
numbers exactly on a machine with finite memory (which is what all practical digital computers are).
[edit] 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, 3 + 4 = 28, in the iteration in the sidebar to compute the solution of 3x
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. [edit] 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 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 to , for instance x=1.4, 11
and then computing improved guesses x, x, etc.. One such method is the 23
famous Babylonian method, which is given by x = x/2 + 1/x. Another +1kkk22[3]iteration, which we will call Method X, is given by x = (x?2) + x. + 1kkk
We have calculated a few iterations of each scheme in table form below, with initial guesses x = 1.4 and x = 1.42. 11
Babylonian Babylonian Method X Method X
x = 1.4 x = 1.42 x = 1.4 x = 1.42 1111
x = 1.4142857... x = 1.41422535... x = 1.4016 x = 1.42026896 2222
x = 1.414213564... x = 1.41421356242... x = 1.4028614... x = 1.42056... 3333
... ...
x = 1.41421... x = 7280.2284... 100000028
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
If we compare the results of
and
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
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. [edit] Areas of study
The field of numerical analysis is divided into different disciplines according to the problem that is to be solved.
[edit] Computing values of functions
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.
Regression: In linear
regression, given n points, we
compute a line that passes as close as possible to those n
points.
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 less lemonade 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.
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 errors arising from the use of floating point
arithmetic.
[edit] 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 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. [edit] 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
+ 5 = 3 is linear equation is linear or not. For instance, the equation 2x2while 2x + 5 = 3 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 (or hermitian) and
positive-definite matrix, and QR decomposition for non-square matrices.
Iterative methods such as the Jacobi method, Gauss–Seidel method,
successive over-relaxation and conjugate gradient method are usually
preferred for large systems.
Root-finding 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.
[edit] Solving eigenvalue or singular value problems Several important problems can be phrased in terms of eigenvalue
decompositions or singular value decompositions. For instance, the [4]spectral image compression algorithm is based on the singular value
decomposition. The corresponding tool in statistics is called principal
component analysis.
[edit] Optimization
Main article: 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 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 unconstrained optimization problems. [edit] Evaluating integrals
Main article: Numerical integration
Numerical integration, in some instances also known as numerical 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 or quasi-Monte Carlo methods (see Monte Carlo integration),
or, in modestly large dimensions, the method of sparse grids.
[edit] Differential equations
Main articles: Numerical ordinary differential equations and 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 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. [edit] Software
Main articles: List of numerical analysis software and 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. Commercial products implementing many different numerical
algorithms include the IMSL and 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 as well as free and open source alternatives such
as FreeMat, Scilab, GNU Octave (similar to Matlab), IT++ (a C++ library), R (similar to S-PLUS) and certain variants of Python. Performance varies widely: while vector and matrix operations are usually fast, scalar loops [5][6]may vary in speed by more than an order of magnitude.
Many computer algebra systems such as Mathematica also benefit from the availability of arbitrary precision arithmetic which can provide more accurate results.
spreadsheet software can be used to solve simple problems Also, any
relating to numerical analysis.
Direct vs iterative methods
Consider the problem of solving
33x + 4 = 28
for the unknown quantity x.
Direct method
33x + 4 = 28.
3Subtract 4 3x = 24.
3Divide by 3 x = 8.
Take cube roots x = 2.
3For the iterative method, apply the bisection method to f(x) = 3x ? 24.
The initial values are a = 0, b = 3, f(a) = ?24, f(b) = 57.
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.
[edit] Discretization and numerical integration
In a two hour race, we have measured the speed of the car at three instants and recorded them in the following table.
0:20 1:00 1:40 Time
140 150 180 km/h
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 is continuous
and so evaluating it is well-posed, at least for being not close to zero. x
Computational science
Computational science (or scientific computing) is the field of study concerned with constructing mathematical models and quantitative
analysis techniques and using computers to analyze and solve scientific [citation needed]problems. In practical use, it is typically the application of computer simulation and other forms of computation to problems in various
scientific disciplines.
The field is distinct from computer science (the study of computation,
computers and information processing). It is also different from theory
and experiment which are the traditional forms of science and engineering. The scientific computing approach is to gain understanding, mainly through the analysis of mathematical models implemented on computers.
Scientists and engineers develop computer programs, application software,
that model systems being studied and run these programs with various sets of input parameters. Typically, these models require massive amounts of calculations (usually floating-point) and are often executed on
supercomputers or distributed computing platforms.
Numerical analysis is an important underpinning for techniques used in computational science.
Contents
[hide]
, 1 Applications of computational science
o 1.1 Numerical simulations
o 1.2 Model fitting and data analysis
o 1.3 Computational optimization
, 2 Methods and algorithms
, 3 Education
, 4 Related fields
, 5 See also
, 6 References
, 7 External links
[edit] Applications of computational science Problem domains for computational science/scientific computing include: [edit] Numerical simulations
Numerical simulations have different objectives depending on the nature of the task being simulated:
, Reconstruct and understand known events (e.g., earthquake, tsunamis and other natural
disasters).
, Predict future or unobserved situations (e.g., weather, sub-atomic particle behaviour). [edit] Model fitting and data analysis
, Appropriately tune models or solve equations to reflect observations, subject to model
constraints (e.g. oil exploration geophysics, computational linguistics).
, Use graph theory to model networks, especially those connecting individuals,
organizations, and websites.
[edit] Computational optimization
Main article: Mathematical optimization
, Optimize known scenarios (e.g., technical and manufacturing processes, front-end
engineering).
[edit] Methods and algorithms
Algorithms and mathematical methods used in computational science are varied. Commonly applied methods include:
, Numerical analysis
, Application of Taylor series as convergent and asymptotic series
, Computing derivatives by Automatic differentiation (AD)
, Computing derivatives by finite differences
, Graph theoretic suites
, High order difference approximations via Taylor series and Richardson extrapolation
, Methods of integration on a uniform mesh: rectangle rule (also called midpoint rule),
trapezoid rule, Simpson's rule
, Runge Kutta method for solving ordinary differential equations
, Monte Carlo methods
, Molecular dynamics
, Numerical linear algebra
, Computing the LU factors by Gaussian elimination
, Cholesky factorizations
, Discrete Fourier transform and applications.
, Newton's method
, Time stepping methods for dynamical systems
Programming languages commonly used for the more mathematical aspects of scientific computing applications include R (programming language), [1]MATLAB, Mathematica, SciLab, GNU Octave, COMSOL Multiphysics, Python [citation needed](programming language) with SciPy, and PDL. The more
computationally intensive aspects of scientific computing will often utilize some variation of C or Fortran and optimized algebra libraries
such as BLAS or LAPACK.
Computational science application programs often model real-world changing conditions, such as weather, air flow around a plane, automobile body distortions in a crash, the motion of stars in a galaxy, an explosive device, etc. Such programs might create a 'logical mesh' in computer memory where each item corresponds to an area in space and contains information about that space relevant to the model. For example in weather models, each item might be a square kilometer; with land elevation, current wind direction, humidity, temperature, pressure, etc. The program would calculate the likely next state based on the current state, in simulated time steps, solving equations that describe how the system operates; and then repeat the process to calculate the next state. The term computational scientist is used to describe someone skilled in
scientific computing. This person is usually a scientist, an engineer or an applied mathematician who applies high-performance computers in
of-the-art in their respective different ways to advance the state-
applied disciplines in physics, chemistry or engineering. Scientific computing has increasingly also impacted on other areas including economics, biology and medicine.
Computational science is now commonly considered a third mode of science, [2]complementing and adding to experimentation/observation and theory. The [3]essence of computational science is numerical algorithm and/or [4]computational mathematics. In fact, substantial effort in computational sciences has been devoted to the development of algorithms, the efficient implementation in programming languages, and validation of computational results. A collection of problems and solutions in computational science [5]can be found in Steeb, Hardy, Hardy and Stoop, 2004.
[edit] Education
Scientific computation is most often studied through an applied
mathematics or computer science program, or within a standard mathematics,
sciences, or engineering program. At some institutions a specialization in scientific computation can be earned as a "minor" within another program (which may be at varying levels). However, there are increasingly
many bachelor's and master's programs in computational science. Some schools also offer the Ph.D. in computational science, computational
engineering, computational science and engineering, or scientific computation.
There are also programs in areas such as computational physics,
computational chemistry, etc.
List of numerical analysis software Listed here are end-user computer applications intended for use with numerical or data analysis:
Contents
[hide]
, 1 MATLAB and its clones
, 2 General-purpose computer algebra systems
, 3 Interface-oriented
, 4 Language-oriented
, 5 Historically significant
, 6 See also
, 7 References
, 8 External links
[edit] MATLAB and its clones
, MATLAB is a widely used program for performing numerical calculations. It comes with
its own programming language, in which numerical algorithms can be implemented. The following programs use a similar syntax:
, GNU Octave GNU Octave is a high-level language, primarily intended for numerical
computations. It provides a convenient command line interface for solving linear and
nonlinear problems numerically, and for performing other numerical experiments using a
language that is mostly compatible with MATLAB. It has an active user community.
, FlexPro is a program for data analysis and presentation of measurement data. It provides
a rich Excel-like user interface and its built-in vector programming language FPScript has
a syntax similar to MATLAB.
, Scilab is similar to MATLAB and Octave. (free software, GPL-compatible CeCILL
license )
, FreeMat, an open-source MATLAB-like environment with a GPL license.
, Rlab is another free software program which bears a strong resemblance to MATLAB.
Rlab development ceased for several years but it was revived as RlabPlus.
o SimplexNumerica is a program for data analysis and presentation of
measurement data. It provides a state-of-the art user interface and a 2D/3D
rendering engine for charts and mathematical routines for Approximation,
Interpolation, FFT, Regression Analysis, etc.
, Sysquake is a computing environment with interactive graphics for mathematics, physics
and engineering. Like other applications from Calerga, it is based on a
MATLAB-compatible language.
, LabVIEW offers both textual and graphical programming approaches to numerical
analysis. Its text-based programming language MathScript utilizes .m file script syntax
providing some compatibility with MATLAB and its clones.
, COMSOL Script
, O-Matrix
, jLab, a research platform for building an open source MATLAB-like environment in pure
Java and Groovy. Currently supports interpreted j-Scripts (MATLAB-like) and compiled
GroovySci (extension to Groovy) scripts that provides direct interfacing to Java code and
scripting access to many popular Java scientific libraries (e.g. Weka and JSci[1]) and
application Wizards. (Project Page: [2])
Add-ons:
, Jacket, A GPU Toolbox for MATLAB, enabling MATLAB computations to be offloaded
to the GPU for acceleration and data visualization purposes.
[edit] General-purpose computer algebra systems
Main article: List of computer algebra systems
, Macsyma, a general-purpose computer algebra system, which has a free GPL-licensed
version called Maxima.
, Madeline, a free GPL-licensed clone of Mathematica.
, Maple, a general-purpose commercial mathematics software package.
, Mathcad offers a WYSIWYG interface and the ability to generate publication-quality
mathematical equations.
, Mathematica offers numerical evaluation, optimization and visualization of a very wide
range of numerical functions. It also includes a programming language and computer
algebra capabilities.
, PARI/GP is a widely used computer algebra system designed for fast computations in
number theory (factorizations, algebraic number theory, elliptic curves...), but also
contains a large number of other useful functions to compute with mathematical entities
such as matrices, polynomials, power series, algebraic numbers etc., and a lot of
transcendental functions. PARI is also available as a C library to allow for faster
computations.
, Sage is an open-source math software, with a unified Python interface which is available
as a text interface or a graphical web-based one. Includes interfaces for open-source and
proprietary general purpose CAS, and other numerical analysis programs, like PARI/GP,
GAP, gnuplot, Magma, and Maple.
, Trilinos is a collection of open source, object-oriented libraries for use in scientific and
engineering applications. Trilinos is based on scalable, parallel linear algebra algorithms.
[edit] Interface-oriented
, Baudline is a time-frequency browser for numerical signals analysis and scientific
visualization.
, Dataplot is provided by NIST.
, DADiSP is a commercial program focused on DSP that combines the numerical
capability of MATLAB with a spreadsheet like interface.
, EJS is an open source software tool, written in Java, for generating simulations. , Euler Mathematical Toolbox is a powerful numerical laboratory with a programming
language that can handle real, complex and interval numbers, vectors and matrices. It can
produce 2D/3D plots.
, jHepWork is a free data-analysis framework written in Java which uses Jython for
scripting (although other Java scripting can also be used)
, FEniCS Project is a collection of project for automated solutions to PDEs.
, Fityk is a curve fitting and data analysis program. Primarily used for peak fitting and
analyzing peak data.
, FlexPro is a commercial program for interactive and automated analysis and presentation
of mainly measurement data. It supports many binary instrument data formats and has its
own vectorized programming language.
, IGOR Pro, a software package with emphasis on time series, image analysis, and curve
fitting. It comes with its own programming language and can be used interactively. , LabPlot is a data analysis and visualization application built on the KDE Platform. , MCSim a Monte Carlo simulation tool.
, numberGo Publisher is a data analysis tool that lets you pivot and chart data, and save it
as a portable document.
, Origin, a software package that is widely used for making scientific graphs. It comes with
its own C/C++ compiler that conforms quite closely to ANSI standard. , PAW is a free data analysis package developed at CERN.
, PSPP, an application for statistical analysis.
, QtiPlot is a data analysis and scientific visualisation program, similar to Origin. , Speakeasy is an interactive numerical environment also featuring an interpreted
programming language. Born in the mid '60s for matrix manipulation and still in
continuous evolution, it pioneered the most common paradigms of this kind of tools,
featuring dynamic typing of the structured data objects, dynamic allocation and garbage
collection, operators overloading, dynamic linking of compiled or interpreted additional
modules contributed by the community of the users and so on.
, ROOT is a free object oriented multipurpose data analysis package, developed at CERN.
, SALOME is a free software that provides a generic platform for pre- and post-processing
for numerical simulation.
, Shogun, an open source Large Scale Machine Learning toolbox that provides several
SVM implementations (like libSVM, SVMlight) under a common framework and
interfaces to Octave, MATLAB, Python, R
, XLSTAT a Microsoft Excel add-in
, Waffles is a free-software collection of command-line tools designed for scripting
machine learning operations in automated experiments and processes. , Weka is a suite of machine learning software written at the University of Waikato.
[edit] Language-oriented
, acslX is a software application for modeling and evaluating the performance of
continuous systems described by time-dependent, nonlinear differential equations. , ADMB is a software suite for non-linear statistical modeling based on C++ which uses
automatic differentiation.
, AMPL is a mathematical modeling language for describing and solving high complexity
problems for large scale optimization.
, APMonitor: APMonitor is a mathematical modeling language for describing and solving
representations of physical systems in the form of differential and algebraic equations. , jHepWork is scientific package which uses Jython to call numerical and graphical
libraries written in Java
, COMSOL Script for numerical computations and interactive partial differential equation
solving with the finite element method; uses MATLAB-compatible syntax. Optionally
connects to COMSOL Multiphysics.
, ELKI a software framework for development of data mining algorithms in Java.
, GAUSS, a matrix programming language for mathematics and statistics. , GNU Data Language, a free compiler designed as a drop-in replacement for IDL. , IDL, a commercial interpreted language based on FORTRAN with some vectorization.
Widely used in the solar physics, atmospheric sciences and medical communities. The
GNU Data Language is a free alternative.
, KPP generates Fortran 90, FORTRAN 77, C, or Matlab code for the integration of
ordinary differential equations (ODEs) resulting from chemical reaction mechanisms.
, Madagascar, an open-source software package for multidimensional data analysis and
reproducible computational experiments. [3]
, Mathemagix, is an open source (GNU GPL license) general-purpose mathematics
software package.
, NCAR Command Language is an interpreted language designed specifically for scientific
data analysis and visualization.
, O-Matrix - a matrix programming language for mathematics, engineering, science, and
financial analysis.
, OptimJ is a mathematical Java-based modeling language for describing and solving high
complexity problems for large scale optimization.
, Perl Data Language, also known as PDL, an array extension to Perl ver.5, used for data
manipulation, statistics, numerical simulation and visualization.
, R is a widely used system with a focus on data manipulation and statistics which
implements the S language. Many add-on packages are available (free software, GNU
GPL license).
, VisSim is a visual block diagram language for simulation of nonlinear dynamic systems
and model based embedded development. Its fast ODE engine supports real-time
simulation of complex large scale models. The highly efficient fixed point code generator
allows targeting of low cost fixed-point embedded processors.
, Yorick is an interpreted programming language designed for numerics, graph plotting and
simulation.
[edit] Historically significant
, Expensive Desk Calculator written for the TX-0 and PDP-1 in the late 1950s or early
1960s.
, S is an (array-based) programming language with strong numerical support. Comparison of numerical analysis software
The following tables provide a comparison of numerical analysis software.
Contents
[hide]
, 1 Applications
o 1.1 General
o 1.2 Operating system support
o 1.3 Language features
, 2 Libraries
o 2.1 General
o 2.2 Operating system support
, 3 See also
, 4 References
, 5 External links
Applications
General
First Latest Developmepublic stable Cost nt Creator License Notes releaseversion(USD) started
Automatic
differentiati
D. Fournier, on makes it 9.1 / New BSD ADMB Free well suited ADMB 2009 License Project to complex
minimizatio
n problems
Numeric
computation$1995 s for science (commerciaand DSP 6.5 / l) / $129 1984 1986 Proprietary engineering DADiSP Development 2010 (academic) featuring a / Free spreadsheet (student) like
interface.
Also a
computer
algebra
R. 9.4 / system Euler Math 1987 1988 Free GPL Grothmann 2010 through Toolbox
interface
with
Maxima
interactive $115 (1.x graphics, binaries) / scriptable, Free 1.0.1 / specialized M. Wojdyr 2002 (source GPL Fityk 2011 in curve code and fitting and 0.x peak fitting, binaries) 2D only
Codeless
interface to
external C,
C++, and 4.0 / Fortran Samit Basu October Free GPL FreeMat code. 09, 2009 Mostly
compatible
with
MATLAB.
mainly used 9.0 / Aptech in 1984 May Not free Proprietary GAUSS Systems econometric2008 s
interactive
graphics, $550 programmab(commerciale, 2D/3D, 6.03A / l) / $395 WaveMetrics 1986 1988 Proprietary used for IGOR Pro 2008 (academic) science and / $85 engineering, (student) large data
sets.
$500 mathematics
6.4 / (basic) / , interactive AMS 1998 1999 Proprietary jBEAM 2010 $3950 graphics (profession2D/3D,
al) / $10 scriptable, (student) used for
science and
engineering,
very large
data sets,
desktop or
client/server,
open Java
framework
mathematics
, data
analysis,
data mining,
interactive
2D/3D
Free for graphics, S.Chekanov 3.1 / 2005 2005 Free non-commerJava JHepWork (jwork.org) 2011 cial use scriptable,
used for
science and
engineering,
Cross-platfo
rm (written
in Java)
Graphical
and textual $1249 2010 / (.m file National (commercia 1985 August Proprietary script) LabVIEW Instruments l) / $79.95 2010 programmin(student) g
approaches
$1895 Mainly a
14 / (commerciacomputer Maplesoft 1980 1982 Proprietary Maple 2010 l) / $99 algebra (student) system
$1195 Mainly a Parametric 14.0 / (commerciacomputer Technology 1985 1986 February Proprietary Mathcad l) / $99 algebra Corporation 12, 2007 (student) system
8.0 / $2495 mainly Wolfram 1986 1988 Novemb(commerciaProprietary computer Mathematica Research er 2010 l) / $145 algebra
(student) / system
$295
[1(personal)
]
R2010b Numerical $2450 / computationthe late (commerciaMathWorks SeptembProprietary , mainly MATLAB 1970s l) / $99 er 3, used by (student) 2010 engineers.
aimed as a
drop-in
Marc 0.9.1 / replacement GNU Data 2004 Free GPL Schellens 2011 for Language
IDL/PV-WA
VE
mostly
John W. 3.4.0 / compatible 1988 1993 Free GPL GNU Octave Eaton 2011 with
MATLAB
interactive $500 graphics, (academic) programmab/ $700 (Pro le, 2D/3D, 8.0 SR4 ver., OriginLab 1991 Proprietary used for Origin / 2008 academic) / science and $50 (Pro engineering, ver. large data student) sets.
Used for
astrophysics,
solar
physics,
oceanograph
y,
biophysics, Karl 2.4.7 / Artistic Perl Data late 1990s c. 1997 Free and Glazebrook 2010 License Language simulation.
2D plotting
via
PGPLOT,
PLPlot
bindings; 3D
via GL.
Primarily for statistics, but
there are 2.12.2 / R many 1997 1997 February Free GPL R Foundation interfaces to 25, 2011 open-source
numerical software
Programmab
le, includes computer
algebra,
2D+3D
plotting. 4.7 / William Interfaces to 2005 May Free GPL SAGE Stein lots of 2011 open-source
software. Web based
interface HTTP or
HTTPS
Available as a standalone GPL, Artistic John E. 2.2.0 / (slsh) and 1992 Free License (1.x S-Lang Davis 2009 embedded only) interpreter (jed, slrn, ...)
Open Scilab 5.3.2 / source. Consortium / CeCILL 1990 1994 12 May, Free Language Scilab Digiteo license 2011 similar to Was:INRIA MATLAB.
interactive graphics, 2D/3D
render Dipl.-Phys.-I9.0 / engine, used SimplexNumerng. Ralf 1986 Free Proprietary 2011 for science ica Wirtz and
engineering, Excel
im-/export.
$250 /
$2500 (Pro,
commercial4.1 / interactive Calerga 1998 ) / $1000 Proprietary Sysquake 2008 graphics (Pro,
academic) /
free (LE)
Visual
Language
for
simulation
and Model
Based
Design.
Used in
$495-$280business,
0 science and
(commerciaengineering.
l) Performs
Visual 7.0a / free view complex 1989 Proprietary VisSim Solutions 2008 only scalar or
version matrix based
$50-$250/frODE solving
ee v3.0 with
(academic) parametric
optimization
. Has 2D and
3D plotting,
3D
animation,
and state
transition
built in.
Operating system support
The operating systems the software can run on natively (without
emulation).
Mac
Windows OS Linux BSD Unix DOS
X
Yes Yes Yes No No No ADMB
Yes No No No Yes No DADiSP
Yes No Yes No No No Euler Math Toolbox
Yes Yes Yes Yes Yes No FreeMat
Yes Yes Yes No Yes No GAUSS
Yes Yes No No No No IGOR Pro
Yes Yes Yes No No No jBEAM
Yes Yes Yes No Yes No LabVIEW
Yes Yes Yes No Yes No Maple
Yes Yes Yes No Yes No Mathematica
Yes Yes Yes No Yes No MATLAB
No Yes Yes Yes Yes No GNU Data Language
Yes (using Yes Yes Yes Yes Yes GNU Octave HX-Extender)
Yes No No No No No Origin
Yes Yes Yes Yes Yes Yes Perl Data Language
Yes Yes Yes Yes Yes ? R
No Yes Yes No Yes No SAGE
Yes Yes Yes Yes Yes Yes S-Lang
Yes Yes Yes Yes Yes Yes Scilab
Yes No No No No No SimplexNumerica
Yes Yes Yes No No No Sysquake
Yes No No No No No The Unscrambler
Yes Yes Yes No Yes No VisSim
Language features
Colors indicate features available as
basic system capabilities
official or officially supported extensions and libraries
Third-party software components or not supported StandalCentralSymbolione GUI multi-dimenized can call c executaOOP creatiosional extensiocode in can be called computables suppon arrays as n other from other tion creatiort supporprimitive library languageslanguages supportn t data type website support
[3]MATLAB, C, C#, [2]? Yes Yes ? ? ? VisualBasic, Maple Fortran [4]Java and C
Java, .NET,
C++
[7]Excel,
[8]Java, .NELabVIEW
[9]T, C++, Haskell,
[10]FORTRAMathem[5][6]AppleScript, Yes Yes Yes Yes Yes Yes [11]N, atica Racket,
CUDA, Visual
[12]OpenCL Basic,
[13][14]PythonCl
[15]ojure
[16]MATLAB
Through
[21]MEX
files: C,
C++,
FORTRwith AN. Also with [23]extensio.NET, MATLA[19][20]compiled extensioYes Yes Yes Yes [24][25]n library java, Excel B [17]java and n [18] ActiveX
compone
nts.
Mathema
[22]tica
No
(work
in GNU
progresData No No Yes Yes No C, Python Python s but Languag
still e
incompl
ete)
only GUI C++, Yes with Octave FORTRA[32][30]with java, Perl, GNU [26][28][29]GiNaC Yes code Yes Yes N, [33]mkoctfilC++ Octave [30]extensiocan be Perl, e [27][31]n used Tlc
C, C++,
FORTR
[36]AN [39]Excel [34][35]No No Yes No Yes Yes MATLAR [40]Python [37]B
[38Python
]
Libraries
General
First Latest Cost Languagepublic stable (USD)Creator License Notes release version
General
purpose
numerical
analysis C++, C#, Sergey 2.6.0 / library. Uses FreePascal, 2006 Free GPL ALGLIB Bochkanov 06.2010 automatic code VBA generation to
support several
programming
languages.
General
purpose
numerical
analysis
library. Targets GNU GNU 1.14 / C 1996 Free GPL GNU/Linux, Scientific Project 03.2010 can be built on Library
almost any
*nix OS with
Ansi C
compiler.
aims .Net/monH. 1.3.14 / ILNumerics.NC# 2007 Free LGPL o, 2D/3D Kutschbach 08.2008 et plottings (beta)
Rogue C, Java, 1970 many Not Proprietary General IMSL
Wave C#, componenfree purpose Numerical
Software Fortran, ts numerical Libraries
Python analysis
library.
General
numerical calcualtions, statistics and jwork.org Free for interactive (S.Chekano100% Java 2005 2011 Free non-commerciJHepWork 2D/3D v) al use graphics for data and
function
presentation
General The many purpose NAG Numerical Not C, Fortran 1970s componenProprietary numerical Numerical Algorithms free ts analysis Libraries Group Ltd library.
Math and
5.0 / statistical CenterSpace C# 2003 February $995 Proprietary libraries for NMath Software 2011 the .NET
Framework
Adds
numerical programming capabilities to
the Python
programming language. 0.9.0 / Related to Enthought Python 1995 2011-02-2Free BSD SciPy Numpy, and 7 therefore connected to the previous Numeric and Numarray
packages for Python
Operating system support
The operating systems the software can run on natively (without
emulation).
Windows Mac OS X Linux BSD Unix DOS
Yes No Yes No No No ALGLIB
Yes Yes Yes Yes Yes No GNU Scientific Library
Yes Yes Yes Yes Yes No ILNumerics.Net
Yes Yes Yes Yes Yes No JHepWork
Yes No Yes No Yes No IMSL Numerical Libraries
Yes Yes Yes No Yes No NAG Numerical Libraries
Yes No No No No No NMath
Yes Yes Yes Yes Yes Yes SciPy (Python packages)