Articulo de referencia

Álgebra computacional

Integración simbólica de la función algebraica 4 + 10''x'' 2 − 96''x'' − 71}}}}"}},"i":0}}]}"> f ( x ) = ⁠ x / √ x 4 + 10 x 2 − 96 x − 71 ⁠ utilizando el sistema de álgebra comp...

Integración simbólica de la función algebraica f ( x ) = x / x 4 + 10 x 2 − 96 x − 71 utilizando el sistema de álgebra computacional Axiom

En matemáticas e informática , [ 1 ] el álgebra computacional , también llamada computación simbólica o computación algebraica , es un área científica que se refiere al estudio y desarrollo de algoritmos y software para manipular expresiones matemáticas y otros objetos matemáticos . Aunque el álgebra computacional podría considerarse un subcampo de la computación científica , generalmente se consideran campos distintos porque la computación científica suele basarse en la computación numérica con números de punto flotante aproximados , mientras que la computación simbólica enfatiza la computación exacta con expresiones que contienen variables que no tienen un valor dado y se manipulan como símbolos.

Las aplicaciones de software que realizan cálculos simbólicos se denominan sistemas de álgebra computacional , y el término sistema alude a la complejidad de las aplicaciones principales que incluyen, como mínimo, un método para representar datos matemáticos en un ordenador, un lenguaje de programación de usuario (normalmente diferente del lenguaje utilizado para la implementación), un gestor de memoria dedicado, una interfaz de usuario para la entrada/salida de expresiones matemáticas y un amplio conjunto de rutinas para realizar operaciones habituales, como la simplificación de expresiones, la diferenciación mediante la regla de la cadena , la factorización de polinomios , la integración indefinida , etc.

El álgebra computacional se utiliza ampliamente para experimentar en matemáticas y diseñar las fórmulas empleadas en programas numéricos. También se emplea para realizar cálculos científicos completos cuando los métodos puramente numéricos resultan insuficientes, como en la criptografía de clave pública , o para resolver algunos problemas no lineales .

Terminología

Algunos autores distinguen el álgebra computacional de la computación simbólica , utilizando este último término para referirse a tipos de computación simbólica distintos de la computación con fórmulas matemáticas . Algunos autores utilizan computación simbólica para el aspecto informático de la materia y álgebra computacional para el aspecto matemático. [ 2 ] En algunos idiomas, el nombre del campo no es una traducción directa de su nombre en inglés. Típicamente, se le llama calcul formel en francés, que significa "computación formal". Este nombre refleja los vínculos que este campo tiene con los métodos formales .

En el pasado, la computación simbólica también se ha denominado manipulación simbólica , manipulación algebraica , procesamiento simbólico , matemáticas simbólicas o álgebra simbólica , pero estos términos, que también hacen referencia a la manipulación no computacional, ya no se utilizan en referencia al álgebra computacional.

Comunidad científica

No existe una sociedad científica específica para el álgebra computacional, pero esta función la asume el grupo de interés especial de la Association for Computing Machinery llamado SIGSAM (Special Interest Group on Symbolic and Algebraic Manipulation). [ 3 ]

Existen varias conferencias anuales sobre álgebra computacional, la principal de las cuales es ISSAC (Simposio Internacional sobre Computación Simbólica y Algebraica), que es patrocinada regularmente por SIGSAM. [ 4 ]

Existen varias revistas especializadas en álgebra computacional, siendo la más importante el Journal of Symbolic Computation, fundado en 1985 por Bruno Buchberger . [ 5 ] También hay otras revistas que publican regularmente artículos sobre álgebra computacional. [ 6 ]

aspectos de la informática

Representación de datos

Dado que el software numérico es altamente eficiente para el cálculo numérico aproximado , en álgebra computacional es común enfatizar el cálculo exacto con datos representados con precisión. Esta representación exacta implica que, incluso cuando el tamaño de la salida es pequeño, los datos intermedios generados durante un cálculo pueden crecer de forma impredecible. Este comportamiento se denomina expansión de la expresión . [ 7 ] Para mitigar este problema, se utilizan diversos métodos en la representación de los datos, así como en los algoritmos que los manipulan. [ 8 ]

Números

