Risch- algoritmen är en algoritm för analytisk beräkning av obestämda integraler med metoder för differentialalgebra . Den är baserad på typen av den integrerbara funktionen och på metoder för att integrera rationella funktioner , rötter, logaritmer och exponentialfunktioner .
Uppkallad efter Robert Henry Risch . Risch själv, som utvecklade algoritmen 1968, kallade den en "upplösningsprocedur" eftersom metoden avgör om antiderivatan av en funktion är en elementär funktion. Den mest detaljerade studien av algoritmen presenteras i boken Computer Algebra Algorithms på 100 sidor av Keith Geddes, Stefan Tzapor och George Laban.
Risch-algoritmen integrerar elementära funktioner . Laplace löste detta problem för rationella funktioner genom att visa att den obestämda integralen av en rationell funktion i sig är en rationell funktion med ett ändligt antal konstanter multiplicerat med logaritmerna för de rationella funktionerna. Det implementerades i mjukvara i början av 1960-talet.
Liouville formulerade problemet löst i Risch-algoritmen. Han bevisade analytiskt att om det finns en elementär lösning g för ekvationen , då för konstanter och elementära funktioner och lösningen existerar i formen
Rish skapade en metod som tillåter oss att endast överväga en ändlig uppsättning elementära funktioner i Liouville-formen.
Risch-algoritmen inspirerades av beteendet hos exponentiella och logaritmiska funktioner under differentiering.
För en funktion f e g , där f och g är differentierbara , har vi
så om funktionen e g finns som ett resultat av obestämd integration måste den också inkluderas i den ursprungliga integranden. Likaså sedan
om (lng ) n ingår i integrationsresultatet, måste den ursprungliga integranden innehålla flera potenser av logaritmen.
Att hitta det elementära antiderivatet är mycket känsligt för mindre förändringar. Till exempel har följande funktion en elementär antiderivata:
nämligen:
Men om vi i uttrycket f ( x ) ändrar 71 till 72, kommer det att vara omöjligt att hitta en elementär antiderivata. (Vissa datoralgebrasystem kan i detta fall returnera svaret som en icke-elementär funktion , den elliptiska integralen , som dock inte täcks av Risch-algoritmen.)
Följande funktioner är mer komplexa exempel:
Antiderivatet av denna funktion har en kort form
Effektiv mjukvaruimplementering av den teoretiskt uppbyggda algoritmen visade sig vara en svår uppgift. När det gäller rena transcendentala funktioner (utan rötter och polynom) var detta relativt enkelt att implementera i de flesta datoralgebrasystem. [ett]
Fallet med rena algebraiska funktioner löstes och implementerades i Reduce- systemet av James Davenport [2] [3] . Det allmänna fallet löstes och implementerades av Manuel Bronstein i Scratchpad (föregångaren till Axiom- systemet ) [4] .
Risch-algoritmen som tillämpas på det allmänna fallet med elementära funktioner är inte en algoritm i strikt mening, eftersom den under arbetets gång måste avgöra om vissa uttryck är identiska med noll ( problemet med konstanter ). För uttryck vars funktioner är elementära är det inte känt om det finns en algoritm som gör en sådan kontroll (moderna system använder heuristik ). Dessutom, om ett absolut värde läggs till i listan över elementära funktioner , existerar inte en sådan algoritm ( Richardsons teorem ). Detta problem finns också i divisionen av polynom med en kolumn : det kommer inte att vara lösbart om det är omöjligt att bestämma koefficienternas likhet till noll.
Nästan varje icke-trivial algoritm som använder polynom använder en polynom divisionsalgoritm, liksom Risch-algoritmen. Om konstantfältet är beräkningsbart, är problemet med lika med noll lösbart, då är Risch-algoritmen komplett. Exempel på beräkningsbara konstantfält är och .
Samma problem finns i Gauss-metoden , som också är nödvändig för många delar av Risch-algoritmen. Gaussmetoden ger ett felaktigt resultat om det är omöjligt att korrekt avgöra om basen kommer att vara identisk med noll.