Java中的Bessel库函数

时间:2009-07-28 09:49:17

标签: java excel bessel-functions

我正在寻找与Java函数BESSELI匹配的Java中的bessel函数,提供的说明:


返回修改后的Bessel函数,该函数等效于为纯虚构参数计算的Bessel函数。

语法 BESSELI(X,N)

X是评估函数的值。

N是贝塞尔函数的阶数。如果n不是整数,则会被截断。


我发现了看起来很接近的东西,但是有许多不同类型的bessel函数......

我的另一个选择是尝试推导出近似值,但听起来相当艰难。谁能给我任何关于如何在Java中表示excel函数的好建议?

5 个答案:

答案 0 :(得分:4)

我认为您应该能够轻松移植其中一个:

http://www.astro.rug.nl/~gipsy/sub/bessel.c

答案 1 :(得分:1)

JScience提供了一个包含已修改贝塞尔函数的SpecialMathsUtils类。

如果Excel功能对于您当前的表单/实现特别重要,您可以通过启动Excel COM对象直接使用Excel,并在Excel中调用该方法。我在使用JACOB之前已经完成了这项工作,而且工作正常。

但它确实取决于您的使用案例,性能标准和部署方案。

答案 2 :(得分:1)

挖出一份数字食谱,您可以在Fortran,C和C ++风格中找到它们(或者,如果您的库非常好,也可以使用Basic和Pascal)并翻译。按照通常的标准功能,贝塞尔函数非常“容易”。有关详细信息,您可以从http://mathworld.wolfram.com/BesselFunction.html

开始

答案 3 :(得分:1)

您可以使用数学函数数字图书馆:

http://dlmf.nist.gov/

以下是关于Java编程和计算我从经验中学到的特殊功能的一些简短内容。

如果您有CPU功率,请尽可能使用BigDecimal。目前(2015年7月),微软似乎没有在.NET框架中拥有内部任意数值精度库。这使科学计算变得棘手。他们如何实现他们在VB6 / VBA for Excel中所做的精确度使我望而却步。

另一方面,BigDecimal相对容易使用。我被一位朋友介绍给BigDecimal,并在关于Java 5的Murach书中阅读了它。我强烈建议使用Oracle文档:

http://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html

其次,正如您可能已经观察到的,在浮点误差和在特殊函数的近似中引入的数学 - 数值误差之间存在差异。数学 - 数值误差和浮点误差都会导致应用程序开发变得困难。使用许多不同的程序来检查自己和你的计算。

第三,在很多情况下,BigDecimal的字符串构造函数优于double构造函数。请参阅上面的Oracle文档。

第四,在使用具有MathContext无限精度的BigDecimal时要非常小心。请注意,您可能必须使用setScale来引入应用程序所需的小数位数,以避免无限重复的十进制表达式以及JVM抛出的异常。

首先,尝试首先检查第一类修改贝塞尔函数的整数参数。此外,您可以根据可用的递归关系或者作为退化超几何函数的定义计算贝塞尔函数。

最后,

祝你好运!

答案 4 :(得分:0)

或参考Abramowitz and Stegun。他们对所有这些功能都有很好的表现。易于编程。