Gibt es eine vollständige Implementierung des Risch-Algorithmus?
Gibt es eine allgemein verfügbare (kommerzielle oder nicht) vollständige Implementierung des Risch-Algorithmus, um festzustellen, ob eine Elementarfunktion ein Elementarantiderivativ hat?
Der Wikipedia-Artikel über symbolische Integration behauptet, dass der allgemeine Fall des Risch-Algorithmus von Manuel Bronstein in Axiom gelöst und implementiert wurde, und eine Antwort auf eine andere MO-Frage sagt dasselbe. Ich habe jedoch einige Zweifel, basierend auf dem folgenden Kommentar von Manuel Bronstein selbst in der USENET-Newsgroup sci.math.symbolicam 5. September 2003:
Wenn Axiom ein nicht bewertetes Integral zurückgibt, hat es bewiesen, dass kein elementares Antiderivativ existiert. Es gibt jedoch einige Fälle, in denen Axiom eine Fehlermeldung zurückgeben kann, die besagt, dass Sie einen nicht implementierten Zweig des Algorithmus getroffen haben. In diesem Fall kann er nicht abgeschlossen werden. Richard hat also zu Recht darauf hingewiesen, dass der Risch-Algorithmus auch dort nicht vollständig implementiert ist. Axiom ist einzigartig darin, den Unterschied zwischen nicht implementierten Zweigen und Beweisen der Nichtintegrierbarkeit zu machen und auch die algebraische Unabhängigkeit der Bausteine des Integranden vor dem Abschluss der Nichtintegrierbarkeit tatsächlich zu beweisen (andere nehmen diese Unabhängigkeit normalerweise nach Durchführung einer heuristischen Abhängigkeitsprüfung an).
Bronstein ist leider am 6. Juni 2005 verstorben . Es ist möglich, dass er die Implementierung abgeschlossen hat, bevor er starb, aber ich konnte das nicht bestätigen. Ich weiß, dass Bronstein es nie geschafft hat, sein beabsichtigtes Buch über die Integration algebraischer Funktionen fertigzustellen. [ EDIT: Als weitere Überprüfung habe ich Barry Trager eine E-Mail geschickt. Er bestätigte, dass die Implementierung, an der er und Bronstein arbeiteten, nicht vollständig war. Er wusste nicht viel über andere Implementierungen, kannte jedoch keine vollständigen Implementierungen.]
Ich habe Zugriff auf Maple 2018 und es scheint auch keine vollständige Implementierung zu haben. Ein nützlicher Testfall ist das folgende Integral, das aus dem (anscheinend unveröffentlichten) Trager-Algorithmus für die Integration algebraischer Funktionen von Daniel Schultz stammt:$$\int \frac{29x^2+18x-3}{\sqrt{x^6+4x^5+6x^4-12x^3+33x^2-16x}}\,dx$$ Schultz liefert in seiner Arbeit ausdrücklich ein elementares Antiderivativ, aber Maple 2018 gibt das Integral unbewertet zurück.
Antworten
Kein Computeralgebrasystem implementiert einen vollständigen Entscheidungsprozess für die Integration gemischter transzendentaler und algebraischer Funktionen.
Das Integral aus dem hervorragenden Papier von Schultz kann von Maple gelöst werden, wenn Sie den Integranden in die RootOf-Notation konvertieren (Warum dies in Maple nicht intern erfolgt, ist eine interessante Frage?)
int(convert((29*x^2+18*x-3)/(x^6+4*x^5+6*x^4-12*x^3+33*x^2-16*x)^(1/2),RootOf),x);
Meine Experimente legen nahe, dass Maple die beste Implementierung des Risch-Trager-Bronstein-Algorithmus für die Integration rein algebraischer Integrale in Bezug auf Elementarfunktionen hat (siehe Tabelle 1, Abschnitt 3 von Sam Blake, Eine einfache Methode zur Berechnung einiger pseudoelliptischer Integrale in Bezug auf elementare Funktionen , arXiv: 2004.04910 ). Die Implementierung von Maple integriert jedoch keine Ausdrücke, die Parameter oder verschachtelte Radikale enthalten (beide werden in AXIOM und FriCAS unterstützt).
Es scheint, dass Miller bei der Berechnung des logarithmischen Teils eines gemischten transzendental-algebraischen Integrals einige bedeutende Fortschritte erzielt hat [1]. Soweit ich weiß, hat jedoch kein Computeralgebrasystem seinen Algorithmus implementiert. Es ist auch nicht klar, ob Millers Algorithmus mit Parametern umgehen kann, zum Beispiel hat der Risch-Trager-Bronstein-Algorithmus Schwierigkeiten mit dem folgenden pseudoelliptischen Integral
$$\int\frac{\left(p x^2-q\right) \left(p x^2-x+q\right)dx}{x \left(p x^2+2 x+q\right) \sqrt{2 p^2x^4+2 p x^3+(4 p q+1) x^2+2 q x+2 q^2}} = - \frac{1}{\sqrt{2}}\log (x) + \frac{1}{\sqrt{2}}\log \left(\sqrt{2} y +2 p x^2+x+2q\right) - \frac{3}{\sqrt{5}}\tanh ^{-1}\left(\frac{\sqrt{5} y}{3 p x^2+3 q+x}\right),$$ wo $y=\sqrt{2 p^2 x^4+2 p x^3+(4 pq+1)x^2+2 q x+2 q^2}$. Meine Heuristik in dem zuvor verknüpften Artikel berechnet dieses Integral schnell mit der Substitution$u=\frac{px^2+q}{p x}$.
In Bezug auf den gemischten algebraisch-transzendentalen Fall des Risch-Trager-Bronstein-Algorithmus ist ein Integral, das mit Maple, Mathematica, AXIOM oder FriCAS (und möglicherweise anderem CAS) nicht gelöst werden kann
$$\int \frac{\left(\sqrt{x}+1\right) \left(e^{2x \sqrt{x}} -a\right) \sqrt{a^2+2 a x e^{2 \sqrt{x}} +cx e^{2 \sqrt{x}} +x^2 e^{4 \sqrt{x}}}}{x \sqrt{x}e^{\sqrt{x}} \left(a+x e^{2 \sqrt{x}} \right)} dx.$$
Dieses Integral ist interessant, da es zwei unterschiedliche Nachrichten von AXIOM und FriCAS zurückgibt, die darauf hinweisen, dass ihre jeweiligen Implementierungen unvollständig sind. FriCAS kehrt zurück
(1) -> integrate(((-a+exp(2*x^(1/2))*x)*x^(-3/2)*(1+x^(1/2))*(a^2+2*a*exp(2*x^(1/2))*x+c*exp(2*x^(1/2))*x+exp(4*x^(1/2))*x^2)^(1/2))/(exp(x^(1/2))*(a+exp(2*x^(1/2))*x)),x)
>> Error detected within library code:
integrate: implementation incomplete (has polynomial part)
Während AXIOM zurückkehrt
(1) -> integrate(((-a+exp(2*x^(1/2))*x)*x^(-3/2)*(1+x^(1/2))*(a^2+2*a*exp(2*x^(1/2))*x+c*exp(2*x^(1/2))*x+exp(4*x^(1/2))*x^2)^(1/2))/(exp(x^(1/2))*(a+exp(2*x^(1/2))*x)),x)
>> Error detected within library code:
integrate: implementation incomplete (constant residues)
[1] Miller, B. (2012). " Zur Integration elementarer Funktionen: Berechnung des logarithmischen Teils ". Diplomarbeit (Ph.D.) Texas Tech University, Fakultät für Mathematik und Statistik.
Fricas , ein Open-Source-Klon von Axiom, implementiert einen beträchtlichen Teil von Rischhttp://fricas-wiki.math.uni.wroc.pl/RischImplementationStatus
Fricas ist auch als optionales Paket des Open-Source-Systems SageMath erhältlich .
Edit: hier geht es in SageMath mit Fricas als Backend.
sage: r=integrate((29*x^2+18*x-3)/(x^6+4*x^5+6*x^4-12*x^3+33*x^2-16*x)^(1/2),x,algorithm="fricas")
sage: r
log(x^29 + 40*x^28 + 776*x^27 + 9648*x^26 + 85820*x^25 + 578480*x^24 + 3058536*x^23 + 12979632*x^22 + 45004902*x^21 + 129708992*x^20 + 317208072*x^19 + 675607056*x^18 + 1288213884*x^17 + 2238714832*x^16 + 3548250712*x^15 + 5097069328*x^14 + 6677210721*x^13 + 8106250392*x^12 + 9056612528*x^11 + 8991685504*x^10 + 7944578304*x^9 + 6614046720*x^8 + 4834279424*x^7 + 2374631424*x^6 + 916848640*x^5 + 638582784*x^4 - 279969792*x^3 - 528482304*x^2 + (x^26 + 38*x^25 + 699*x^24 + 8220*x^23 + 68953*x^22 + 436794*x^21 + 2161755*x^20 + 8550024*x^19 + 27506475*x^18 + 73265978*x^17 + 165196041*x^16 + 324386076*x^15 + 570906027*x^14 + 914354726*x^13 + 1326830817*x^12 + 1731692416*x^11 + 2055647184*x^10 + 2257532160*x^9 + 2246693120*x^8 + 1939619840*x^7 + 1494073344*x^6 + 1097859072*x^5 + 640024576*x^4 + 207618048*x^3 + 95420416*x^2 + 50331648*x - 50331648)*sqrt(x^6 + 4*x^5 + 6*x^4 - 12*x^3 + 33*x^2 - 16*x) + 150994944*x - 134217728)