2009-01-25 8 views
6

Est-ce que quelqu'un a de l'expérience avec les algorithmes pour évaluer les fonctions hypergéométriques? Je serais intéressé par des références générales, mais je décrirai mon problème particulier au cas où quelqu'un s'en occuperait. Mon problème spécifique est l'évaluation d'une fonction de la forme 3F2 (a, b, 1; c, d; 1) où a, b, c et d sont tous des réels positifs et c + d> a + b + 1. Il y a beaucoup de cas spéciaux qui ont une formule fermée, mais autant que je sache, il n'y a pas de telles formules en général. La série de puissance centrée sur zéro converge à 1, mais très lentement; le rapport des coefficients consécutifs passe à 1 dans la limite. Peut-être que quelque chose comme l'accélération Aitken aiderait?Évaluation efficace des fonctions hypergéométriques

Répondre

1

Est-il correct que vous vouliez additionner une série où vous connaissez le rapport des termes successifs et c'est une fonction rationnelle?

Je pense que Gosper's algorithm et le reste des outils pour prouver hypergeometric identities (et de les trouver) faire exactement cela, non? (Voir A=B book online. de Wilf et Zielberger)

+0

Oui, le rapport des coefficients en série est une fonction rationnelle de l'indice. Mais je n'ai pas trouvé d'identité hypergéométrique utile. http://functions.wolfram.com/ liste des milliers d'identités, mais aucune d'entre elles n'aide. –

+0

Je ne sais pas grand-chose - ces algorithmes * ne trouvent-ils pas aussi une identité? Je n'ai pas lu le livre A = B en détail, mais les paquets Maple qu'il mentionne pourraient avoir de meilleures implémentations ... – ShreevatsaR

6

J'ai testé l'accélération d'Aitken et cela ne semble pas aider pour ce problème (ni l'extrapolation de Richardson). Cela signifie probablement que l'approximation de Pade ne fonctionne pas non plus. J'ai peut-être fait quelque chose de mal, donc essayez-le par vous-même.

Je peux penser à deux approches. L'une consiste à évaluer la série à un point tel que z = 0,5 où la convergence est rapide pour obtenir une valeur initiale, puis passer à z = 1 en branchant le hypergeometric differential equation dans un solveur ODE. Je ne sais pas comment cela fonctionne dans la pratique; cela pourrait ne pas être le cas, car z = 1 étant une singularité (si je me souviens bien).

La seconde est d'utiliser la définition de 3F2 en termes de Meijer G-function. L'intégrale de contour définissant la fonction G de Meijer peut être évaluée numériquement en appliquant une quadrature gaussienne ou doublement exponentielle à des segments du contour. Ce n'est pas très efficace, mais cela devrait fonctionner, et il devrait atteindre une précision relativement élevée.

+0

Une question fantastique, et une réponse à la hauteur du défi. Bien joué. – duffymo

+0

J'utilise un stepper Burlisch-Stoer pour résoudre avec succès l'ODE pour 2F1. La méthode fonctionne bien, à condition de faire attention lors du choix de vos coupes de branches. Pour 2F3, cela semble plus impliqué car il est de quatrième ordre et a plus de points singuliers, mais cela devrait être réalisable. –