Java中的Bessel库函数

我正在寻找与Excel函数BESSELI匹配的Java中的bessel函数,提供的描述如下:


返回修改后的贝塞尔函数,该贝塞尔函数等价于为纯虚构参数计算的贝塞尔函数。

语法 BESSELI(x,n)

X是评估函数的值。

N是贝塞尔函数的阶数。 如果n不是一个整数,它将被截断。


我发现东西看起来很近,但是有许多不同types的贝赛尔function。

我的另一个select是尝试和推导一个近似值,但这听起来相当艰难。 任何人都可以给我任何好的build议,如何在Java中代表该Excelfunction?

我认为你应该能够很容易地移植其中的一个:

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

JScience提供具有修改的贝塞尔函数的SpecialMathsUtils类。

如果Excel函数在当前窗体/实现中对您尤为重要,则可以直接使用Excel,方法是启动Excel COM对象,然后在Excel中调用该方法。 在使用JACOB之前,我已经完成了它,它工作正常。

但是,这取决于您的用例,性能标准和部署scheme。

挖掘一下Fortran,C和C ++风格(或者,如果你的程序库非常好,也可以在Basic和Pascal中)find的Numerical Recipes的副本并翻译。 按照外来函数的通常标准,贝塞尔函数相当“容易”。 欲了解更多信息,你可以从http://mathworld.wolfram.com/BesselFunction.html开始

你可以使用math函数的数字图书馆:

http://dlmf.nist.gov/

这里有几个关于Java编程和计算我从经验中学到的特殊function的简短的东西。

如果你有CPU的能力,尽可能使用BigDecimal。 目前(2015年7月),微软似乎在.NET框架中没有内部任意的数字精度库。 这使科学计算棘手。 他们如何达到他们在VB6 / VBA for Excel中所做的精确度无法回避。

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

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

其次,正如您可能已经观察到的那样,浮点错误与近似于特殊函数的math – 数值错误之间存在差异。 math – 数字错误和浮点错误共同使应用程序开发变得困难。 使用很多不同的程序来检查你自己和你的计算。

第三,在许多情况下,BigDecimal的string构造函数比双重构造函数更可取。 请参阅上面的Oracle文档。

第四,在使用MathContext的无限精度的BigDecimal时要非常小心。 请注意,您可能必须使用setScale来介绍您的应用程序需要多less位小数,以避免无限重复小数expression式以及由JVM抛出的exception。

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

最后,

祝你好运!

或者参考Abramowitz和Stegun 。 他们对这些function有很好的expression。 易于编程。

Interesting Posts