2017-09-14 30 views
0

不完全ガンマ関数を計算するための非常に簡潔なアルゴリズムがある。不完全ガンマ関数アルゴリズム

https://people.sc.fsu.edu/~jburkardt/f_src/asa147/asa147.html

我々は、C++でこれを符号化されました。このアルゴリズムで私が理解していないことが1つあります。次の式を計算するために一つの場所で:

\frac{\gamma(p,x)}{\Gamma(p)}

それがで置換されている:

x^p e^{-x}\sum^\infty_{k=0}\frac{x^k}{\Gamma(k+p+1)},

明らかにこれは同じですが、それはこのように行われている理由は? lgammaの計算時間は、tgamma関数を計算するよりも効率的です(lgammatgammaはC++で利用できます)。

答えて

0

関数lgammaの計算expがtgamma関数を計算するよりも効率的でない(両方の関数lgammaとtgammaはCで利用できる++)?

lgammaは、基本的にn * log(n)の動作であるため、より効率的です。 したがって、通常、あなたは良い近似IDを持っています。 lgamma(x)/ x関数を計算しようとしています。

また、lgammaは、計算できる計算式の一部であり、階乗と同じ速さで成長するtgammaであるため、よく使用されます。 exp(log(f(x)))として式f(x)を計算することは安全です.f(x)がtgammaの積である場合、log(f(x))は合計/代入をしてlgammaになります。

オーバーフローを避けるために、基本的には