如何计算实数的逆阶乘?

时间:2010-06-21 13:14:08

标签: algorithm math factorial

有没有办法计算实数的反因子?

例如 - 1.5 ! = 1.32934039

如果我的值为1.5,有没有办法获取1.32934039

我正在尝试

  

http://www.wolframalpha.com/input/?i=Gamma^(-1)[1.32934039]

但这是一次失败。

3 个答案:

答案 0 :(得分:5)

使用wolframalpha.com,您可以要求

Solve[Gamma[x+1]==1.32934039,x]

正如评论中所提到的,Gamma没有唯一的逆。即使在解决传统因子时也是如此,例如

Solve[Gamma[x+1]==6,x]

得出几个答案,其中一个是3。

您可以使用Factorial []:

,而不是在WolframAlpha中使用Gamma []
Solve[Factorial[x]==6,x]
Solve[Factorial[x]==1.32934039,x]

答案 1 :(得分:5)

David Cantrell在this page上给出了Γ -1 (n)的良好近似值:

k = the positive zero of the digamma function, approximately 1.461632
c = Sqrt(2*pi)/e - Γ(k), approximately 0.036534
L(x) = ln((x+c)/Sqrt(2*pi))
W(x) = Lambert W function
ApproxInvGamma(x) = L(x) / W(L(x) / e) + 1/2

答案 2 :(得分:3)

对于你可以做的整数:

i = 2
n = someNum
while (n != 1):
    n /= i
    i += 1
return (i==1 ? i : None)

实数的阶乘没有逆。你说“每个函数必须有一个逆”。那是不对的。考虑常数函数f(x)=0。什么是f^-1(42)?要使函数反转,必须 注入注入