El algoritmo de Risch es un algoritmo para el cálculo analítico de integrales indefinidas utilizando los métodos del álgebra diferencial . Se basa en el tipo de función integrable y en métodos para integrar funciones racionales , raíces, logaritmos y funciones exponenciales .
El nombre de Robert Henry Risch . El mismo Risch, quien desarrolló el algoritmo en 1968, lo llamó "procedimiento de resolución" porque el método decide si la antiderivada de una función es una función elemental . El estudio más detallado del algoritmo se presenta en el libro de 100 páginas Computer Algebra Algorithms de Keith Geddes, Stefan Tzapor y George Laban.
El algoritmo de Risch integra funciones elementales . Laplace resolvió este problema para funciones racionales mostrando que la integral indefinida de una función racional es en sí misma una función racional con un número finito de constantes multiplicadas por los logaritmos de las funciones racionales. Se implementó en el software a principios de la década de 1960.
Liouville formuló el problema resuelto en el algoritmo de Risch. Demostró analíticamente que si hay una solución elemental g para la ecuación , entonces para constantes y funciones elementales y la solución existe en la forma
Rish creó un método que nos permite considerar solo un conjunto finito de funciones elementales en la forma de Liouville.
El algoritmo de Risch se inspiró en el comportamiento de las funciones exponenciales y logarítmicas durante la diferenciación.
Para una función f e g , donde f y g son derivables , tenemos
por tanto, si la función e g está contenida como resultado de una integración indefinida, también debe estar incluida en el integrando original. Así mismo, porque
si (ln g ) n está contenido en el resultado de la integración, entonces el integrando original debe contener varias potencias del logaritmo.
Encontrar la antiderivada elemental es muy sensible a cambios menores. Por ejemplo, la siguiente función tiene una antiderivada elemental:
a saber:
Pero si en la expresión f ( x ) cambiamos 71 a 72, entonces será imposible encontrar una antiderivada elemental. (Algunos sistemas de álgebra computacional pueden, en este caso, devolver la respuesta como una función no elemental , la integral elíptica , que, sin embargo, no está cubierta por el algoritmo de Risch).
Las siguientes funciones son ejemplos más complejos:
La antiderivada de esta función tiene una forma abreviada
La implementación eficiente del software del algoritmo construido teóricamente resultó ser una tarea difícil. En el caso de funciones trascendentales puras (sin raíces ni polinomios), esto fue relativamente fácil de implementar en la mayoría de los sistemas de álgebra computacional. [una]
El caso de las funciones algebraicas puras fue resuelto e implementado en el sistema Reduce por James Davenport [2] [3] . El caso general fue resuelto e implementado por Manuel Bronstein en Scratchpad (predecesor del sistema Axiom ) [4] .
El algoritmo de Risch aplicado al caso general de funciones elementales no es un algoritmo en sentido estricto, porque en el curso de su trabajo necesita determinar si algunas expresiones son idénticas a cero ( el problema de las constantes ). Para expresiones cuyas funciones son elementales, no se sabe si existe un algoritmo que haga tal verificación (los sistemas modernos usan heurística ). Además, si se agrega un valor absoluto a la lista de funciones elementales , tal algoritmo no existe ( teorema de Richardson ). Este problema también existe en la división de polinomios por una columna : no será solucionable si es imposible determinar la igualdad de los coeficientes a cero.
Casi todos los algoritmos no triviales que usan polinomios usan un algoritmo de división de polinomios, al igual que el algoritmo de Risch. Si el campo de constantes es computable, entonces el problema de igualdad a cero es solucionable, entonces el algoritmo de Risch está completo. Ejemplos de campos constantes computables son y .
El mismo problema existe en el método de Gauss , que también es necesario para muchas partes del algoritmo de Risch. El método gaussiano dará un resultado incorrecto si es imposible determinar correctamente si la base será idéntica a cero.