# Sistema algebraico computacional

Un sistema algebraico computacional o sistema de álgebra computacional (CAS, del inglés computer algebra system) es un programa de ordenador o calculadora avanzada que facilita el cálculo simbólico. La principal diferencia entre un CAS y una calculadora tradicional es la habilidad del primero para trabajar con ecuaciones y fórmulas simbólicamente, en lugar de numéricamente. Es decir, una expresión como a + b es interpretada siempre como "la suma de dos variables", y no como "la suma de dos números" (con valores asignados).
Un CAS permite automatizar manipulaciones tediosas o difíciles, como por ejemplo, desarrollar por el binomio de Newton la expresión $(x-10)^{500}$.

## Manipulación de expresiones

Suelen incluir los siguientes tipos de manipulaciones:
* Con expresiones simbólicas:
** Simplificación de una expresión a la forma más simple o a una forma estándar.
** Cambio en la forma de las expresiones: expansión de productos y potencias, factorización, reescritura de un cociente de polinomios como suma de fracciones parciales, reescritura de funciones trigonométricas como exponenciales (y viceversa), etc.
** Operaciones con matrices, incluyendo productos de matrices, inversa de una matriz, etc.
** Resolución de algunas ecuaciones.
** Cálculo de algunos límites de funciones.
** Cálculo de derivadas y derivadas parciales.
** Cálculo de algunas integrales indefinidas, definidas y de algunas transformadas integrales.
** Aproximación de funciones por desarrollo en series de potencias.
** Resolución de algunas ecuaciones diferenciales.
* Con expresiones numéricas:
** Manipulación exacta de fracciones y radicales.
** Realización de operaciones con precisión arbitraria.
* Respecto a la presentación de resultados:
** Visualizado de las expresiones matemáticas en una forma bidimensional, usando con frecuencia sistemas de composición similares a TeX.
En los párrafos precedentes, la palabra algunos indica que la operación no siempre puede ser realizada por el sistema. Un programa de esta clase puede encontrar limitaciones a la hora de resolver ciertas expresiones derivadas, integrales, antiderivadas, límites, cuando éstas tienen alguna ambigüedad o indefinición, o por las propias limitaciones del sistema.
Algunas versiones ofrecen al usuario la posibilidad de programar sus propios algoritmos matemáticos y solventar, en parte, tales limitaciones. El estudio de algoritmos aplicables a los sistemas algebraicos computarizados se denomina álgebra computacional.

## Historia

Los sistemas de álgebra computacional aparecieron al principio de la década de los 70, y evolucionaron a partir de la investigación en inteligencia artificial, aunque hoy en día constituyen campos ampliamente separados. Los primeros trabajos fueron dirigidos por el Premio Nobel Martin Veltman, quien diseñó en 1963 un programa para matemática simbólica, llamado Schoonship, especializado en Física de Altas Energías.
Los primeros sistemas populares fueron Reduce y Macsyma. Hoy en día, una versión copyleft de Macsyma llamada Maxima es mantenida activamente. Posteriormente, en los años 1980 adquirió popularidad Derive.
Los actuales líderes del mercado son Maple y Mathematica; ambos son usados frecuentemente por ingenieros, investigadores matemáticos y otros científicos. Matlab es el otro sistema comercial líder, diseñado para ingenieros y científicos, destacando en el cálculo numérico, aunque también permite cálculo simbólico. Algunos sistemas algebraicos computacionales se centran en un área específica de aplicación, estos últimos suelen ser sistemas libres desarrollados por universidades.
En 1987 Hewlett-Packard introdujo por primera vez un CAS en una calculadora con la HP-28. Posteriormente, en 1995, Texas Instruments sacó al mercado la calculadora TI-92 luego TI-voyage200, que incluían un CAS avanzado basado en el software Derive.

## Sistemas destacados
### Grandes CAS de propósito general

