Algoritmul Risch este un algoritm pentru calculul analitic al integralelor nedefinite folosind metodele algebrei diferențiale . Se bazează pe tipul funcției integrabile și pe metode de integrare a funcțiilor raționale , rădăcini, logaritmi și funcții exponențiale .
Numit după Robert Henry Risch . Risch însuși, care a dezvoltat algoritmul în 1968, l-a numit „procedură de rezolvare”, deoarece metoda decide dacă antiderivata unei funcții este o funcție elementară . Cel mai detaliat studiu al algoritmului este prezentat în cartea de 100 de pagini Computer Algebra Algorithms de Keith Geddes, Stefan Tzapor și George Laban.
Algoritmul Risch integrează funcții elementare . Laplace a rezolvat această problemă pentru funcțiile raționale arătând că integrala nedefinită a unei funcții raționale este ea însăși o funcție rațională cu un număr finit de constante înmulțit cu logaritmii funcțiilor raționale. A fost implementat în software la începutul anilor 1960.
Liouville a formulat problema rezolvată în algoritmul Risch. El a demonstrat analitic că, dacă există o soluție elementară g pentru ecuație , atunci pentru constante și funcții elementare și soluția există sub forma
Rish a creat o metodă care ne permite să luăm în considerare doar un set finit de funcții elementare în forma Liouville.
Algoritmul Risch a fost inspirat de comportamentul funcțiilor exponențiale și logaritmice în timpul diferențierii.
Pentru o funcție f e g , unde f și g sunt diferențiabile , avem
deci dacă funcția e g este conținută ca urmare a integrării nedefinite, ea trebuie inclusă și în integrandul original. La fel, pentru că
dacă (ln g ) n este conținută în rezultatul integrării, atunci integrandul original trebuie să conțină mai multe puteri ale logaritmului.
Găsirea antiderivatului elementar este foarte sensibilă la modificări minore. De exemplu, următoarea funcție are o antiderivată elementară:
și anume:
Dar dacă în expresia f ( x ) schimbăm 71 în 72, atunci va fi imposibil să găsim o antiderivată elementară. (Unele sisteme de algebră computerizată pot returna, în acest caz, răspunsul ca o funcție neelementară , integrala eliptică , care, totuși, nu este acoperită de algoritmul Risch.)
Următoarele funcții sunt exemple mai complexe:
Antiderivatul acestei funcții are o formă scurtă
Implementarea software eficientă a algoritmului construit teoretic s-a dovedit a fi o sarcină dificilă. În cazul funcțiilor transcendentale pure (fără rădăcini și polinoame), acest lucru a fost relativ ușor de implementat în majoritatea sistemelor de algebră computerizată. [unu]
Cazul funcțiilor algebrice pure a fost rezolvat și implementat în sistemul Reduce de James Davenport [2] [3] . Cazul general a fost rezolvat și implementat de Manuel Bronstein în Scratchpad (predecesorul sistemului Axiom ) [4] .
Algoritmul Risch aplicat în cazul general al funcțiilor elementare nu este un algoritm în sens strict, deoarece în cursul activității sale trebuie să determine dacă unele expresii sunt identice cu zero ( problema constantelor ). Pentru expresiile ale căror funcții sunt elementare, nu se știe dacă există un algoritm care să facă o astfel de verificare (sistemele moderne folosesc euristica ). Mai mult, dacă la lista funcțiilor elementare se adaugă o valoare absolută , un astfel de algoritm nu există ( teorema lui Richardson ). Această problemă există și în împărțirea polinoamelor pe o coloană : nu va fi rezolvabilă dacă este imposibil să se determine egalitatea coeficienților la zero.
Aproape fiecare algoritm non-trivial care utilizează polinoame folosește un algoritm de divizare polinomială, la fel ca și algoritmul Risch. Dacă câmpul constantelor este calculabil, atunci problema egalității la zero este rezolvabilă, atunci algoritmul Risch este complet. Exemple de câmpuri constante calculabile sunt și .
Aceeași problemă există și în metoda Gauss , care este necesară și pentru multe părți ale algoritmului Risch. Metoda Gaussiană va da un rezultat incorect dacă este imposibil să se determine corect dacă baza va fi identică cu zero.