Los sistemas numéricos habituales utilizados en la computación numérica son los números de coma flotante y los enteros de tamaño fijo y limitado. Ninguno de ellos es conveniente para el álgebra computacional, debido a la expansión de las expresiones. [ 9 ] Por lo tanto, los números básicos utilizados en el álgebra computacional son los enteros de los matemáticos, comúnmente representados por una secuencia de dígitos con signo no limitada en alguna base de numeración , generalmente la base más grande permitida por la palabra de máquina . Estos enteros permiten definir los números racionales , que son fracciones irreducibles de dos enteros.

Programar una implementación eficiente de las operaciones aritméticas es una tarea difícil. Por lo tanto, la mayoría de los sistemas de álgebra computacional gratuitos , y algunos comerciales como Mathematica y Maple , [ 10 ] [ 11 ] utilizan la biblioteca GMP , que es, por lo tanto, un estándar de facto .

Expresiones

Representación de la expresión (8 − 6) × (3 + 1) como un árbol Lisp , de una tesis de maestría de 1985 [ 12 ]

Excepto en el caso de números y variables , toda expresión matemática puede considerarse como el símbolo de un operador seguido de una secuencia de operandos. En el software de álgebra computacional, las expresiones suelen representarse de esta forma. Esta representación es muy flexible, y muchas cosas que a primera vista no parecen expresiones matemáticas pueden representarse y manipularse como tales. Por ejemplo, una ecuación puede considerarse como una expresión con el operador principal "=", y una matriz puede representarse como una expresión con "matriz" como operador y sus filas como operandos.

Incluso los programas pueden considerarse y representarse como expresiones con el operador "procedimiento" y, al menos, dos operandos: la lista de parámetros y el cuerpo, que a su vez es una expresión con "cuerpo" como operador y una secuencia de instrucciones como operandos. A la inversa, cualquier expresión matemática puede considerarse un programa. Por ejemplo, la expresión a + b puede considerarse un programa para la suma, con a y b como parámetros. La ejecución de este programa consiste en evaluar la expresión para valores dados de a y b ; si no se les proporciona ningún valor, el resultado de la evaluación es simplemente su entrada.

Este proceso de evaluación diferida es fundamental en el álgebra computacional. Por ejemplo, el operador "=" de ecuación también es, en la mayoría de los sistemas de álgebra computacional, el nombre del programa de la prueba de igualdad: normalmente, la evaluación de una ecuación da como resultado una ecuación, pero, cuando se necesita una prueba de igualdad, ya sea solicitada explícitamente por el usuario a través de un comando "evaluación a un booleano", o iniciada automáticamente por el sistema en el caso de una prueba dentro de un programa, entonces se ejecuta la evaluación a un resultado booleano.

Como el tamaño de los operandos de una expresión es impredecible y puede cambiar durante una sesión de trabajo, la secuencia de los operandos se suele representar como una secuencia de punteros (como en Macsyma ) [ 13 ] o entradas en una tabla hash (como en Maple ).

Simplificación

La aplicación directa de las reglas básicas de diferenciación con respecto a x en la expresión a x da como resultado

incógnitaaincógnita10+aincógnita(1registroa+incógnita0a).{\displaystyle x\cdot a^{x-1}\cdot 0+a^{x}\cdot \left(1\cdot \log a+x\cdot {\frac {0}{a}}\right).}

Generalmente se busca una expresión más simple, y la simplificación es necesaria al trabajar con expresiones generales. Esta simplificación se realiza normalmente mediante reglas de reescritura . [ 14 ] Existen varias clases de reglas de reescritura que se pueden considerar. Las más simples son las reglas que siempre reducen el tamaño de la expresión, como E E → 0 o sin(0) → 0. Se aplican sistemáticamente en sistemas de álgebra computacional.

Una dificultad surge con las operaciones asociativas como la suma y la multiplicación. La forma estándar de abordar la asociatividad es considerar que la suma y la multiplicación tienen un número arbitrario de operandos; es decir, que a + b + c se representa como "+"( a , b , c ) . Así, a + ( b + c ) y ( a + b ) + c se simplifican a "+"( a , b , c ) , que se muestra como a + b + c . En el caso de expresiones como a b + c , la forma más sencilla es reescribir sistemáticamente E , E F , E / F como, respectivamente, ( 1)⋅ E , E + ( 1)⋅ F , EF 1 . En otras palabras, en la representación interna de las expresiones, no hay resta ni división ni menos unario, fuera de la representación de los números.

