Was sind die effizienten und genauen Algorithmen zur Bewertung von hypergeometrischen Funktionen?


16

Ich bin neugierig zu wissen, welche guten numerischen Algorithmen für die Auswertung der generalisierten hypergeometrischen Funktion (oder Reihe) existieren, definiert als

pFq(a1,,ap;b1,,bq;z)=k=0(a1)k(ap)k(b1)k(bq)kzkk!

Im Allgemeinen wird diese Reihe nicht unbedingt sehr schnell (oder überhaupt) konvergieren, sodass es nicht ideal erscheint, die Begriffe einzeln zusammenzufassen. Gibt es eine alternative Methode, die besser funktioniert? Um genau zu sein, suche ich etwas, das 4 oder 5 Stellen Genauigkeit mit einer angemessenen Anzahl von Berechnungen ergibt.

Die häufigsten Fälle, die ich normalerweise verwende, sind und , aber in dem speziellen Projekt, an dem ich arbeite, brauche ich . Offensichtlich ist ein allgemeiner Algorithmus für jedes und ideal, aber ich nehme, was ich bekommen kann.p=1,q=1p=2,q=1p=1,q=2pq


Wenn Ihr Fall nicht in Abramowitz und Steguns Handbuch ( people.math.sfu.ca/~cbm/aands/subj.htm ) behandelt wird, was es nicht ist, sind Sie grundsätzlich dazu verdammt, es selbst herauszufinden. Ich fürchte ...
Jaime

Antworten:


15

In einer einzelnen Anwendung ist es ziemlich wahrscheinlich, dass Sie nur eine kleine Teilmenge aller möglichen Extreme der generalisierten hypergeometrischen Funktion benötigen. Immerhin ist es eine sehr allgemeine Funktion. Wenn Sie eine Vorstellung vom Bereich von und den Parametern a i , b i haben , können Sie spezifischere Ratschläge geben.zeinich,bich

Im Allgemeinen besteht die Standardmethode unter der Annahme von natürlich darin, die definierende Potenzreihe zu verwenden, wenn | z | ist klein. Wenn p < q + 1 ist , ist es am besten, auf eine asymptotische Expansion umzuschalten, wenn | z | ist groß, entweder weil die Taylor-Reihe zu langsam konvergiert und / oder weil sie aufgrund einer katastrophalen Auslöschung zu ungenau wird. Die beste Grenze zwischen diesen Algorithmen hängt von den Parametern und den Genauigkeitsanforderungen ab.pq+1|z|p<q+1|z|

Zum Die asymptotische Reihe wird vonhttp://functions.wolfram.com/HypergeometricFunctions/Hypergeometric1F2/06/02/03/ gegeben.Es sieht ziemlich schrecklich aus, aber wenn Ihre a 1 , b 1 , b 2 sind, können Sie Berechnen Sie im Voraus die numerischen Werte für die Koeffizienten. Allgemeine Formeln finden Sie im DLMF:http://dlmf.nist.gov/16.11(Beachten Sie, dass die Auswahl der richtigen Verzweigungsschnitte einige Sorgfalt erfordert.)1F2ein1,b1,b2

Wenn es einen Bereich gibt, in dem weder die Taylor-Reihe noch die asymptotische Reihe gut genug funktionieren, könnten "exponentiell verbesserte Erweiterungen" nützlich sein. Eine weitere erwähnenswerte Möglichkeit besteht darin, dass Sie die hypergeometrische Differentialgleichung einfach in einen universellen ODE-Löser einfügen können. Dies sollte ganz gut funktionieren, insbesondere wenn Sie nur 4-5 Ziffern benötigen. Dies kann verwendet werden, um eine analytische Fortsetzung von einem kleinen (bei dem die Potenzreihe gut funktioniert) zu einem größeren zu machen, oder umgekehrt zu einem Wert, der über eine asymptotische Reihe erhalten wurde (möglicherweise müssen Sie etwas mehr Arbeit leisten, um alle zu erhalten) als Ausgangswerte benötigte Derivate).z

Wenn Sie Funktionen mit auf der gesamten komplexen Ebene benötigen, können 1 / z- Transformationsformeln verwendet werden, um das Äußere der Einheitsscheibe auf das Innere abzubilden. In der Nähe des Einheitskreises muss ein Konvergenzbeschleunigungsalgorithmus oder eine andere Methode wie die numerische Integration der ODE verwendet werden. Wenn p > q + 1 ist, ist der Radius Konvergenz gleich Null. Wenn also die zu bewertende Funktion durch eine solche abweichende Reihe gegeben ist, müssen Sie möglicherweise eine Borel-Transformation (numerisch oder symbolisch) anwenden, um sie auf eine konvergente Reihe zu reduzieren.p=q+11/zp>q+1

Für eine vollständige Implementierung müssen auch andere Aspekte berücksichtigt werden (z. B. der Umgang mit Parametern, die extrem groß sind oder sehr nahe an negativen Ganzzahlen liegen). Bei ausreichend schlechten Parametern ist es sehr schwierig, genaue Werte mit doppelter Genauigkeit zu erhalten, unabhängig davon, was Sie tun. Daher ist möglicherweise eine Arithmetik mit willkürlicher Genauigkeit erforderlich.

Ich sollte beachten, dass ich eine fast vollständige numerische Implementierung der verallgemeinerten hypergeometrischen Funktion für die mpmath - Bibliothek geschrieben habe (es fehlen derzeit asymptotische Reihen für Funktionen über 2F3


Ausgezeichnet! Leider kann ich die Parameterwerte nicht genauer beschreiben, da die Funktion an vielen Stellen mit unterschiedlichen Werten auftaucht. Ich werde definitiv daran interessiert sein, Ihre Implementierung in mpmath irgendwann zu nutzen und / oder zu betrachten.
David Z

1
Fredriks Antwort ist richtig. Ich möchte nur darauf hinweisen, dass ich am Ende eine rationale Approximation (von Mathematica) für spezielle Werte der "a" - und "b" -Koeffizienten verwendet habe, da diese für alle reellen "z" genau ist (ich teile die reelle Achse in Intervalle auf und benutzte jeweils eine andere rationale Näherung) und sehr schnell. Ich habe mpmath verwendet, um die Genauigkeit meiner Implementierung mit doppelter Genauigkeit in Fortran zu überprüfen.
Ondřej Čertík

2

Die kanonische Referenz für alle Sonderfunktionen ist Abramowicz und Stegun. Dies ist ein Buch, das es schon seit ungefähr einem halben Jahrhundert gibt. Wenn Sie etwas nicht finden können, schauen Sie sich die "aktualisierte zweite Ausgabe" an, eine Website, die vom National Institute of Standards (NIST) organisiert wird ). Ich habe nicht die genaue URL, aber es sollte nicht sehr schwer zu finden sein.


2
Es heißt jetzt "Digitale Bibliothek mathematischer Funktionen"; Die hypergeometrischen Funktionen sind Gegenstand von Kapitel 15 .
Christian Clason

1
2F11F2
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.