类 BesselJ

java.lang.Object
org.hipparchus.special.BesselJ
所有已实现的接口:
UnivariateFunction

public class BesselJ extends Object implements UnivariateFunction
该类提供与第一类贝塞尔函数相关的计算方法。这些函数的详细描述可在WikipediaAbramowitz and Stegun(第9-11章)和DLMF(第10章)中找到。

此实现基于Netlib上的rjbesl Fortran例程。

根据Fortran代码:

该程序基于David J. Sookne编写的一个程序(2),用于计算实参数和整数阶的贝塞尔函数J或I的值。修改包括将计算限制为非负实参数的J贝塞尔函数,将计算扩展到任意正阶,并消除大部分下溢。

参考文献:

  • “关于反向递归算法的注记”,Olver, F. W. J.和Sookne, D. J.,Math. Comp. 26, 1972, pp 941-947。
  • “实参数和整数阶的贝塞尔函数”,Sookne, D. J.,NBS Jour. of Res. B. 77B, 1973, pp 125-132。
    • 构造器详细资料

      • BesselJ

        public BesselJ(double order)
        使用给定的阶数创建一个新的BesselJ。
        参数:
        order - 在使用value(double)时计算的函数阶数。
    • 方法详细资料

      • value

        public double value(double x) throws MathIllegalArgumentException, MathIllegalStateException
        返回传递参数的构造贝塞尔函数的值。
        指定者:
        value 在接口中 UnivariateFunction
        参数:
        x - 参数
        返回:
        x处贝塞尔函数的值
        抛出:
        MathIllegalArgumentException - 如果x相对于order太大
        MathIllegalStateException - 如果算法无法收敛
      • value

        public static double value(double order, double x) throws MathIllegalArgumentException, MathIllegalStateException
        返回第一个贝塞尔函数,\(J_{order}(x)\)。
        参数:
        order - 贝塞尔函数的阶数
        x - 参数
        返回:
        第一类贝塞尔函数\(J_{order}(x)\)的值
        抛出:
        MathIllegalArgumentException - 如果x相对于order太大
        MathIllegalStateException - 如果算法无法收敛
      • rjBesl

        public static BesselJ.BesselJResult rjBesl(double x, double alpha, int nb)
        计算非负参数x和非负阶n + alpha的贝塞尔函数\(J_{n+alpha}(x)\)。

        在使用输出向量之前,用户应检查nVals = nb,即所有阶数都已按所需精度计算。有关返回值的详细信息,请参阅BesselResult类的javadoc。

        参数:
        x - 要计算J的非负实参数
        alpha - 要计算J或指数缩放J(\(J\cdot e^{x}\))的分数阶。0 <= alpha < 1.0。
        nb - 要计算的函数数量,nb > 0。计算的第一个函数是阶数alpha,最后一个是阶数nb - 1 + alpha。
        返回:
        BesselJResult一个包含函数\(J_{alpha}(x)\)到\(J_{nb-1+alpha}(x)\)或相应指数缩放函数的向量,以及一个整数输出变量,指示可能的错误