Computer algebra system
From Wikipedia, the free encyclopedia
A computer algebra system (CAS) is a software program that facilitates symbolic mathematics. The core functionality of a CAS is manipulation of mathematical expressions in symbolic form.
Contents |
[edit] Types of expressions
The expressions manipulated by the CAS typically include polynomials in multiple variables; standard functions of expressions (sine, exponential, etc.); various special functions (Γ, ζ, erf, Bessel functions, etc.); arbitrary functions of expressions; optimization; derivatives, integrals, simplifications, sums, and products of expressions; truncated series with expressions as coefficients, matrices of expressions, and so on.
[edit] Symbolic manipulations
The symbolic manipulations supported typically include
- simplification to the smallest possible expression or some standard form, including automatic simplification with assumptions and simplification with constraints
- substitution of symbolic, functors or numeric values for expressions
- change of form of expressions: expanding products and powers, rewriting as partial fractions, constraint satisfaction, rewriting trigonometric functions as exponentials, etc.
- partial and total differentiation
- symbolic constrained and unconstrained global optimization
- partial and full factorization
- solution of linear and some non-linear equations over various domains
- solution of some differential and difference equations
- taking some limits
- some indefinite and definite integration, including multidimensional integrals
- integral transforms
- arbitrary precision numeric operations
- Series operations such as expansion, summation and products
- matrix operations including products, inverses, etc.
- display of mathematical expressions in two-dimensional mathematical form, often using typesetting systems similar to TeX (see also Prettyprint)
(In the above, the word some indicates that the operation cannot always be performed.)
[edit] Other features
Many CASs have additional features:
- evaluating to high precision (bignum arithmetic). For instance, allowing the evaluation of 21/3 to 10,000 digits
- add-ons for use in applied mathematics such as physics packages for physical computation
- plotting graphs and parametric plots of functions in two and three dimensions, and animating them
- APIs for linking it on an external program such as a database, or using in a programming language to use the computer algebra system
- drawing charts and diagrams
- string manipulation such as matching and searching
- statistical computation
- Theorem proving and verification
- graphic production and editing such as CGI and signal processing as image processing
- sound synthesis
Many also include a high level programming language, allowing users to implement their own algorithms. The programming language may be similar to a conventional imperative or functional programming language or a higher-level constraint logic, fourth-generation or fifth-generation programming language.
The study of algorithms useful for computer algebra systems is known as computer algebra, symbolic computation, algebraic computation, or, less commonly, symbolic manipulation, symbolic processing, symbolic mathematics, or symbolic algebra.
The run-time of some numerical programs implemented in some computer algebra systems is longer than that of equivalent programs implemented in systems such as MATLAB, GNU Octave, or directly in C, since they are programmed for full symbolic generality and thus cannot use or optimize into direct machine numerical operations for most of their functions. On the other hand, some systems can compile user-written numerical programs into efficient running code if the user supplies suitable declarations.
[edit] History
Computer algebra systems began to appear in the early 1970s, and evolved out of research into artificial intelligence, though the fields are now regarded as largely separate. Pioneering work was conducted by the Nobel Prize laureate Martin Veltman, who designed a program for symbolic mathematics, especially High Energy Physics, called Schoonship (Dutch for "clean ship") in 1963. The first popular systems were muMATH, Reduce, Derive (based on muMATH), and Macsyma; a copyleft version of Macsyma called Maxima is actively being maintained. The current market leader is Mathematica[1] which is commonly used by research mathematicians, scientists, and engineers. Maple, MuPAD and MathCad are other commercial systems. Some computer algebra systems focus on a specific area of application; these are typically developed in academia and free.
In 1987 Hewlett-Packard introduced the first hand held calculator CAS with the HP-28 series, and it was possible, for the first time in a calculator, to arrange algebraic expressions, differentiation, limited symbolic integration, Taylor series construction and a solver for algebraic equations.
The Texas Instruments company in 1995 released the TI-92 calculator with an advanced CAS based on the software Derive. This, along with its successors (including the TI-89 series) feature a reasonably capable and relatively inexpensive hand-held computer algebra system, featuring derivatives and integrals with respect to 1 variable, limits, and some differential equations.
[edit] Mathematics used in computer algebra systems
[edit] See also
- Comparison of computer algebra systems
- Scientific computation
- Statistical package
- Algebraic algorithms
- Symbolic computation
- Automated theorem proving
- Artificial intelligence
- Constraint-logic programming
[edit] References
- ^ Interview with Gaston Gonnet, co-creator of Maple, SIAM History of Numerical Analysis and Computing, March 16, 2005
[edit] External links
- Curriculum and Assessment in an Age of Computer Algebra Systems - From the Education Resources Information Center Clearinghouse for Science, Mathematics, and Environmental Education, Columbus, Ohio.
- Richard J. Fateman. "Essays in algebraic simplification". Technical report MIT-LCS-TR-095, 1972. (Of historical interest in showing the direction of research in computer algebra. At the MIT LCS web site: [1])