1

不完整的 gamma 函数可以在 R 中使用 pgamma 或使用 library(gsl) 中的 gamma_inc_Q 或使用 library(expint) 中的 gammainc 来计算。然而,所有这些函数都只接受真实的输入。

我需要一个不完整的伽玛函数的实现,它需要复杂的输入。具体来说,我有一个整数作为第一个参数,一个复数作为第二个参数(积分中的限制)。

这个函数对于复杂的输入(参见Wikipedia)是明确定义的,我一直在 Mathematica 中计算它。它似乎没有内置到 R 中,而且我在任何库中都没有看到它。

那么,除了查找算法、在 C 中实现它并编写 R 接口之外,任何人都可以提出更短的路径来进行这些计算吗?

(如果我必须自己实现它,这是我发现的复杂输入的唯一算法:Kostlan & Gokhman 1987

4

1 回答 1

1

这是一个实现,假设您想要较低的不完全伽马函数。我已经将几个值与 Wolfram 进行了比较,它们匹配。

library(CharFun)

incgamma <- function(s,z){
  z^s * exp(-z) * hypergeom1F1(z, 1, s+1) / s
}

或许评价失败了一大片s


编辑

看起来CharFun已经从 CRAN 中删除了。您可以IncGamma使用 HypergeoMat

> library(HypergeoMat)
> IncGamma(m=50, 2+2i, 5-6i)
[1] 0.3841221+0.3348439i

结果在Wolfram上是一样的。

于 2018-01-03T06:38:39.937 回答