沒有計算完全伽瑪功能非常簡潔的算法:不完全γ函數算法
https://people.sc.fsu.edu/~jburkardt/f_src/asa147/asa147.html
我們在C++編碼此。有一件事我不明白這個算法。在一個地方來計算下面的表達式:
它被取代:
顯然,這是一樣的,但是它爲什麼這樣做呢?計算lgamma的exp是否比計算tgamma函數更有效率(在C++中都可以使用lgamma
和tgamma
)?
沒有計算完全伽瑪功能非常簡潔的算法:不完全γ函數算法
https://people.sc.fsu.edu/~jburkardt/f_src/asa147/asa147.html
我們在C++編碼此。有一件事我不明白這個算法。在一個地方來計算下面的表達式:
它被取代:
顯然,這是一樣的,但是它爲什麼這樣做呢?計算lgamma的exp是否比計算tgamma函數更有效率(在C++中都可以使用lgamma
和tgamma
)?
你會發現伽瑪的正確實現對C++的位置: http://www.boost.org/doc/libs/1_64_0/libs/math/doc/html/math_toolkit/sf_gamma
是否lgamma函數的計算exp就不是計算tgamma功能更有效(包括lgamma函數和tgamma用C可++)?
計算lgamma效率更高,因爲它基本上是n * log(n)行爲。 所以通常你有很好的近似值你試圖計算 lgamma(x)/ x函數。
另外,請記住,lgamma
經常被使用,因爲它是可以計算的表達式的一部分,而tgamma
,它的增長速度與階乘一樣快,不是。因此,將整個表達式f(x)
計算爲exp(log(f(x)))是安全的,並且如果f(x)具有tgamma
的乘積,則log(f(x))將必須求和/減去lgamma
。
好方法避免溢出,基本上