b'\n_START_ARTICLE_\nC\xc3\xa1lculo simb\xc3\xb3lico\n_START_PARAGRAPH_\nEn matem\xc3\xa1ticas y ciencias de la computaci\xc3\xb3n, el c\xc3\xa1lculo simb\xc3\xb3lico, tambi\xc3\xa9n conocido como c\xc3\xa1lculo algebraico o \xc3\xa1lgebra computacional, es un \xc3\xa1rea cient\xc3\xadfica que se refiere al estudio y desarrollo de algoritmos y software para la manipulaci\xc3\xb3n de expresiones matem\xc3\xa1ticas y otros objetos matem\xc3\xa1ticos. Aunque, hablando con propiedad, el \xc3\xa1lgebra computacional debe ser un sub-campo de la computaci\xc3\xb3n cient\xc3\xadfica, ellos son considerados generalmente como campos distintos, porque la computaci\xc3\xb3n cient\xc3\xadfica se basa generalmente en el an\xc3\xa1lisis num\xc3\xa9rico con n\xc3\xbameros aproximados en punto flotante; mientras que, el \xc3\xa1lgebra computacional enfatiza el c\xc3\xa1lculo exacto con expresiones que contengan variables que no tienen cualquier valor dado y por lo tanto son manipulados como s\xc3\xadmbolos (de ah\xc3\xad se debe el nombre de c\xc3\xa1lculo simb\xc3\xb3lico)._NEWLINE_Las aplicaciones de software que realizan c\xc3\xa1lculos simb\xc3\xb3licos son conocidos como sistemas de \xc3\xa1lgebra computacional, con el t\xc3\xa9rmino sistema aludiendo a la complejidad de las principales aplicaciones que incluyen, al menos, un m\xc3\xa9todo para representar los datos matem\xc3\xa1ticos en una computadora, un lenguaje de programaci\xc3\xb3n de usuario (por lo general diferente del lenguaje usado para la ejecuci\xc3\xb3n), un administrador de memoria, una interfaz de usuario para la entrada/salida de expresiones matem\xc3\xa1ticas, un gran conjunto de subrutinas para realizar operaciones usuales, como la simplificaci\xc3\xb3n de expresiones, la regla de la cadena utilizando diferenciaci\xc3\xb3n, factorizaci\xc3\xb3n de polinomios, integraci\xc3\xb3n indefinida, etc._NEWLINE_En los comienzos del \xc3\xa1lgebra computacional, alrededor de 1970, cuando los algoritmos cl\xc3\xa1sicos fueron puestos por primera vez en los ordenadores, resultaron ser altamente ineficientes.\xe2\x80\x8b Por lo tanto, una gran parte de la labor de los investigadores en el campo consisti\xc3\xb3 en revisar el \xc3\xa1lgebra cl\xc3\xa1sica con el fin de hacerla m\xc3\xa1s computable y descubrir algoritmos eficientes que implementen esta eficacia. Un ejemplo t\xc3\xadpico de este tipo de trabajo es el c\xc3\xa1lculo del m\xc3\xa1ximo com\xc3\xban divisor de polinomios, que se requiere para simplificar fracciones. Casi todo en este art\xc3\xadculo, que est\xc3\xa1 detr\xc3\xa1s del algoritmo cl\xc3\xa1sico de Euclides, ha sido introducido por la necesidad del \xc3\xa1lgebra computacional._NEWLINE_El \xc3\xa1lgebra computacional es ampliamente utilizado para experimentar en matem\xc3\xa1tica y dise\xc3\xb1ar las f\xc3\xb3rmulas que se utilizan en los programas num\xc3\xa9ricos. Tambi\xc3\xa9n se usa para c\xc3\xa1lculos cient\xc3\xadficos completos, cuando los m\xc3\xa9todos puramente num\xc3\xa9ricos fallan, como en la criptograf\xc3\xada asim\xc3\xa9trica o para algunos problemas no lineales.\n_START_SECTION_\nTerminolog\xc3\xada\n_START_PARAGRAPH_\nAlgunos autores distinguen \xc3\xa1lgebra computacional de c\xc3\xa1lculo simb\xc3\xb3lico usando el \xc3\xbaltimo nombre para hacer referencia a las clases de computaci\xc3\xb3n simb\xc3\xb3lica que no sean el c\xc3\xa1lculo con f\xc3\xb3rmulas matem\xc3\xa1ticas. Algunos autores utilizan la computaci\xc3\xb3n simb\xc3\xb3lica para la materia en el aspecto de ciencias de la computaci\xc3\xb3n y "\xc3\xa1lgebra computacional" para el aspecto matem\xc3\xa1tico.\xe2\x80\x8b En algunos idiomas el nombre del campo no es una traducci\xc3\xb3n directa de su nombre en ingl\xc3\xa9s. Por lo general, se le llama calcul formel en Franc\xc3\xa9s, que significa "c\xc3\xa1lculo formal"._NEWLINE_El c\xc3\xa1lculo simb\xc3\xb3lico tambi\xc3\xa9n ha sido referido, en el pasado, como manipulaci\xc3\xb3n simb\xc3\xb3lica, manipulaci\xc3\xb3n algebraica, procesamiento simb\xc3\xb3lico, matem\xc3\xa1tica simb\xc3\xb3lica, o \xc3\xa1lgebra simb\xc3\xb3lica; pero estos t\xc3\xa9rminos, que tambi\xc3\xa9n se refieren a la manipulaci\xc3\xb3n no computacional, no est\xc3\xa1n m\xc3\xa1s en uso para referirse al \xc3\xa1lgebra computacional.\n_START_SECTION_\nComunidad cient\xc3\xadfica\n_START_PARAGRAPH_\nNo existe una sociedad cient\xc3\xadfica que sea espec\xc3\xadfica del \xc3\xa1lgebra computacional, pero esta funci\xc3\xb3n es asumida por el grupo de inter\xc3\xa9s especial de la ACM llamada SIGSAM (Special Interest Group_NEWLINE_on Symbolic and Algebraic Manipulation).\xe2\x80\x8b_NEWLINE_Hay varias conferencias anuales sobre \xc3\xa1lgebra computacional, siendo el premier ISSAC (International Symposium on Symbolic and Algebraic Computation), el cual es patrocinado regularmente por SIGSAM.\xe2\x80\x8b_NEWLINE_Hay varias revistas especializadas en el \xc3\xa1lgebra computacional, siendo Journal of Symbolic Computation fundada en 1985 por Bruno Buchberger, una de las principales.\xe2\x80\x8b Hay tambi\xc3\xa9n otras varias revistas que publican regularmente art\xc3\xadculos de \xc3\xa1lgebra computacional.\xe2\x80\x8b\n_START_SECTION_\nRepresentaci\xc3\xb3n de datos\n_START_PARAGRAPH_\nComo software num\xc3\xa9rico son altamente eficientes para el an\xc3\xa1lisis num\xc3\xa9rico aproximado; es com\xc3\xban, en \xc3\xa1lgebra computacional, para enfatizar en el c\xc3\xa1lculo exacto de los datos exactamente representados. Tal como una representaci\xc3\xb3n exacta, implica que, incluso cuando el tama\xc3\xb1o de la salida es peque\xc3\xb1o, entonces los datos intermedios que son generados durante un c\xc3\xa1lculo pueden crecer de un modo impredecible. Este comportamiento se denomina desbordamiento de la expresi\xc3\xb3n. Para obviar este problema, se utilizan diversos m\xc3\xa9todos en la representaci\xc3\xb3n de los datos, as\xc3\xad como en los algoritmos que los manipulan.\n_START_SECTION_\nN\xc3\xbameros\n_START_PARAGRAPH_\nLos sistemas de n\xc3\xbameros habituales utilizados en el an\xc3\xa1lisis num\xc3\xa9rico son o bien los n\xc3\xbameros de punto flotante o los n\xc3\xbameros enteros de un tama\xc3\xb1o acotado fijo, que est\xc3\xa1n inadecuadamente llamados enteros por la mayor\xc3\xada de los lenguajes de programaci\xc3\xb3n. Ninguno es conveniente para el \xc3\xa1lgebra computacional, debido al desbordamiento de la expresi\xc3\xb3n._NEWLINE_Por lo tanto, los n\xc3\xbameros b\xc3\xa1sicos en \xc3\xa1lgebra computacional son los n\xc3\xbameros enteros de los matem\xc3\xa1ticos, com\xc3\xbanmente representados por una se\xc3\xb1alizada secuencia ilimitada de d\xc3\xadgitos en alguna base de numeraci\xc3\xb3n, por lo general la base m\xc3\xa1s grande permitida por la palabra de la m\xc3\xa1quina. Estos n\xc3\xbameros enteros permiten definir los n\xc3\xbameros racionales, que son fracciones irreducibles de dos n\xc3\xbameros enteros._NEWLINE_La programaci\xc3\xb3n de una aplicaci\xc3\xb3n eficaz de las operaciones aritm\xc3\xa9ticas es una tarea dif\xc3\xadcil. Por lo tanto, la mayor\xc3\xada de los sistemas de \xc3\xa1lgebra computacional libres y algunos comerciales, como Maple (software), utilizan la biblioteca GMP; el cual es por lo tanto un est\xc3\xa1ndar de facto.\n_START_SECTION_\nExpresiones\n_START_PARAGRAPH_\nExcepto para los n\xc3\xbameros y variables, cada expresi\xc3\xb3n matem\xc3\xa1tica puede ser vista como el s\xc3\xadmbolo de un operador seguido por una secuencia de operandos. En el software del \xc3\xa1lgebra computacional, las expresiones se suelen representar de esta manera. Esta representaci\xc3\xb3n es muy flexible, y muchas cosas, que no parecen ser expresiones matem\xc3\xa1ticas a primera vista, pueden ser representadas y manipuladas como tal. Por ejemplo, una ecuaci\xc3\xb3n es una expresi\xc3\xb3n con "=" como un operador, una matriz puede ser representada como una expresi\xc3\xb3n con "matriz" como un operador y sus filas como operandos._NEWLINE_Incluso los programas pueden ser considerados y representados como expresiones con el operador "procedimiento" y, al menos, dos operandos; la lista de par\xc3\xa1metros y el cuerpo, que son en s\xc3\xad mismos una expresi\xc3\xb3n con "cuerpo" como un operador y una secuencia de instrucciones como operandos. A la inversa, cualquier expresi\xc3\xb3n matem\xc3\xa1tica puede ser vista como un programa. Por ejemplo, la expresi\xc3\xb3n a + b puede ser vista como un programa para la adici\xc3\xb3n, con a y b como par\xc3\xa1metros. La ejecuci\xc3\xb3n de este programa consiste en la evaluaci\xc3\xb3n de la expresi\xc3\xb3n para valores dados de a y b, y si no tienen ning\xc3\xban valor - o sea, que son indeterminados -, el resultado de la evaluaci\xc3\xb3n es simplemente su entrada._NEWLINE_Este proceso de evaluaci\xc3\xb3n diferida es fundamental en el \xc3\xa1lgebra computacional. Por ejemplo, el operador "=" de las ecuaciones es tambi\xc3\xa9n, en la mayor\xc3\xada de los sistemas del \xc3\xa1lgebra computacional, el nombre del programa de la prueba de igualdad: normalmente, la evaluaci\xc3\xb3n de una ecuaci\xc3\xb3n representa una ecuaci\xc3\xb3n, pero, cuando se necesita una prueba de igualdad, - ya sea preguntado expl\xc3\xadcitamente por el usuario a trav\xc3\xa9s de una "evaluaci\xc3\xb3n de un booleano" de comandos, o autom\xc3\xa1ticamente iniciado por el sistema en el caso de una prueba dentro de un programa -, entonces la evaluaci\xc3\xb3n de un booleano 0 o 1 se ejecuta._NEWLINE_A medida que el tama\xc3\xb1o de los operandos de una expresi\xc3\xb3n es impredecible y puede cambiar durante una sesi\xc3\xb3n de trabajo, la secuencia de los operandos se suele representar como una secuencia de punteros (como en Macsyma) o como ingresos de una tabla hash (como en Maple).\n_START_SECTION_\nSimplificaci\xc3\xb3n\n_START_PARAGRAPH_\nLa aplicaci\xc3\xb3n cruda de las reglas b\xc3\xa1sicas de derivaci\xc3\xb3n con respecto a x en la expresi\xc3\xb3n  da el resultado . Tal horrible expresi\xc3\xb3n no es aceptable claramente, y es necesario un procedimiento de simplificaci\xc3\xb3n tan pronto como se trabaja con expresiones generales._NEWLINE_Esta simplificaci\xc3\xb3n se realiza normalmente a trav\xc3\xa9s de reglas de reescritura. Hay varias clases de reglas de reescritura que deben ser consideradas. La m\xc3\xa1s simple consiste en las reglas de reescritura que siempre reducen el tama\xc3\xb1o de la expresi\xc3\xb3n, como E \xe2\x86\x92 0 o sin(0) \xe2\x86\x92 0. Se aplican de forma sistem\xc3\xa1tica en los sistemas del \xc3\xa1lgebra computacional._NEWLINE_La primera dificultad se presenta con operaciones asociativas como la suma y la multiplicaci\xc3\xb3n. La forma est\xc3\xa1ndar de tratar con la asociatividad es considerar que la adici\xc3\xb3n y multiplicaci\xc3\xb3n tienen un n\xc3\xbamero arbitrario de operandos, o sea, a + b + c se representa como "+"(a, b, c). \xc2\xbfQu\xc3\xa9 pasa con a - b + c? Para hacer frente a este problema, la forma m\xc3\xa1s sencilla es volver a escribir de manera sistem\xc3\xa1tica -E, E-F, E/F como (-1)\xe2\x8b\x85E, E + (-1)\xe2\x8b\x85F, E\xe2\x8b\x85F\xe2\x81\xbb\xc2\xb9 respectivamente. En otras palabras, en la representaci\xc3\xb3n interna de la expresi\xc3\xb3n, no hay ninguna resta ni divisi\xc3\xb3n ni menos unario, fuera de la representaci\xc3\xb3n de los n\xc3\xbameros._NEWLINE_Una segunda dificultad se produce con la conmutatividad de la suma y la multiplicaci\xc3\xb3n. El problema es reconocer r\xc3\xa1pidamente los t\xc3\xa9rminos con el fin de combinarlos o cancelarlos. De hecho, el m\xc3\xa9todo para la b\xc3\xbasqueda de t\xc3\xa9rminos semejantes, que consiste en la prueba de cada par de t\xc3\xa9rminos, es demasiado costoso para ser factible con sumas y productos muy largos. Para resolver este problema, Macsyma ordena los operandos de sumas y productos con una funci\xc3\xb3n de comparaci\xc3\xb3n que se ha dise\xc3\xb1ado con el fin de que los t\xc3\xa9rminos semejantes se encuentren en lugares consecutivos, y por lo tanto f\xc3\xa1ciles de detectar. En Maple, la funci\xc3\xb3n hash est\xc3\xa1 dise\xc3\xb1ada para generar colisiones cuando se introducen t\xc3\xa9rminos semejantes, permitiendo unirlos entre ellos tan pronto como se introducen. Este dise\xc3\xb1o de la funci\xc3\xb3n hash permite tambi\xc3\xa9n reconocer inmediatamente las expresiones de subexpresiones que aparecen varias veces en un c\xc3\xa1lculo y almacenarlas s\xc3\xb3lo una vez. Esto permite no s\xc3\xb3lo ahorrar algo de espacio en la memoria, sino tambi\xc3\xa9n acelerar los c\xc3\xa1lculos, evitando repetir el mismo c\xc3\xa1lculo en varias expresiones id\xc3\xa9nticas._NEWLINE_Algunas reglas de reescritura a veces aumentan el tama\xc3\xb1o de las expresiones a las que se aplican y algunas veces las disminuyen. Este es el caso de la distributividad o identidades trigonom\xc3\xa9tricas. Por ejemplo la ley distributiva permite reescribir  y . Como no hay manera de hacer una buena elecci\xc3\xb3n general de aplicar o no una norma como la reescritura, tales reescrituras se realiza s\xc3\xb3lo cuando se les pregunta expl\xc3\xadcitamente por el usuario. Para la propiedad distributiva, la funci\xc3\xb3n computacional que aplica esta regla de reescritura es generalmente llamada "ampliar". La regla de reescritura inversa, denominada "factor", requiere de un algoritmo no trivial, que es por lo tanto una funci\xc3\xb3n clave en sistemas de \xc3\xa1lgebra computacional (ver factorizaci\xc3\xb3n polin\xc3\xb3mica).\n_START_SECTION_\nAspectos matem\xc3\xa1ticos\n_START_PARAGRAPH_\nEn esta secci\xc3\xb3n se consideran algunas cuestiones matem\xc3\xa1ticas fundamentales que plantean en cu\xc3\xa1nto uno quiere manipular expresiones matem\xc3\xa1ticas en un ordenador. Consideramos principalmente el caso de las fracciones racionales multivariantes. Esto no es una restricci\xc3\xb3n real, porque, tan pronto como las funciones irracionales que aparecen en una expresi\xc3\xb3n se simplifican, son generalmente considerados como nuevos indeterminados. Por ejemplo  es visto como un polinomio en  y .\n_START_SECTION_\nIgualdad\n_START_PARAGRAPH_\nHay dos nociones de igualdad de expresiones matem\xc3\xa1ticas. La igualdad sint\xc3\xa1ctica es la igualdad de las expresiones que significa que se escriben (o representan en una computadora) de la misma manera. Como es trivial, es raramente considerado por los matem\xc3\xa1ticos, pero es la \xc3\xbanica igualdad que es f\xc3\xa1cil de probar con un programa. La igualdad sem\xc3\xa1ntica es cuando dos expresiones representan el mismo objeto matem\xc3\xa1tico , como en ._NEWLINE_Se sabe que no puede existir un algoritmo que decide si dos expresiones que representan n\xc3\xbameros son sem\xc3\xa1nticamente iguales, si el exponente y los logaritmos se permiten en las expresiones. Por lo tanto (sem\xc3\xa1nticamente) la igualdad puede ser probada s\xc3\xb3lo en algunas clases de expresiones tales como los polinomios y las fracciones racionales._NEWLINE_Para probar la igualdad de dos expresiones, en lugar de dise\xc3\xb1ar un algoritmo espec\xc3\xadfico, es habitual ponerlos en alguna forma can\xc3\xb3nica o poner su diferencia en una forma normal y probar la igualdad sint\xc3\xa1ctica del resultado._NEWLINE_A diferencia de la matem\xc3\xa1tica habitual, "forma can\xc3\xb3nica" y "forma normal" no son sin\xc3\xb3nimos en el \xc3\xa1lgebra computacional. Una forma can\xc3\xb3nica es aquella en la que dos expresiones en forma can\xc3\xb3nica son sem\xc3\xa1nticamente iguales si y s\xc3\xb3lo si son sint\xc3\xa1cticamente iguales, mientras que una forma normal es aquella en la que una expresi\xc3\xb3n en forma normal es sem\xc3\xa1nticamente cero s\xc3\xb3lo si es sint\xc3\xa1cticamente cero. En otras palabras, cero tiene una \xc3\xbanica representaci\xc3\xb3n de expresiones en forma normal._NEWLINE_Las formas normales son generalmente preferidas en \xc3\xa1lgebra computacional por varias razones. En primer lugar, las formas can\xc3\xb3nicas pueden ser m\xc3\xa1s costosa de calcular que las formas normales. Por ejemplo, para poner un polinomio en forma can\xc3\xb3nica, se tiene que ampliar por distributividad cada producto, si bien no es necesario, con una forma normal (v\xc3\xa9ase m\xc3\xa1s adelante). En segundo lugar, puede ser el caso, como por expresiones con radicales, que una forma can\xc3\xb3nica, si existe, depende de algunas decisiones arbitrarias y que estas opciones pueden ser diferentes para dos expresiones que han sido calculadas de forma independiente. Esto puede hacer impracticable el uso de una forma can\xc3\xb3nica.\n_START_SECTION_\nForma normal de las fracciones racionales\n_START_PARAGRAPH_\nEn esta secci\xc3\xb3n, se describe una forma normal de uso frecuente para las fracciones racionales multivariantes.'