Java 特殊数学函数库

2022-09-04 04:43:10

我正在寻找一个Java库来计算gamma,beta,erf,bessel特殊函数(以及一些相关的函数),以便将其包含在我们自己的公式解析器中。数字准确性是主要优先事项 - 这是一个科学程序。它必须是开源的,并且免费用于商业用途(如Apache和BSD许可证)。

我以为我会很快找到“经典”,“参考”的实现,就像JAMA库一样,用于矩阵运算,但到目前为止我找不到。我们只需要特殊的函数评估,不需要任何其他库功能。

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

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

任何建议将不胜感激。


答案 1

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

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

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

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


答案 2