W pojedynczej aplikacji jest raczej prawdopodobne, że będziesz potrzebować tylko niewielkiego podzbioru wszystkich możliwych ekstremów uogólnionej funkcji hipergeometrycznej. W końcu jest to bardzo ogólna funkcja. Mając pomysł o zakresie i parametrów w I , b i pozwoliłoby dając bardziej szczegółowe informacje.zzaja, bja
Zasadniczo standardową metodą, przy założeniu , jest oczywiście użycie definiujących szeregów mocy, gdy | z | jest mały. Gdybyp≤q+1|z| , najlepiej przełączyć na ekspansję asymptotyczną, gdy | z | jest duża, albo dlatego, że seria Taylora zbiega się zbyt wolno i / lub ponieważ staje się zbyt niedokładna z powodu katastrofalnego anulowania. Najlepszy punkt odcięcia między tymi algorytmami zależy od parametrów i wymagań dokładności.p<q+1|z|
Dla asymptotycznej seria jest przezhttp://functions.wolfram.com/HypergeometricFunctions/Hypergeometric1F2/06/02/03/Wygląda to dość straszne, ale jeśli1F2 są stałe, można z góry obliczyć wartości liczbowe dla współczynników. Ogólne formuły znajdują się w DLMF:http://dlmf.nist.gov/16.11(Należy pamiętać, że należy zachować ostrożność, aby wybrać prawidłowe cięcia gałęzi.)a1,b1,b2
z
Jeśli potrzebujesz funkcji z na całej płaszczyźnie złożonej, to 1 /p=q+11/zp>q+1
Aby uzyskać pełną implementację, należy również rozważyć inne kwestie (na przykład dotyczące parametrów, które są bardzo duże lub bardzo zbliżone do ujemnych liczb całkowitych). W przypadku wystarczająco złych parametrów bardzo trudno będzie uzyskać dokładne wartości z podwójną precyzją, bez względu na to, co zrobisz, więc arytmetyka o dowolnej dokładności może być potrzebna.
Powinienem zauważyć, że napisałem prawie całkowitą implementację numeryczną uogólnionej funkcji hipergeometrycznej dla biblioteki mpmath (obecnie brakuje szeregów asymptotycznych dla funkcji wyższych niż 2F3