14

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

我想我会很快找到像 JAMA 库这样的“经典”、“参考”实现是用于矩阵运算的,但到目前为止我还找不到。我们只需要特殊的函数评估,不需要任何额外的库特性。

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

然后我找到了柯尔特。看起来不错,但我不确定它是否经过开发人员和用户的正确测试(一些很少使用的代码可能是从有错误的地方复制的,等等)

任何建议将不胜感激。

4

1 回答 1

3

首先:不要被网页的自制外观和 Colt 库(以及基于它的 JET 和 JAS 库)的旧发布日期所欺骗。它已被用于无休止的研究项目,代码已被数百名非常有才华的人验证。

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

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

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

于 2013-04-27T14:13:58.470 回答