Content deleted Content added
m →Expressions: using proper multiplication symbol |
ce |
||
Line 2:
{{Lead extra info|date=May 2020}}
[[File:RischIntegration.PNG|thumb|500px|[[Symbolic integration]] of the [[algebraic function]] {{math|1=''f''(''x'') = {{sfrac|''x''|{{sqrt|''x''<sup>4</sup> + 10''x''<sup>2</sup>
In [[mathematics]] and [[computer science]],<ref>{{Cite web |title=ACM Association in computer algebra |url=https://www.sigsam.org/cca/}}</ref> '''computer algebra''', also called '''symbolic computation''' or '''algebraic computation''', is a scientific area that refers to the study and development of [[algorithm]]s and [[software]] for manipulating [[expression (mathematics)|mathematical expressions]] and other [[mathematical object]]s. Although computer algebra could be considered a subfield of [[scientific computing]], they are generally considered as distinct fields because scientific computing is usually based on [[numerical computation]] with approximate [[floating point number]]s, while symbolic computation emphasizes ''exact'' computation with expressions containing [[variable (mathematics)|variable]]s that have no given value and are manipulated as symbols.
Line 39:
==== Expressions ====
[[File:Cassidy.1985.015.gif|thumb|400px|Representation of the expression {{math|(8
Except for [[number]]s and [[variable (mathematics)|variables]], every [[Expression (mathematics)|mathematical expression]] may be viewed as the symbol of an operator followed by a [[sequence]] of operands. In computer algebra software, the expressions are usually represented in this way. This representation is very flexible, and many things that seem not to be mathematical expressions at first glance, may be represented and manipulated as such. For example, an equation is an expression with "=" as an operator, a matrix may be represented as an expression with "matrix" as an operator and its rows as operands.
Even programs may be considered and represented as expressions with operator "procedure" and, at least, two operands, the list of parameters and the body, which is itself an expression with "body" as an operator and a sequence of instructions as operands. Conversely, any mathematical expression may be viewed as a program. For example, the expression {{math|''a'' + ''b''}} may be viewed as a program for the addition, with {{
This process of delayed evaluation is fundamental in computer algebra. For example, the operator "=" of the equations is also, in most computer algebra systems, the name of the program of the equality test: normally, the evaluation of an equation results in an equation, but, when an equality test is needed,
As the size of the operands of an expression is unpredictable and may change during a working session, the sequence of the operands is usually represented as a sequence of either [[Pointer (computer programming)|pointers]] (like in [[Macsyma]]) or entries in a [[hash table]] (like in [[Maple (software)|Maple]]).
Line 52:
The raw application of the basic rules of [[derivative|differentiation]] with respect to {{math|''x''}} on the expression <math>a^x</math> gives the result
:<math> x\cdot a^{x-1}\cdot 0 + a^x\cdot \left (1\cdot \log a + x\cdot \frac{0}{a} \right).</math>
This simplification is normally done through [[rewriting|rewriting rules]].<ref>Buchberger, Bruno, and Rüdiger Loos. "[https://www.risc.jku.at/people/buchberg/papers/1982-00-00-B.pdf Algebraic simplification]." Computer algebra. Springer, Vienna, 1982. 11-43.</ref> There are several classes of rewriting rules
Some rewriting rules sometimes increase and sometimes decrease the size of the expressions to which they are applied. This is the case of [[distributivity]] or [[Trigonometric identity#Product-to-sum and sum-to-product identities|trigonometric identities]]. For example, the distributivity law allows rewriting <math>(x+1)^4 \rightarrow x^4+4x^3+6x^2+4x+1</math> and <math>(x-1)(x^4+x^3+x^2+x+1) \rightarrow x^5-1.</math> As there is no way to make a good general choice of applying or not such a rewriting rule, such
== Mathematical aspects ==
:<math>(\sin(x+y)^2+ \log(z^2-5))^3</math>
is viewed as a polynomial in <math>\sin(x+y)</math> and <math>\log(z^2-5)</math>
=== Equality ===
There are two notions of equality for [[expression (mathematics)|mathematical expressions]].
:<math> (x+y)^2=x^2+2xy+y^2.</math>
It is known from [[Richardson's theorem]] that there may not exist an algorithm that decides whether two expressions representing numbers are semantically equal
To test the equality of two expressions, instead of designing specific algorithms, it is usual to put expressions in some ''[[canonical form]]'' or to put their difference in a ''normal form'', and to test the syntactic equality of the result.
Normal forms are usually preferred in computer algebra for several reasons. Firstly, canonical forms may be more costly to compute than normal forms. For example, to put a polynomial in canonical form, one has to expand
==History==
|