Otra dificultad surge con la conmutatividad de la suma y la multiplicación. El problema radica en reconocer rápidamente los términos semejantes para combinarlos o cancelarlos. Comprobar cada par de términos resulta costoso con sumas y productos muy largos. Para solucionar esto, Macsyma ordena los operandos de sumas y productos de forma que los términos semejantes se colocan en posiciones consecutivas, lo que facilita su detección. En Maple , se utiliza una función hash para generar colisiones al introducir términos semejantes, permitiendo combinarlos inmediatamente. Esto permite reconocer y almacenar solo una vez las subexpresiones que aparecen varias veces en un cálculo. De esta forma, se ahorra memoria y se acelera el cálculo al evitar la repetición de las mismas operaciones en expresiones idénticas.

Algunas reglas de reescritura a veces aumentan y a veces disminuyen el tamaño de las expresiones a las que se aplican. Este es el caso de la ley distributiva o las identidades trigonométricas . Por ejemplo, la ley distributiva permite reescribir(incógnita+1)4incógnita4+4incógnita3+6incógnita2+4incógnita+1{\displaystyle (x+1)^{4}\rightarrow x^{4}+4x^{3}+6x^{2}+4x+1}y(incógnita1)(incógnita4+incógnita3+incógnita2+incógnita+1)incógnita51.{\displaystyle (x-1)(x^{4}+x^{3}+x^{2}+x+1)\rightarrow x^{5}-1.}Dado que no existe una forma de elegir de manera general si aplicar o no dicha regla de reescritura, esta solo se realiza cuando el usuario la solicita explícitamente. Para la propiedad distributiva, la función informática que aplica esta regla de reescritura se denomina normalmente "expandir". La regla de reescritura inversa, denominada "factorizar", requiere un algoritmo complejo, que constituye una función clave en los sistemas de álgebra computacional (véase Factorización de polinomios ).

Aspectos matemáticos

Algunas cuestiones matemáticas fundamentales surgen cuando se quiere manipular expresiones matemáticas en un ordenador. Consideramos principalmente el caso de las fracciones racionales multivariables . Esto no es una restricción real, porque, tan pronto como las funciones irracionales que aparecen en una expresión se simplifican, suelen considerarse como nuevas indeterminadas. Por ejemplo,

(pecado(incógnita+y)2+registro(z25))3{\displaystyle (\sin(x+y)^{2}+\log(z^{2}-5))^{3}}

se considera un polinomio enpecado(incógnita+y){\displaystyle \sin(x+y)}yregistro(z25){\displaystyle \log(z^{2}-5)}.

Igualdad

Hay dos nociones de igualdad para las expresiones matemáticas . La igualdad sintáctica es la igualdad de su representación en una computadora. Esto es fácil de probar en un programa. La igualdad semántica se da cuando dos expresiones representan el mismo objeto matemático, como en

(incógnita+y)2=incógnita2+2incógnitay+y2.{\displaystyle (x+y)^{2}=x^{2}+2xy+y^{2}.}

Según el teorema de Richardson , es posible que no exista un algoritmo que determine si dos expresiones numéricas son semánticamente iguales si se permiten exponenciales y logaritmos en dichas expresiones. Por consiguiente, la igualdad (semántica) solo puede comprobarse en ciertas clases de expresiones, como los polinomios y las fracciones racionales .

Para comprobar la igualdad de dos expresiones, en lugar de diseñar algoritmos específicos, lo habitual es expresar las expresiones en una forma canónica o expresar su diferencia en una forma normal , y comprobar la igualdad sintáctica del resultado.

En álgebra computacional, "forma canónica" y "forma normal" no son sinónimos. [ 15 ] Una forma canónica es tal que dos expresiones en forma canónica son semánticamente iguales si y solo si son sintácticamente iguales, mientras que una forma normal es tal que una expresión en forma normal es semánticamente cero solo si es sintácticamente cero. En otras palabras, el cero tiene una representación única como expresión en forma normal.

En álgebra computacional, las formas normales suelen preferirse por varias razones. En primer lugar, las formas canónicas pueden ser más costosas de calcular que las formas normales. Por ejemplo, para expresar un polinomio en forma canónica, es necesario desarrollar cada producto mediante la propiedad distributiva , mientras que esto no es necesario con una forma normal (véase más adelante). En segundo lugar, como en el caso de expresiones con radicales, una forma canónica, si existe, puede depender de ciertas elecciones arbitrarias, y estas elecciones pueden ser diferentes para dos expresiones calculadas independientemente. Esto puede hacer que el uso de una forma canónica resulte poco práctico.

