【问题标题】:Implementing gamma incomplete in java在java中实现伽玛不完整
【发布时间】:2012-01-31 22:42:34
【问题描述】:

我在用 Java 实现 MATLAB 的 gammainc 时遇到问题。

我试着部分地做。我使用了这些使用 Lanczos 近似的函数,我在网上找到了它来解决 Γ(a)

private static double logGamma(double x) {
          double tmp = (x - 0.5) * Math.log(x + 4.5) - (x + 4.5);
          double ser = 1.0 + 76.18009173    / (x + 0)   - 86.50532033    / (x + 1)
                           + 24.01409822    / (x + 2)   -  1.231739516   / (x + 3)
                           +  0.00120858003 / (x + 4)   -  0.00000536382 / (x + 5);
          return tmp + Math.log(ser * Math.sqrt(2 * Math.PI));
       }

private static  double gamma(double x) { return Math.exp(logGamma(x)); }

然后我使用辛普森法则解决积分部分,然后我将它们组合起来做 gammainc,但我得到的输出不合理。

整体部分也可以看成lower incomplete gamma function

我正在寻求更好的解决方案的建议。

【问题讨论】:

    标签: java matlab integration gamma


    【解决方案1】:

    尝试使用 Apache Commons Math,其中包括 logGamma()regularizedGammaP()regularizedGammaQ()

    我不太确定您要查找的确切数量(您能否更具体一些?),但是对其中的一两个进行代数操作应该可以得到您想要的。

    如果您无法处理 Apache Commons 的 .jar 导入,只需在您的项目中包含 Gamma.java 的源文件(但请确保许可问题不会给您带来任何问题)。

    【讨论】:

    • 感谢您的建议。也许我对不可分割部分的近似给我带来了麻烦。我不知道我是否得到了一个很好的近似值,因为我没有应用程序来检查它。再次感谢您
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多