我正在寻找与 Excel 函数 BESSELI 匹配的 Java 贝塞尔函数,提供了描述:
返回修改后的 Bessel 函数,它等效于为纯虚参数计算的 Bessel 函数。
语法 BESSELI(x,n)
X 是评估函数的值。
N 是贝塞尔函数的阶数。如果 n 不是整数,则将其截断。
我发现了看起来很接近的东西,但是有许多不同类型的贝塞尔函数......
我的另一个选择是尝试得出一个近似值,但这听起来很难。谁能给我任何关于如何在 Java 中表示该 excel 函数的好建议?
我正在寻找与 Excel 函数 BESSELI 匹配的 Java 贝塞尔函数,提供了描述:
返回修改后的 Bessel 函数,它等效于为纯虚参数计算的 Bessel 函数。
语法 BESSELI(x,n)
X 是评估函数的值。
N 是贝塞尔函数的阶数。如果 n 不是整数,则将其截断。
我发现了看起来很接近的东西,但是有许多不同类型的贝塞尔函数......
我的另一个选择是尝试得出一个近似值,但这听起来很难。谁能给我任何关于如何在 Java 中表示该 excel 函数的好建议?
我认为您应该能够很容易地移植其中之一:
JScience提供了一个类SpecialMathsUtils ,它带有修改后的 Bessel 函数。
如果 Excel 函数在当前形式/实现中对您特别重要,您可以通过启动 Excel COM 对象并在 Excel 中调用该方法来直接使用 Excel。我在使用JACOB之前已经这样做了,它工作正常。
但是,它确实取决于您的用例、性能标准和部署方案。
挖出一份 Numerical Recipes 的副本,您可以在 Fortran、C 和 C++ 风格中找到它(或者,如果您的库非常好,也可以在 Basic 和 Pascal 中找到)并翻译。按照外来函数的通常标准,贝塞尔函数非常“简单”。有关更多信息,您可以从http://mathworld.wolfram.com/BesselFunction.html开始
您可以使用数学函数数字图书馆:
以下是我从经验中学到的一些关于 Java 编程和计算特殊函数的简短内容。
如果您有足够的 CPU 能力这样做,请尽可能使用 BigDecimal。目前(2015 年 7 月),微软似乎在 .NET 框架中没有内部任意数值精度库。这使得科学计算变得棘手。我不知道他们是如何达到在 VB6/VBA for Excel 中所做的精确度的。
另一方面,BigDecimal 相对容易使用。一个朋友向我介绍了 BigDecimal,并在 Murach 的一本关于 Java 5 的书中读到了它。我强烈建议使用 Oracle 文档:
http://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html
其次,正如您可能已经观察到的那样,浮点误差与特殊函数近似中引入的数学数值误差之间存在差异。数学数值误差和浮点误差共同使应用程序开发变得困难。使用许多不同的程序来检查你自己和你的计算。
第三,在许多情况下,BigDecimal 的字符串构造函数优于双精度构造函数。请参阅上面的 Oracle 文档。
第四,在使用具有 MathContext 无限精度的 BigDecimal 时要非常小心。请注意,您可能必须使用 setScale 来介绍应用程序需要多少个小数位,以避免无限重复小数表达式和 JVM 抛出的异常。
第五,首先尝试检查第一类修正贝塞尔函数的整数参数。此外,您可以根据可用的递归关系或根据它们作为退化超几何函数的定义来计算 Bessel 函数。
最后,
祝你好运!
或参考Abramowitz 和 Stegun。它们对所有这些功能都有很好的表示。易于编程。