问题标签 [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 回答
3771 浏览

math - 逆不完全伽马函数的简单近似

一个简单的解析函数 f(s,Г) 怎么能近似逆不完全伽马函数Г(s,x)?这意味着写 x = f(s,Г) = 12*log(123.45*Г) + Г + 123.4^s 之类的东西。

(我至少需要想法或参考资料。)

0 投票
6 回答
4635 浏览

javascript - 如何制作一个计算小数的阶乘的函数?

如何在 JavaScript 中创建一个计算十进制数的阶乘(或伽马函数)的函数?例如,我该如何计算2.33!

0 投票
1 回答
886 浏览

r - R用于优化涉及伽马函数的函数

我正在尝试优化一个涉及伽马函数的函数。我的数据是经过审查的数据。我遇到的 错误是:“fn(par,...)中的错误:尝试应用非功能” R代码是:

fn(par, ...) 中的错误:尝试应用非函数

预先感谢您的帮助。

0 投票
1 回答
1186 浏览

python - Python中带有伽玛函数的累积分布函数

我正在处理看起来像这样的 Schechter Luminosity 函数:

说,L/Lstar 是 l。

其累积分布函数的解析解由 gamma 函数给出:N = norm factor* Gamma(a+1, l)。

这是不完整的 gamma 函数,因为积分的极限是 L 到无穷大。

现在,我正在尝试在 Python 中绘制 cdf。我用了:

(其中 l[I] 是我由随机数组成的数组)

结果图总计为 1,看起来像一个 cdf。但现在我想随机化它。因此,我设置了 cdf = 随机数(由 Python 统一生成),而不是 cdf = 1。现在,如果我想绘制一个计数与 L 的直方图,通过随机采样,我需要反转 gamma 函数。

我的问题是:如何在 Python 中反转 Gamma 函数?

这就是我现在所拥有的:

编译器不会抱怨,但直方图的形状是错误的。我认为 cdf 的随机采样直方图应该恢复 PDF 的形状。

我究竟做错了什么?显然,scipy 的不完全伽马函数版本是“正则化”的,这意味着它被完整的伽马函数划分。因此,如果我将 gammainc(a+1, u[I])* gamma(a+1) 相乘,它仍然不起作用。

轴是对数缩放的。

有什么建议么?

底线:我需要通过随机采样制作 Schechter 光度函数的 cdf 直方图。

0 投票
1 回答
1011 浏览

matlab - 我正在尝试解决 Matlab 中的一个函数:digamma(x) =C

例如C=0

我无法得到正确答案

0 投票
1 回答
1805 浏览

python - scipy.special.gammaln 的精度

问题

我的很多编程都涉及 scipy.stats 中的统计功能。一个新问题需要计算beta-二项分布的 pmf 。因为它具有解析形式,但没有出现在 scipy.stats 中,所以我需要自己为其 pmf 定义一个函数。我正在使用 scipy 0.12.0 版和 numpy 1.7.0 版。

在统计问题中,我试图解决 n 和 k 的值通常介于 0 和 100 之间,但 K 和 N 可以大到 1e9。我的问题是这个函数将为不同的输入返回相同的值。

例子

结果数组是

考虑到 K 的每个值都不同,这很奇怪。为了更好地了解数组中第一个和第三个值之间的相似性


对函数精度的一个非常简单的测试gammaln是 1-(Gamma(N+1)/Gamma(N))/N。它很有用,因为如果您在纸上计算代数,结果正好是 0。

问题

我认识到人们可以计算的精度是有限制的,但是在 N=1e7 左右会发生什么使精度变化gammaln了五个数量级?关于如何解决这个问题的建议?

0 投票
1 回答
377 浏览

math - 如何从均值和方差中求解分布参数

我更新了 OP,以便可以通过求解以下方程来解决原始问题。

在哪里

这里,g(j,k) = j / [ k* g1 (1+j, constant1/k) - k* g1 (1+j, constant2/k) + exp(-constant2/k) * k^(1 -j) * constant2^j - exp(-constant1/k) * k^(1-j) * constant1^j ] constant1 >= 0 , constant 2 > 0
其中

我需要找到 k 和 j 的解决方案。


我需要求解一个以积分为约束的数学优化模型。

任何帮助,将不胜感激。

0 投票
1 回答
1420 浏览

statistics - 快速不完全伽马函数

在 C++ 中,什么是计算不完整 gamma 函数的快速方法,或者至少是它的“良好”近似值?

背景

我最终需要计算的

给定许多伯努利轨迹 N,成功概率为 p,我最终试图计算获得最多 k 次成功的概率,作为 k 的函数。累积二项式分布 F(k,N,p) 给出了这个概率。

对速度的需求

我需要每秒计算几十万个这些累积概率。对于较大的 N,通过直接求和计算累积二项式分布的计算量非常大。使用不完全 beta 函数要好得多,但仍然是计算量很大的。

可利用的约束

我希望来自应用程序域的以下约束可以帮助加快计算速度:

  • p < 0.01(分布总是很偏斜)
  • N > 50

泊松近似

在 Excel 中进行了一些实验后,我了解到泊松近似在上述条件下非常出色。即,在感兴趣的条件下,k 处的 B(N,p) 与 k 处的 Pois(Np) 几乎相同。这意味着我只需要 2 个变量的函数,不再需要 3 个。

我知道累积泊松分布可以用不完全伽马函数来计算,从 cephes 库中的源代码来看,它似乎比原来的不完全 beta 函数要简单得多。在没有泊松近似的情况下计算。但它仍然不是很简单,是一个迭代的数值计算。所以现在我正在寻找一种快速计算不完全伽马函数的方法。我想知道是否没有一个封闭形式的表达式可以很好地近似它。

所需精度

在积分/概率上 20% 的相对误差是完全可以接受的(从每个 k 考虑,在两个方向上)。

我考虑过直接使用 Poisson CDF 的插值查找表,但均匀间隔的域点可能不太理想,并且域也必须限制为任意矩形。我希望理想地找到具有大量调整参数的分析函数。

0 投票
2 回答
357 浏览

ruby - 伽玛函数逼近

我正在尝试编写一个三参数方法,该方法在一定间隔内逼近 gamma 函数。近似值应该是右端点黎曼和。

伽马函数由下式给出:

因此,区间 (0, m) 上的右端点黎曼和近似应该是:

我的代码如下:

代码应返回 3 的近似值!= 6,但它返回 0.0。有什么想法我可能会出错吗?

0 投票
1 回答
220 浏览

matlab - MATLAB奇异误差Gamma函数数值积分

我尝试运行以下命令以进行数字积分:

其中 tpdf 是一个 matlab 函数,而 skewtdis:inverse 如下所示:

我得到的是:

skewtdis_inverse 错误(第 6 行) c = gamma((nu+1)/2)/(sqrt(pi*(nu-2))*gamma(nu/2));

在调用“F:\Xyz\skewtdis_inverse.m>skewtdis_inverse”期间未分配输出参数“inv”(可能还有其他参数)。

@(u)tpdf((0-lambda*skewtdis_inverse(u,nu,psi)),nu) 中的错误

积分计算/迭代标量值错误(第 314 行)fx = FUN(t);

积分计算/vadapt 中的错误(第 133 行)[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);

积分计算中的错误(第 76 行)[q,errbnd] = vadapt(@AtoBInvTransform,interval);

积分错误(第 89 行) Q = integralCalc(fun,a,b,opstruct);

但是,如果 i 直接调用 thr 句柄中的函数,则没有问题:

tpdf((0 - lambda * skewtdis_inverse(1e-10, nu, psi)), nu)

答案=

1.4092e-11

tpdf((0 - lambda * skewtdis_inverse(1-1e-10, nu, psi)), nu)

答案=

7.0108e-10

非常感谢您的努力!