Historia

Álgebra computacional dirigida por humanos

Los primeros sistemas de álgebra computacional, como el ENIAC de la Universidad de Pensilvania , dependían de programadores humanos para reprogramarlo entre cálculos, manipular sus numerosos módulos físicos (o paneles) y alimentar su lector de tarjetas IBM. [ 16 ] Las matemáticas se encargaron de la mayor parte de la programación del ENIAC guiada por humanos: Jean Jennings , Marlyn Wescoff , Ruth Lichterman , Betty Snyder , Frances Bilas y Kay McNulty lideraron dichos esfuerzos. [ 17 ]

Fundaciones y solicitudes iniciales

En 1960, John McCarthy exploró una extensión de las funciones recursivas primitivas para calcular expresiones simbólicas a través del lenguaje de programación Lisp mientras estaba en el Instituto Tecnológico de Massachusetts . [ 18 ] Aunque su serie sobre "Funciones recursivas de expresiones simbólicas y su cálculo por máquina" quedó incompleta, [ 19 ] McCarthy y sus contribuciones a la programación de inteligencia artificial y al álgebra computacional a través de Lisp ayudaron a establecer el Proyecto MAC en el Instituto Tecnológico de Massachusetts y la organización que más tarde se convirtió en el Laboratorio de IA de Stanford (SAIL) en la Universidad de Stanford , cuya competencia facilitó un desarrollo significativo en el álgebra computacional a lo largo de finales del siglo XX.

Los primeros intentos de computación simbólica, en las décadas de 1960 y 1970, enfrentaron desafíos relacionados con la ineficiencia de algoritmos conocidos desde hace mucho tiempo al ser adaptados a sistemas de álgebra computacional. [ 20 ] Los predecesores del Proyecto MAC, como ALTRAN , buscaron superar las limitaciones algorítmicas mediante avances en hardware e intérpretes, mientras que los esfuerzos posteriores se centraron en la optimización del software. [ 21 ]

Problemas históricos

Gran parte del trabajo de los investigadores en este campo consistió en revisar el álgebra clásica para aumentar su efectividad , al tiempo que desarrollaban algoritmos eficientes para su uso en álgebra computacional. Un ejemplo de este tipo de trabajo es el cálculo del máximo común divisor de polinomios , una tarea necesaria para simplificar fracciones y un componente esencial del álgebra computacional. Los algoritmos clásicos para este cálculo, como el algoritmo de Euclides , resultaron ineficientes en campos infinitos; los algoritmos del álgebra lineal enfrentaron dificultades similares. [ 22 ] Por lo tanto, los investigadores recurrieron al descubrimiento de métodos para reducir polinomios (como aquellos sobre un anillo de enteros o un dominio de factorización única ) a una variante computable eficientemente mediante un algoritmo euclidiano.

Algoritmos utilizados en álgebra computacional

Véase también

