我正在寻找一个Java库来计算gamma,beta,erf,贝塞尔特殊功能(以及一些相关功能),以便将其包含在我们自己的公式解析器中。数值精度是首要任务-这是一个科学程序。而且它必须是开源的,并且可以免费用于商业用途(例如Apache和BSD许可证)。

我以为我很快就会发现像JAMA库这样的“经典”,“引用”实现是针对矩阵运算的,但到目前为止我还找不到。我们只需要特殊的功能评估,不需要任何其他库功能。

我发现的第一个是 Apache Common Math ,但我看到beta函数的准确性很差:
http://commons.apache.org/proper/commons-math/userguide/special.html

然后我找到了 Colt 。看起来不错,但我不确定开发人员和用户是否已经对其进行了正确的测试(一些很少使用的代码可能会因错误而从某处复制,等等)。

任何建议将不胜感激。

最佳答案

首先:不要被网页的原始外观和Colt库(以及基于它的JET和JAS库)的旧发行日期所迷惑。它已用于无止境的研究项目中,并且该代码已被数百位非常有才华的人验证。

当然,如果您自己的产品的信誉受到威胁,您不应该只相信我的话。这里有两个想法,您可以自己感受一下正确性:

  • 阅读源代码。 Colt的JavaDoc包含对引用数值方法的论文的引用。搜索引用这些论文的其他作品,然后查看以后是否发现所用方法的问题。
  • 使用您信任的商业数字软件(例如Mathematica),系统地或随机地生成您感兴趣的函数的值,并将其与Colt生成的值进行比较。如果让这样的测试运行足够长时间,您将对数字的质量有很好的了解。

  • 如果您真的不想使用Colt(我想这是您的问题),建议您自己移植数字食谱书(http://www.nrbook.com)中的C/C++代码。通常并不需要太多采用,但是您仍然需要考虑如何测试它。

    10-06 09:21