【问题标题】:Incomplete gamma function algorithm不完全伽马函数算法
【发布时间】:2017-09-14 17:17:09
【问题描述】:

有一个非常简洁的算法来计算下不完全伽马函数:

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

我们用 C++ 对此进行了编码。这个算法有一点我不明白。在一个地方计算以下表达式:

替换为:

显然是一样的,但是为什么会这样呢?计算 lgamma 的 exp 是否比计算 tgamma 函数更高效(lgammatgamma 在 C++ 中都可用)?

【问题讨论】:

    标签: c++ gamma-function


    【解决方案1】:

    计算 lgamma 的 exp 是否比计算 tgamma 函数更高效(lgamma 和 tgamma 在 C++ 中都可用)?

    计算 lgamma 更有效,因为它基本上是 n*log(n) 行为。 所以通常你有很好的近似 id 你试图计算 lgamma(x)/x 函数。

    另外,请记住,lgamma 经常被使用,因为它是可以计算的表达式的一部分,而增长与阶乘一样快的 tgamma 不是。因此,将整个表达式f(x) 计算为 exp(log(f(x))) 是安全的,如果 f(x) 具有 tgamma 的乘积,则 log(f(x)) 必须求和/减去lgamma.

    基本上是避免溢出的好方法

    【讨论】:

      【解决方案2】:

      您将在此处找到 C++ 的 Gamma 的正确实现: http://www.boost.org/doc/libs/1_64_0/libs/math/doc/html/math_toolkit/sf_gamma

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多