Dentro del grupo de los grandes CAS de propósito general destacamos:
* Mathematica (de Wolfram) para Windows, MacOS X y Linux. Lanzado en 1988, permite realizar cálculos sofisticados. Las últimas versiones permiten ejecutar sin modificaciones programas escritos 25 años atrás. Desde 2009 se puede acceder a parte de su funcionalidad desde el motor de búsqueda de respuestas Wolfram Alpha.
* Maple (de Maplesoft), para Windows, MacOS X y Linux. Lanzado en 1989. Con una funcionalidad similar a la de Mathematica.
* SageMath, proyecto de software libre desarrollado desde 2005. Disponible en Windows, Linux y MacOS X. Usando el lenguaje Python, reúne y compatibiliza bajo una única interfaz y entorno distintos sistemas algebraicos de software libre (Maxima, GAP, PARI/GP, Sympy, entre otros). Es usado habitualmente en el mundo del álgebra conmutativa, la teoría de números, la geometría algebraica, el análisis numérico, la estadística o el procesamiento de imágenes.
* Matlab (de MathWorks), para Windows, MacOS y Linux, ampliamente difundido para todo tipo de cálculos técnicos. Nació en 1984 orientado al análisis numérico, la manipulación y la visualización de datos reales. Posteriormente, incorporó cálculos simbólicos con la librería Symbolic MathToolbox. Esta librería ejecuta un subconjunto del software Maple integrado en Matlab.
* Magma, multiplataforma, del Grupo de Álgebra Computacional de la Universidad de Sídney. Podemos situarlo en el límite entre los CAS de propósito general y los de uso específico, pues su uso se extiende a numerosos campos de las matemáticas puras (incluyendo álgebra, geometría y combinatoria) , pero no cubre funcionalidades de análisis como el cálculo de límites o de integrales.
Para medir su importancia en el mundo del software matemático, contabilizamos el número de citas posteriores al año 2000 de la base de datos swMATH. Resumimos la funcionalidad de los CAS de carácter general más citados.
| Sistema | N.º de citas en swMATH | Editor de fórmulas | Precisión arbitraria | Cálculo | Cálculo | Resolución de ... | Resolución de ... | Resolución de ... | Resolución de ... | Resolución de ... | Teoría de grafos | Teoría de números | Álgebra de Boole | Tensores | Probabilidad | Teoría de control | Teoría de códigos | Teoría de grupos | Sistema |
| Sistema | N.º de citas en swMATH | Editor de fórmulas | Precisión arbitraria | Integrales | Transformada integral | Ecuaciones | inecuaciones | Ecuaciones diofánticas | Ecuaciones diferenciales | Relaciones de recurrencia | Teoría de grafos | Teoría de números | Álgebra de Boole | Tensores | Probabilidad | Teoría de control | Teoría de códigos | Teoría de grupos | Sistema |
| MATLAB | >5300 | No | Sí | Sí | Sí | Sí | No | No | Sí | No | No | No | No | No | No | No | No | No | MATLAB |
| Mathematica | >2700 | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | No | Sí | Mathematica |
| Maple | >2700 | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | No | Sí | Maple |
| Magma | >1300 | No | Sí | No | No | Sí | No | Sí | No | No | Sí | Sí | No | No | | | Sí | Sí | Magma |
| SageMath | >580 | No | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | No | Sí | Sí | SageMath |

### CAS de propósito general de tamaño medio

Pueden usarse de forma independiente (incluso en teléfonos inteligentes, como Maxima o Giac), incorporados en otros programas (como es el caso de Giac en GeoGebra, o de Maxima o Sympy en SageMath) o embebidos en dispositivos (como Giac en la calculadora HP Prime). Su funcionalidad suele cubrir las necesidades de un usuario medio. Entre estos sistemas destacamos:
| Sistema | Editor de fórmulas | Precisión arbitraria | Cálculo | Cálculo | Resolución de | Resolución de | Resolución de | Resolución de | Resolución de | Teoría de grafos | Teoría de números | Álgebra de Boole | Tensores | Probabilidad | Teoría de control | Teoría de códigos | Teoría de grupos | Sistema |
| Sistema | Editor de fórmulas | Precisión arbitraria | Integrales | Transformadas integrales | Ecuaciones | Inecuaciones | Ecuaciones diofánticas | Ecuaciones diferenciales | Relaciones de recurrencia | Teoría de grafos | Teoría de números | Álgebra de Boole | Tensores | Probabilidad | Teoría de control | Teoría de códigos | Teoría de grupos | Sistema |
| Maxima | No | Sí | Sí | Sí | Sí | Sí | No | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | No | Sí | Maxima |
| SymPy | No | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | No | Sí | Sí | Sí | Sí | No | No | Sí | SymPy |
| Xcas/Giac | Sí | Sí | Sí | No | Sí | Sí | No | Sí | Sí | No | Sí | No | No | Sí | | No | | Xcas/Giac |
| Yacas | No | Sí | Sí | No | Sí | No | No | No | No | No | No | No | No | | | No | No | Yacas |

## Bibliografía

* 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: )