问题标签 [gamma-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
610 浏览

python - 如何有效地缓存 scipy gammaln 并将其应用于 numpy 数组?

我正在寻找一种方法来缓存 gammaln 函数的结果,将其应用于 numpy 数组,然后对结果求和。目前我能够使用简单的字典方法缓存 gammln 结果,但似乎我无法有效地迭代数组。下面是该问题的说明性代码片段。

0 投票
1 回答
258 浏览

r - Rcpp gamma integral

I am trying to rewrite into (R)cpp an original R function that makes use of the gamma function (from double input). Below the original source. When comping with sourceCpp the following error is raised "no matching function for call to 'gamma(Rcpp::traits::storage_type(<14>:.type)'"

The gamma function should has been put within sugar (as the mean below use) so I expect there should be easily called.

0 投票
2 回答
437 浏览

c++ - 非常可靠地计算二项式系数

在 C++ 中计算二项式系数的最佳方法是什么?我见过一些代码片段,但在我看来,它总是只在某些特定区域可行。我需要一个非常、非常、非常可靠的计算。我用伽玛函数试过:

但它已经在 n=8,k=2 of 1 时有所不同(并且到 n=30,k=2 它崩溃)。我“只”需要计算至少 n=3000,k=2。

0 投票
0 回答
410 浏览

python - 如何加快大稀疏矩阵中的 digamma 计算?

我有两个大的 numpy 矩阵,Xr(大约 5500x3500)。我需要计算digamma(X+r)and digamma(r),我用scipy.special.psi. 计算发生在我用于梯度下降拟合的梯度函数中。在优化过程中,梯度函数会被调用很多次,因此它必须快速运行。现在,对于实际问题:

  • digamma(r)大约需要 11 秒才能运行
  • digamma(X+r)运行大约需要 50 秒

出于好奇,我跑了一些其他的例子:

  • digamma(X.astype(np.float64)), 运行大约需要 1 分钟
  • digamma(X), 运行大约需要 5-6 分钟

为什么会发生这种情况,我能做些什么来改善运行时间?

  • Xnumpy.int64包含从 0 到 164 的整数 ( )。
  • rnumpy.float64包含从 0. 到 ~4.6 的浮点数 ( )。
  • X 非常稀疏(大约 75% 为 0)。
  • r 不是稀疏的(大约 10% 为 0)

编辑:更正X.as_float

0 投票
2 回答
2573 浏览

c++ - 不完全伽马函数算法

有一个非常简洁的算法来计算下不完全伽马函数:

https://people.sc.fsu.edu/~jburkardt/f_src/asa147/asa147.html

我们用 C++ 对此进行了编码。这个算法有一点我不明白。在一个地方计算以下表达式:

\frac{\gamma(p,x)}{\Gamma(p)}

它被替换为:

x^pe^{-x}\sum^\infty_{k=0}\frac{x^k}{\Gamma(k+p+1)},

明明是一样的,可是为什么会这样呢?计算 lgamma 的 exp 是否比计算 tgamma 函数更有效(两者lgammatgamma在 C++ 中可用)?

0 投票
1 回答
175 浏览

python - scipy gamma 分布与维基百科上的公式不匹配

根据维基百科,伽玛分布的期望值为k * theta. 但是,当我将其插入 CDF 以进行伽马分布时,我没有达到预期的 0.5。

最后一行的结果是 0.6083 而不是预期的 0.5。

0 投票
1 回答
909 浏览

r - 在R中,具有复杂输入的不完整伽马函数?

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

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

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

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

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

0 投票
1 回答
133 浏览

matlab - Matlab:在绘制心理测量函数时使用 gammaln 时出错...

我正在使用工具箱psignifit从数据集中绘制心理测量函数。我的代码基本上如下所示:

我的数据与工具箱中给出的示例数据具有基本相同的形式,

当我运行演示时,plotPsych 函数按预期返回一个图形,但是当我执行我的脚本时,我得到了以下一系列错误。我的问题是为什么我会收到有关使用 gammaln 的错误,什么可能是正确的解决方法?

我过去成功地在我的数据上运行了工具箱,所以我首先尝试重新启动 Matlab,但无济于事。然后我尝试删除 psignifit-master 并将其添加回路径,但这似乎也没有解决问题。

提前致谢。

0 投票
2 回答
62 浏览

recursion - 递归函数的时间复杂度

我有一个具有时间复杂度的递归函数 f(n)

O(f(n)) = O(组合(n, n/2) * f(n/2)^2)

其中combination(a, b) 表示b 之上的nuber a 组合。

我试图简化它,但没有足够的数学技能。我唯一发现的是

组合(n,n/2) = 2^n * (gamma(n/2 + 1/2)/(sqrt(1/2) * gamma(n/2 + 1)))

0 投票
1 回答
726 浏览

r - 伽玛函数返回不稳定的值?

Gamma 函数不应将任何负值作为参数。看看下面发生奇怪事情的代码。这是R的一些问题吗?

我正在使用函数optim来优化一些函数,其中包含:

关于alpha。R 返回负数alpha

有人可以解释一下吗?或者有什么优化建议?

谢谢!