超幾何関数の評価のための効率的で正確なアルゴリズムは何ですか?


16

一般化された超幾何関数(または級数)の評価のために、次のように定義される優れた数値アルゴリズムが存在することを知りたい

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

一般に、このシリーズは必ずしも非常に高速に収束する(またはまったく収束する)わけではないため、用語を1つずつ合計するのは理想的ではないようです。より適切に動作する代替方法はありますか?具体的には、妥当な数の計算で4桁または5桁の精度が得られるものを探しています。

私が通常使用する最も一般的なケースはおよびp = 2 q = 1ですが、私が取り組んでいる特定のプロジェクトでは、p = 1 q = 2が必要です。明らかに、任意のための一般的なアルゴリズムのpqが理想的ですが、私は私が得ることができるものかかります。p=1,q=1p=2,q=1p=1,q=2pq


Abramowitz and Stegun's Handbook(people.math.sfu.ca/~cbm/aands/subj.htm)でカバーされていない場合、それはカバーされていませんが、基本的に自分で理解する運命にありますメートル恐れて...
ハイメ・

回答:


15

単一のアプリケーションでは、一般化された超幾何関数のすべての可能な極限の小さなサブセットのみが必要になる可能性があります。結局のところ、これは非常に一般的な機能です。の範囲とパラメーターa ib iについての考えがあれば、より具体的なアドバイスを与えることができます。zab

一般に、標準的な方法、仮定、定義級数を使用することは勿論である場合小さいです。場合、それはとき漸近展開に切り替えることが最善であるテイラー級数の収束が遅すぎるため、および/または壊滅的な相殺により不正確になりすぎるため、これらのアルゴリズム間の最適なカットオフは、パラメーターと精度の要件によって異なります。pq+1p < q + 1 | Z ||z|p<q+1|z|

以下のために漸近シリーズは次式で与えられhttp://functions.wolfram.com/HypergeometricFunctions/Hypergeometric1F2/06/02/03/それはかなり恐ろしい見えますが、あなたの場合は固定されている、あなたは数値を計算することができます事前に係数の値。一般式は、DLMFにあります:http : //dlmf.nist.gov/16.11(正しいブランチカットを選択するには、注意が必要であることに注意してください。)1F2a1b1b2

テイラー級数も漸近級数も十分に機能しない範囲がある場合、「指数関数的に改善された展開」が役に立つかもしれません。言及する価値があるもう1つの可能性は、超幾何微分方程式を汎用ODEソルバーにプラグインするだけでよいということです。これは、特に4〜5桁しか必要ない場合に非常にうまく機能するはずです。これは、小さい(べき級数がうまく機能する)から大きいへの分析的継続を行うために使用できます。または、漸近級数によって取得された値から逆に(すべての初期値として必要な導関数)。z

複素平面全体で関数が必要な場合、変換式を使用して、ユニットディスクの外部を内部にマッピングできます。収束加速アルゴリズムまたはODEの数値積分などの他の方法は、単位円の近くで使用する必要があります。場合、半径は収束がゼロであるため、評価する関数がこのような発散級数によって与えられる場合、ボレル変換(数値的または記号的に)を適用して収束級数に減らす必要があります。p=q+11/zp>q+1

完全な実装には、他にも考慮すべき問題があります(たとえば、極端に大きいパラメーターや負の整数に非常に近いパラメーターを処理するなど)。十分に悪いパラメーターの場合、何をしようとも、倍精度で正確な値を取得することは非常に難しいため、任意精度の計算が必要になる場合があります。

mpmathライブラリの汎用超幾何関数のほぼ完全な数値実装を記述していることに注意する必要があります(よりも高い関数の漸近級数は現在欠落しています)。既に十分な速さではありません)。2F3


優秀な!残念ながら、関数はさまざまな値を持つ多くの場所でポップアップ表示されるため、パラメーター値について詳細に説明することはできません。私は間違いなく、mpmathでの実装の使用および/または検討に興味があります。
デビッドZ

1
Fredrikの答えは正しい。「a」係数と「b」係数の特別な値に合理的な近似(Mathematicaから)を使用することになりました。これは、すべての実「z」に対して正確であるためです(実軸を区間に分割します)それぞれに異なる合理的な近似を使用しました)、非常に高速です。Fortranでの倍精度実装の精度を確認するために、mpmathを使用しました。
オンドレジ・セティク

2

すべての特殊関数の標準参照は、AbramowiczとStegunです。これはまもなく半世紀ほど前に発売された本であり、もしそれが見つからない場合は、「更新された第2版」をご覧ください。 )。正確なURLはありませんが、見つけるのはそれほど難しくありません。


2
現在では、「数学関数のデジタルライブラリ」と呼ばれています。超幾何関数は第15章の主題です。
クリスチャンクラソン

1
2F11F2
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.