Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Computer algebra system
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Mathematical software}} {{Use dmy dates|date=April 2019|cs1-dates=y}} {{Redirect|Symbolic algebra|the algebra of logic|Symbolical algebra}} A '''computer algebra system''' ('''CAS''') or '''symbolic algebra system''' ('''SAS''') is any [[mathematical software]] with the ability to manipulate [[mathematical expressions]] in a way similar to the traditional manual computations of [[mathematician]]s and [[scientist]]s. The development of the computer algebra systems in the second half of the 20th century is part of the discipline of "[[computer algebra]]" or "symbolic computation", which has spurred work in [[algorithm]]s over [[mathematical object]]s such as [[polynomial]]s. Computer algebra systems may be divided into two classes: specialized and general-purpose. The specialized ones are devoted to a specific part of mathematics, such as [[number theory]], [[group theory]], or teaching of [[elementary mathematics]]. General-purpose computer algebra systems aim to be useful to a user working in any scientific field that requires manipulation of mathematical expressions. To be useful, a general-purpose computer algebra system must include various features such as: *a [[user interface]] allowing a user to enter and display mathematical formulas, typically from a keyboard, menu selections, mouse or stylus. *a [[programming language]] and an [[interpreter (computing)|interpreter]] (the result of a computation commonly has an unpredictable form and an unpredictable size; therefore user intervention is frequently needed), *a [[Symbolic computation#Simplification|simplifier]], which is a [[rewrite system]] for simplifying mathematics formulas, *a [[memory management|memory manager]], including a [[garbage collector (computing)|garbage collector]], needed by the huge size of the intermediate data, which may appear during a computation, *an [[arbitrary-precision arithmetic]], needed by the huge size of the integers that may occur, *a large library of mathematical [[algorithm]]s and [[special functions]]. The library must not only provide for the needs of the users, but also the needs of the simplifier. For example, the computation of [[polynomial greatest common divisor]]s is systematically used for the simplification of expressions involving fractions. This large amount of required computer capabilities explains the small number of general-purpose computer algebra systems. Significant systems include [[axiom (computer algebra system)|Axiom]], [[GAP_(computer_algebra_system)|GAP]], [[Maxima (software)|Maxima]], [[Magma (computer algebra system)|Magma]], [[Maple (software)|Maple]], [[Mathematica]], and [[SageMath]]. == History == [[File:TI-Nspire.jpg|thumb|A Texas Instruments [[TI-Nspire]] calculator that contains a computer algebra system]] In the 1950s, while computers were mainly used for numerical computations, there were some research projects into using them for symbolic manipulation. Computer algebra systems began to appear in the 1960s and evolved out of two quite different sources—the requirements of theoretical physicists and research into [[artificial intelligence]]. A prime example for the first development was the pioneering work conducted by the later Nobel Prize laureate in physics [[Martinus Veltman]], who designed a program for symbolic mathematics, especially high-energy physics, called [[Schoonschip]] (Dutch for "clean ship") in 1963. Other early systems include [[FORMAC (programming language)|FORMAC]]. Using [[Lisp (programming_language)|Lisp]] as the programming basis, [[Carl Engelman]] created [[MATHLAB]] in 1964 at [[MITRE]] within an artificial-intelligence research environment. Later MATHLAB was made available to users on PDP-6 and PDP-10 systems running TOPS-10 or TENEX in universities. Today it can still be used on [[SIMH]] emulations of the PDP-10. MATHLAB ("'''math'''ematical '''lab'''oratory") should not be confused with [[MATLAB]] ("'''mat'''rix '''lab'''oratory"), which is a system for numerical computation built 15 years later at the [[University of New Mexico]]. In 1987, [[Hewlett-Packard]] introduced the first hand-held calculator CAS with the [[HP-28 series]].<ref name="Nelson">{{cite web | title=Hewlett-Packard Calculator Firsts | first=Richard | last=Nelson | publisher=Hewlett-Packard | url=http://h20331.www2.hp.com/Hpsub/cache/392617-0-0-225-121.html | archive-url=https://web.archive.org/web/20100703031935/http://h20331.www2.hp.com/Hpsub/cache/392617-0-0-225-121.html | archive-date=2010-07-03}}</ref> Other early handheld calculators with symbolic algebra capabilities included the [[Texas Instruments]] [[TI-89 series]] and [[TI-92]] calculator, and the [[Casio]] [[CFX-9970G]].<ref>{{citation | last = Coons | first = Albert | date = October 1999 | department = Technology Tips | doi = 10.5951/mt.92.7.0620 | issue = 7 | journal = The Mathematics Teacher | jstor = 27971125 | pages = 620–622 | title = Getting started with symbolic mathematics systems: a productivity tool | volume = 92}}</ref> The first popular computer algebra systems were [[muMATH]], [[Reduce computer algebra system|Reduce]], [[Derive (computer algebra system)|Derive]] (based on muMATH), and [[Macsyma]]; a [[copyleft]] version of Macsyma is called [[Maxima (software)|Maxima]]. [[Reduce (computer algebra system)|Reduce]] became free software in 2008.<ref>{{Cite web |title=REDUCE Computer Algebra System at SourceForge |url=http://reduce-algebra.sourceforge.net |access-date=2015-09-28 |website=reduce-algebra.sourceforge.net}}</ref> Commercial systems include [[Mathematica]]<ref>[http://history.siam.org/oralhistories/gonnet.htm Interview with Gaston Gonnet, co-creator of Maple] {{webarchive|url=https://web.archive.org/web/20071229044836/http://history.siam.org/oralhistories/gonnet.htm|date=2007-12-29}}, SIAM History of Numerical Analysis and Computing, March 16, 2005.</ref> and [[Maple (software)|Maple]], which are commonly used by research mathematicians, scientists, and engineers. Freely available alternatives include [[SageMath]] (which can act as a [[Front and back ends|front-end]] to several other free and nonfree CAS). Other significant systems include [[Axiom (computer algebra system)|Axiom]], [[GAP_(computer_algebra_system)|GAP]], [[Maxima (software)|Maxima]] and [[Magma (computer algebra system)|Magma]]. The movement to web-based applications in the early 2000s saw the release of [[WolframAlpha]], an online search engine and CAS which includes the capabilities of [[Mathematica]].<ref>{{Cite news |last=Bhattacharya |first=Jyotirmoy |date=2022-05-12 |title=Wolfram{{!}}Alpha: a free online computer algebra system |language=en-IN |work=The Hindu |url=https://www.thehindu.com/sci-tech/technology/wolframalpha-a-free-online-computer-algebra-system/article65401003.ece |access-date=2023-04-26 |issn=0971-751X}}</ref> More recently, computer algebra systems have been implemented using [[artificial neural networks]], though as of 2020 they are not commercially available.<ref>{{Cite web |last=Ornes |first=Stephen |title=Symbolic Mathematics Finally Yields to Neural Networks |url=https://www.quantamagazine.org/symbolic-mathematics-finally-yields-to-neural-networks-20200520/ |access-date=2020-11-04 |website=Quanta Magazine |date=20 May 2020 |language=en}}</ref> ==Symbolic manipulations== The symbolic manipulations supported typically include: *simplification to a smaller expression or some [[Canonical form|standard form]], including automatic simplification with assumptions and simplification with constraints *[[substitution (algebra)|substitution]] of symbols or numeric values for certain expressions *change of form of expressions: expanding products and powers, partial and full [[factorization]], rewriting as [[partial fraction]]s, [[constraint satisfaction]], rewriting [[trigonometric functions]] as exponentials, transforming logic expressions, etc. *[[partial differentiation|partial]] and [[total differentiation]] *some [[antidifferentiation|indefinite]] and [[integral|definite integration]] (see [[symbolic integration]]), including multidimensional integrals *symbolic constrained and unconstrained global optimization *[[Closed-form solution|solution]] of linear and some non-linear equations over various domains *solution of some [[differential equation|differential]] and [[difference equation]]s *taking some [[limit of a function|limit]]s *integral transforms *[[mathematical series|series]] operations such as expansion, summation and products *matrix operations including [[Direct product (Matrix)|products]], [[matrix inversion|inverses]], etc. *[[List of statistical packages|statistical computation]] *[[theorem proving]] and [[proof verification|verification]] which is very useful in the area of [[experimental mathematics]] *[[Automatic programming#Implementations|optimized code generation]] In the above, the word ''some'' indicates that the operation cannot always be performed. ==Additional capabilities== Many also include: *a [[programming language]], allowing users to implement their own algorithms *[[arbitrary-precision]] numeric operations *exact integer arithmetic and number theory functionality *[[Formula editor|Editing of mathematical expressions]] in two-dimensional form *plotting [[graph of a function|graphs and parametric plots]] of functions in two and three dimensions, and animating them *drawing charts and diagrams *[[Application programming interface|APIs]] for linking it on an external program such as a database, or using in a programming language to use the computer algebra system *[[string manipulation]] such as [[string matching|matching]] and [[string searching|searching]] *add-ons for use in [[applied mathematics]] such as physics, [[bioinformatics]], [[computational chemistry]] and packages for [[computational physics|physical computation]]<ref>{{Cite journal |title=Computer Assisted Proofs and Automated Methods in Mathematics Education |first=Thierry Noah |last=Dana-Picard|journal=Electronic Proceedings in Theoretical Computer Science |date=2023 |volume=375 |pages=2–23 |doi=10.4204/EPTCS.375.2 |arxiv=2303.10166 }}</ref> *solvers for [[differential equation]]s<ref>{{Cite web|title=dsolve - Maple Programming Help|url=https://www.maplesoft.com/support/help/Maple/view.aspx?path=dsolve|website=www.maplesoft.com|access-date=2020-05-09}}</ref><ref>{{Cite web|title=DSolve - Wolfram Language Documentation|url=https://reference.wolfram.com/language/ref/DSolve.html|website=www.wolfram.com|access-date=2020-06-28}}</ref><ref>{{Cite web|title=Basic Algebra and Calculus — Sage Tutorial v9.0|url=http://doc.sagemath.org/html/en/tutorial/tour_algebra.html|website=doc.sagemath.org|access-date=2020-05-09}}</ref><ref>{{Cite web|title=Symbolic algebra and Mathematics with Xcas|url=http://www-fourier.ujf-grenoble.fr/~parisse/giac/cascmd_en.pdf}}</ref> Some include: *[[computer graphics|graphic]] production and editing such as [[computer-generated imagery]] and [[signal processing]] as [[image processing]] *[[sound synthesis]] Some computer algebra systems focus on specialized disciplines; these are typically developed in academia and are free. They can be inefficient for numeric operations as compared to [[Comparison of numerical-analysis software|numeric systems]]. ==Types of expressions== The expressions manipulated by the CAS typically include [[polynomial]]s in multiple variables; standard functions of expressions ([[Trigonometric functions|sine]], [[exponential function|exponential]], etc.); various special functions ([[gamma function|Γ]], [[Riemann zeta function|ζ]], [[error function|erf]], [[Bessel function]]s, etc.); arbitrary functions of expressions; optimization; derivatives, integrals, simplifications, sums, and products of expressions; truncated [[series (mathematics)|series]] with expressions as coefficients, [[matrix (mathematics)|matrices]] of expressions, and so on. Numeric domains supported typically include [[floating-point arithmetic|floating-point representation of real numbers]], [[integer]]s (of unbounded size), [[complex number|complex]] (floating-point representation), [[interval arithmetic|interval representation of reals]], [[rational number]] (exact representation) and [[algebraic number]]s. ==Use in education== There have been many advocates for increasing the use of computer algebra systems in primary and secondary-school classrooms. The primary reason for such advocacy is that computer algebra systems represent real-world math more than do paper-and-pencil or hand calculator based mathematics.<ref>{{cite web|url=http://www.ted.com/talks/conrad_wolfram_teaching_kids_real_math_with_computers?language=en|title=Teaching kids real math with computers|website=Ted.com|date=15 November 2010 |access-date=12 August 2017}}</ref> This push for increasing computer usage in mathematics classrooms has been supported by some boards of education. It has even been mandated in the curriculum of some regions.<ref>{{cite web|url=http://www.edu.gov.mb.ca/k12/cur/math/outcomes/|title=Mathematics - Manitoba Education|website=Edu.gov.mb.ca|access-date=12 August 2017}}</ref> Computer algebra systems have been extensively used in higher education.<ref>{{cite web|url=http://www.it.northwestern.edu/software/mathematica-fac/|title=Mathematica for Faculty, Staff, and Students : Information Technology - Northwestern University|website=It.northwestern.edu|access-date=12 August 2017}}</ref><ref>{{cite web|url=https://cuit.columbia.edu/mathematica-students|title=Mathematica for Students - Columbia University Information Technology|website=cuit.columbia.edu|access-date=12 August 2017}}</ref> Many universities offer either specific courses on developing their use, or they implicitly expect students to use them for their course work. The companies that develop computer algebra systems have pushed to increase their prevalence among university and college programs.<ref>{{cite web|url=https://www.wolfram.com/solutions/education/higher-education/uses-for-education.html|title=Mathematica for Higher Education: Uses for University & College Courses|website=Wolfram.com|access-date=12 August 2017}}</ref><ref>{{cite web|url=http://www.mathworks.com/academia/|title=MathWorks - Academia - MATLAB & Simulink|website=Mathworks.com|access-date=12 August 2017}}</ref> CAS-equipped calculators are not permitted on the [[ACT (test)|ACT]], the [[PLAN (test)|PLAN]], and in some classrooms<ref>[http://www.act.org/caap/sample/calc.html ACT's CAAP Tests: Use of Calculators on the CAAP Mathematics Test<!-- Bot generated title -->] {{webarchive |url=https://web.archive.org/web/20090831032437/http://www.act.org/caap/sample/calc.html |date=August 31, 2009 }}</ref> though it may be permitted on all of [[College Board]]'s calculator-permitted tests, including the [[SAT]], some [[SAT Subject Tests]] and the [[AP Calculus]], [[AP Chemistry|Chemistry]], [[AP Physics|Physics]], and [[AP Statistics|Statistics]] exams.<ref>{{cite web |title=AP Exams Calculator Policy |url=https://apstudents.collegeboard.org/exam-policies-guidelines/calculator-policies |website=AP Students |publisher=College Board |access-date=24 May 2024}}</ref> == Mathematics used in computer algebra systems == * [[Knuth–Bendix completion algorithm]]<ref name="BuchbergerCollins2013"/> * [[Root-finding algorithm]]s<ref name="BuchbergerCollins2013">{{cite book|author1=B. Buchberger|author2=G.E. Collins|author3=R. Loos|title=Computer Algebra: Symbolic and Algebraic Computation|url=https://books.google.com/books?id=yUmqCAAAQBAJ&q=%22algorithm%22|date=29 June 2013|publisher=Springer Science & Business Media|isbn=978-3-7091-3406-1}}</ref> * [[Symbolic integration]] via e.g. [[Risch algorithm]] or [[Risch–Norman algorithm]] * [[Hypergeometric summation]] via e.g. [[Gosper's algorithm]] * [[Limit (mathematics)|Limit computation]] via e.g. Gruntz's algorithm * [[Polynomial factorization]] via e.g., over finite fields,<ref name="GathenGerhard2013">{{cite book|author1=Joachim von zur Gathen|author2=Jürgen Gerhard|title=Modern Computer Algebra|url=https://books.google.com/books?id=7fE9baKyqSEC&q=%22polynomial+factorization%22+%22finite+field%22|date=25 April 2013|publisher=Cambridge University Press|isbn=978-1-107-03903-2}}</ref> [[Berlekamp's algorithm]] or [[Cantor–Zassenhaus algorithm]]. * [[Greatest common divisor]] via e.g. [[Euclidean algorithm]] * [[Gaussian elimination]]<ref name="GeddesCzapor2007">{{cite book|author1=Keith O. Geddes|author2=Stephen R. Czapor|author3=George Labahn|title=Algorithms for Computer Algebra|url=https://books.google.com/books?id=9fOUwkkRxT4C|date=30 June 2007|publisher=Springer Science & Business Media|isbn=978-0-585-33247-5}}</ref> * [[Gröbner basis]] via e.g. [[Buchberger's algorithm]]; generalization of Euclidean algorithm and Gaussian elimination * [[Padé approximant]] * [[Schwartz–Zippel lemma]] and testing polynomial identities * [[Chinese remainder theorem]] * [[Diophantine equation]]s * [[Landau's algorithm]] (nested radicals) * Derivatives of [[elementary function]]s and [[special functions]]. (e.g. See [[derivatives of the incomplete gamma function]].) * [[Cylindrical algebraic decomposition]] * [[Quantifier elimination]] over real numbers via cylindrical algebraic decomposition ==See also== {{Portal|Mathematics}} * [[List of computer algebra systems]] * [[Scientific computation]] * [[Statistical package]] * [[Automated theorem proving]] * [[Algebraic modeling language]] * [[Constraint-logic programming]] * [[Satisfiability modulo theories]] == References == {{reflist}} ==External links== *[http://www.ericdigests.org/2003-1/age.htm Curriculum and Assessment in an Age of Computer Algebra Systems] {{Webarchive|url=https://web.archive.org/web/20091201030924/http://www.ericdigests.org/2003-1/age.htm |date=2009-12-01 }} - 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 website: [https://web.archive.org/web/20060917023934/http://www.lcs.mit.edu/publications/specpub.php?id=663])'' {{Computer algebra systems}} {{DEFAULTSORT:Computer Algebra System}} [[Category:Computer algebra systems| ]] [[Category:Algebra education]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite news
(
edit
)
Template:Cite web
(
edit
)
Template:Computer algebra systems
(
edit
)
Template:Portal
(
edit
)
Template:Redirect
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Use dmy dates
(
edit
)
Template:Webarchive
(
edit
)