类 Gamma

java.lang.Object
org.hipparchus.special.Gamma

public class Gamma extends Object

这是一个实用类,提供与Γ(Gamma)函数族相关的计算方法。

invGamma1pm1(double)logGamma1p(double)的实现基于以下算法描述:

并在NSWC数学函数库中实现,可在此处获取。该库已经“获得公开发布批准”,版权指南表明,除非代码中另有说明,否则该库中的所有FORTRAN函数均免费许可。由于代码中没有出现此类通知,因此这些函数可以安全地移植到Hipparchus中。

  • 字段详细资料

  • 方法详细资料

    • logGamma

      public static double logGamma(double x)

      返回x > 0时的log Γ(x)的值。

      对于x ≤ 8,实现基于NSWC数学子程序库中的双精度实现DGAMLN。对于x > 8,实现基于以下内容:

      参数:
      x - 参数。
      返回:
      log(Gamma(x))的值,如果x <= 0.0则返回Double.NaN
    • logGamma

      public static <T extends CalculusFieldElement<T>> T logGamma(T x)

      返回x > 0时的log Γ(x)的值。

      对于x ≤ 8,实现基于NSWC数学子程序库中的双精度实现DGAMLN。对于x > 8,实现基于以下内容:

      类型参数:
      T - 字段元素的类型。
      参数:
      x - 参数。
      返回:
      log(Gamma(x))的值,如果x <= 0.0则返回Double.NaN
    • regularizedGammaP

      public static double regularizedGammaP(double a, double x)
      返回正则化gamma函数P(a, x)的值。
      参数:
      a - 参数。
      x - 值。
      返回:
      正则化gamma函数P(a, x)的值。
      抛出:
      MathIllegalStateException - 如果算法无法收敛。
    • regularizedGammaP

      public static <T extends CalculusFieldElement<T>> T regularizedGammaP(T a, T x)
      返回正则化gamma函数P(a, x)的值。
      类型参数:
      T - 字段元素的类型。
      参数:
      a - 参数。
      x - 值。
      返回:
      正则化gamma函数P(a, x)的值。
      抛出:
      MathIllegalStateException - 如果算法无法收敛。
    • regularizedGammaP

      public static double regularizedGammaP(double a, double x, double epsilon, int maxIterations)
      返回正则化gamma函数P(a, x)的值。

      此方法的实现基于以下内容:

      参数:
      a - a参数。
      x - 值。
      epsilon - 当级数中第n项的绝对值小于epsilon时,近似计算停止计算级数中的更多元素。
      maxIterations - 完成的最大“迭代”次数。
      返回:
      正则化gamma函数P(a, x)
      抛出:
      MathIllegalStateException - 如果算法无法收敛。
    • regularizedGammaP

      public static <T extends CalculusFieldElement<T>> T regularizedGammaP(T a, T x, double epsilon, int maxIterations)
      返回正则化gamma函数P(a, x)的值。

      此方法的实现基于以下内容:

      类型参数:
      T - 字段元素的类型。
      参数:
      a - a参数。
      x - 值。
      epsilon - 当级数中第n项的绝对值小于epsilon时,近似计算停止计算级数中的更多元素。
      maxIterations - 完成的最大“迭代”次数。
      返回:
      正则化gamma函数P(a, x)
      抛出:
      MathIllegalStateException - 如果算法无法收敛。
    • regularizedGammaQ

      public static double regularizedGammaQ(double a, double x)
      返回正则化伽玛函数 Q(a, x) = 1 - P(a, x)。
      参数:
      a - 参数 a。
      x - 值。
      返回:
      正则化伽玛函数 Q(a, x)
      抛出:
      MathIllegalStateException - 如果算法无法收敛。
    • regularizedGammaQ

      public static <T extends CalculusFieldElement<T>> T regularizedGammaQ(T a, T x)
      返回正则化伽玛函数 Q(a, x) = 1 - P(a, x)。
      类型参数:
      T - 字段元素的类型。
      参数:
      a - 参数 a。
      x - 值。
      返回:
      正则化伽玛函数 Q(a, x)
      抛出:
      MathIllegalStateException - 如果算法无法收敛。
    • regularizedGammaQ

      public static double regularizedGammaQ(double a, double x, double epsilon, int maxIterations)
      返回正则化伽玛函数 Q(a, x) = 1 - P(a, x)。

      此方法的实现基于:

      参数:
      a - 参数 a。
      x - 值。
      epsilon - 当级数中第 n 项的绝对值小于 epsilon 时,近似计算停止计算级数中的更多元素。
      maxIterations - 完成的最大“迭代”次数。
      返回:
      正则化伽玛函数 P(a, x)
      抛出:
      MathIllegalStateException - 如果算法无法收敛。
    • regularizedGammaQ

      public static <T extends CalculusFieldElement<T>> T regularizedGammaQ(T a, T x, double epsilon, int maxIterations)
      返回正则化伽玛函数 Q(a, x) = 1 - P(a, x)。

      此方法的实现基于:

      类型参数:
      T - 字段元素的类型。
      参数:
      a - 参数 a。
      x - 值。
      epsilon - 当级数中第 n 项的绝对值小于 epsilon 时,近似计算停止计算级数中的更多元素。
      maxIterations - 完成的最大“迭代”次数。
      返回:
      正则化伽玛函数 P(a, x)
      抛出:
      MathIllegalStateException - 如果算法无法收敛。
    • digamma

      public static double digamma(double x)

      计算 x 的 digamma 函数。

      这是根据 Jose Bernardo 在 1976 年的文章《算法 AS 103: Psi (Digamma) 函数》中描述的算法独立编写的实现。

      一些常数已更改以提高中等运行时的精度。对于 x >= 10^-5,结果应在绝对公差为 10^-8 的范围内准确,并且对于 x > 0,结果应在相对公差为 10^-8 的范围内准确。

      对于较大负值的 x,性能将非常昂贵(与 |x| 成比例)。对于负值的 x,精度应该在结果小于 10^5 时为约 10^-8 绝对值,对于大于该值的结果为约 10^-8 相对值。

      参数:
      x - 参数。
      返回:
      digamma(x),精确到 10^-8 的相对或绝对误差中较小的值。
      另请参阅:
    • digamma

      public static <T extends CalculusFieldElement<T>> T digamma(T x)

      计算 x 的 digamma 函数。

      这是根据 Jose Bernardo 在 1976 年的文章《算法 AS 103: Psi (Digamma) 函数》中描述的算法独立编写的实现。

      一些常数已更改以提高中等运行时的精度。对于 x >= 10^-5,结果应在绝对公差为 10^-8 的范围内准确,并且对于 x > 0,结果应在相对公差为 10^-8 的范围内准确。

      对于较大负值的 x,性能将非常昂贵(与 |x| 成比例)。对于负值的 x,精度应该在结果小于 10^5 时为约 10^-8 绝对值,对于大于该值的结果为约 10^-8 相对值。

      类型参数:
      T - 字段元素的类型。
      参数:
      x - 参数。
      返回:
      digamma(x),精确到 10^-8 的相对或绝对误差中较小的值。
      另请参阅:
    • trigamma

      public static double trigamma(double x)
      计算 x 的三次 digamma 函数。此函数是通过对 digamma 实现的导数进行推导得到的。
      参数:
      x - 参数。
      返回:
      三次 digamma(x),精确到 10^-8 的相对或绝对误差中较小的值
      另请参阅:
    • trigamma

      public static <T extends CalculusFieldElement<T>> T trigamma(T x)
      计算 x 的三次 digamma 函数。此函数是通过对 digamma 实现的导数进行推导得到的。
      类型参数:
      T - 字段元素的类型。
      参数:
      x - 参数。
      返回:
      三次 digamma(x),精确到 10^-8 的相对或绝对误差中较小的值
      另请参阅:
    • lanczos

      public static double lanczos(double x)

      返回用于计算伽玛函数的 Lanczos 近似。Lanczos 近似与伽玛函数之间的关系由以下方程式确定 \[ \Gamma(x) = \frac{\sqrt{2\pi}}{x} \times (x + g + \frac{1}{2}) ^ (x + \frac{1}{2}) \times e^{-x - g - 0.5} \times \mathrm{lanczos}(x) \] 其中 g 是 Lanczos 常数。

      参数:
      x - 参数。
      返回:
      Lanczos 近似。
      另请参阅:
    • lanczos

      public static <T extends CalculusFieldElement<T>> T lanczos(T x)

      返回用于计算伽玛函数的 Lanczos 近似。Lanczos 近似与伽玛函数之间的关系由以下方程式确定 \[ \Gamma(x) = \frac{\sqrt{2\pi}}{x} \times (x + g + \frac{1}{2}) ^ (x + \frac{1}{2}) \times e^{-x - g - 0.5} \times \mathrm{lanczos}(x) \] 其中 g 是 Lanczos 常数。

      类型参数:
      T - 字段元素的类型。
      参数:
      x - 参数。
      返回:
      Lanczos 近似。
      另请参阅:
    • invGamma1pm1

      public static double invGamma1pm1(double x)
      返回 -0.5 ≤ x ≤ 1.5 时 1 / Γ(1 + x) - 1 的值。此实现基于 NSWC 数学子程序库 中的双精度实现,DGAM1
      参数:
      x - 参数。
      返回:
      1.0 / Gamma(1.0 + x) - 1.0 的值。
      抛出:
      MathIllegalArgumentException - 如果 x < -0.5
      MathIllegalArgumentException - 如果 x > 1.5
    • invGamma1pm1

      public static <T extends CalculusFieldElement<T>> T invGamma1pm1(T x)
      返回 -0.5 ≤ x ≤ 1.5 时 1 / Γ(1 + x) - 1 的值。此实现基于 NSWC 数学子程序库 中的双精度实现,DGAM1
      类型参数:
      T - 字段元素的类型。
      参数:
      x - 参数。
      返回:
      1.0 / Gamma(1.0 + x) - 1.0 的值。
      抛出:
      MathIllegalArgumentException - 如果 x < -0.5
      MathIllegalArgumentException - 如果 x > 1.5
    • logGamma1p

      public static double logGamma1p(double x) throws MathIllegalArgumentException
      返回 -0.5 ≤ x ≤ 1.5 时 log Γ(1 + x) 的值。此实现基于 NSWC 数学子程序库 中的双精度实现,DGMLN1
      参数:
      x - 参数。
      返回:
      log(Gamma(1 + x)) 的值。
      抛出:
      MathIllegalArgumentException - 如果 x < -0.5
      MathIllegalArgumentException - 如果 x > 1.5
    • logGamma1p

      public static <T extends CalculusFieldElement<T>> T logGamma1p(T x) throws MathIllegalArgumentException
      返回 -0.5 ≤ x ≤ 1.5 时 log Γ(1 + x) 的值。此实现基于 NSWC 数学子程序库 中的双精度实现,D
      类型参数:
      T - 字段元素的类型。
      参数:
      x - 参数。
      返回:
      log(Gamma(1 + x))的值。
      抛出:
      MathIllegalArgumentException - 如果x < -0.5
      MathIllegalArgumentException - 如果x > 1.5
    • gamma

      public static double gamma(double x)
      返回Γ(x)的值。基于NSWC数学子程序库的双精度实现,DGAMMA
      参数:
      x - 参数。
      返回:
      Gamma(x)的值。
    • gamma

      public static <T extends CalculusFieldElement<T>> T gamma(T x)
      返回Γ(x)的值。基于NSWC数学子程序库的双精度实现,DGAMMA
      类型参数:
      T - 字段元素的类型。
      参数:
      x - 参数。
      返回:
      Gamma(x)的值。