Referencias

  1. "Asociación ACM en álgebra computacional" .
  2. Watt, Stephen M. (2006). Haciendo que el álgebra computacional sea más simbólica (Ponencia invitada) (PDF) . Transgressive Computing 2006: Conferencia en honor a Jean Della Dora (TC 2006). pp. 43–49 . ISBN  9788468983813OCLC 496720771 
  3. Sitio web oficial de SIGSAM
  4. "Lista de conferencias de SIGSAM" . Archivado del original el 8 de agosto de 2013. Consultado el 15 de noviembre de 2012 .
  5. Cohen, Joel S. (2003). Álgebra computacional y computación simbólica: métodos matemáticos . AK Peters. pág . 14. ISBN  978-1-56881-159-8.
  6. Lista de revistas de SIGSAM
  7. "Lección 12: Funciones racionales y conversiones — Introducción a la computación simbólica 1.7.6 documentación" . homepages.math.uic.edu . Consultado el 31 de marzo de 2024 .
  8. Neut, Sylvain; Petitot, Michel; Dridi, Raouf (1 de marzo de 2009). "La visión geométrica de Élie Cartan o cómo evitar la sobreexpresión" . Journal of Symbolic Computation . Resolución de sistemas polinomiales en honor a Daniel Lazard. 44 (3): 261–270 . doi : 10.1016/j.jsc.2007.04.006 . ISSN 0747-7171 . 
  9. Richard Liska Expresión swell , de "Peculiaridades de la programación en sistemas de álgebra computacional"
  10. "El núcleo de Mathematica: problemas en el diseño y la implementación" . Octubre de 2006. Consultado el 29 de noviembre de 2023.
  11. "La biblioteca de precisión múltiple (GMP) de GNU" . Maplesoft . Consultado el 29 de noviembre de 2023.
  12. Cassidy, Kevin G. (dic. 1985). La viabilidad de la recuperación automática de almacenamiento con ejecución concurrente de programas en un entorno LISP (PDF) (tesis de maestría). Escuela Naval de Posgrado, Monterey/CA. pág. 15. ADA165184. 
  13. Manual de referencia de sistemas y matemáticas de Macsyma (PDF) . Macsyma . 1996. pág. 419. 
  14. Buchberger, Bruno; Loos, Rüdiger (1983). «Simplificación algebraica» (PDF) . En Buchberger, Bruno; Collins, George Edwin; Loos, Rüdiger; Albrecht, Rudolf (eds.). Álgebra informática: computación simbólica y algebraica . Suplementos de informática. vol. 4. págs. 11– 43. doi : 10.1007/978-3-7091-7551-4_2 . ISBN   978-3-211-81776-6.
  15. ^ Davenport, JH; Siret, Y.; Tournier, É. (1988). Álgebra informática: sistemas y algoritmos para la computación algebraica . Académico. ISBN 0-12-204230-1OCLC 802584470 
  16. "ENIAC en acción: qué era y cómo funcionaba" . ENIAC: Celebrando la historia de la ingeniería de Penn . Universidad de Pensilvania. Consultado el 3 de diciembre de 2023.
  17. Light, Jennifer S. (1999). "Cuando las computadoras eran mujeres" . Tecnología y cultura . 40 (3): 455– 483. doi : 10.1353/tech.1999.0128 . ISSN 1097-3729 . 
  18. McCarthy, John (1960-04-01). "Funciones recursivas de expresiones simbólicas y su cálculo por máquina, Parte I" . Communications of the ACM . 3 (4): 184– 195. doi : 10.1145/367177.367199 . ISSN 0001-0782 . 
  19. Wexelblat, Richard L. (1981). Historia de los lenguajes de programación . Serie de monografías de la ACM. Conferencia sobre la historia de los lenguajes de programación, Asociación para la Maquinaria de Computación. Nueva York, Londres, Toronto: Academic Press. ISBN 978-0-12-745040-7.
  20. "Computación simbólica (Un editorial)" . Journal of Symbolic Computation . 1 (1): 1– 6. 1985-03-01. doi : 10.1016/S0747-7171(85)80025-0 . ISSN 0747-7171 . 
  21. Feldman, Stuart I. (1975-11-01). "Una breve descripción de Altran" . Boletín ACM SIGSAM . 9 (4): 12– 20. doi : 10.1145/1088322.1088325 . ISSN 0163-5824 . 
  22. Kaltofen, E. (1983), "Factorización de polinomios" , en Buchberger, Bruno; Collins, George Edwin; Loos, Rüdiger; Albrecht, Rudolf (eds.), Álgebra informática , Computing Supplementa, vol. 4, Viena: Springer Viena, págs. 95-113 , doi : 10.1007/978-3-7091-7551-4_8 , ISBN   978-3-211-81776-6, consultado el 29/11/2023

Lecturas adicionales

Para una definición detallada del tema:

Para libros de texto dedicados a la materia:

  • Davenport, James H.; Siret, Yvon; Tournier, Èvelyne (1988). Álgebra computacional: sistemas y algoritmos para la computación algebraica . Traducido del francés por A. Davenport y JH Davenport. Academic Press. ISBN 978-0-12-204230-0.
  • von zur Gathen, Joachim; Gerhard, Jürgen (2003). Álgebra informática moderna (2ª  ed.). Prensa de la Universidad de Cambridge. ISBN 0-521-82646-2.
  • Geddes, KO; Czapor, SR; Labahn, G. (1992). Algoritmos para álgebra computacional . Bibcode : 1992afca.book.....G . doi : 10.1007/b102438 . ISBN 978-0-7923-9259-0.
  • Buchberger, Bruno; Collins, George Edwin; Loos, Rüdiger; Albrecht, Rudolf, eds. (1983). Álgebra informática: computación simbólica y algebraica . Suplementos de informática. vol.  4.doi : 10.1007 /978-3-7091-7551-4 . ISBN 978-3-211-81776-6. S2CID 5221892 .