Как вычислить обратный факториал действительного числа?

Есть ли способ вычислить обратные факториалы действительных чисел?

Например, 1.5 ! = 1.32934039

Есть ли способ вернуть 1.5, если у меня есть значение 1.32934039?

я пытаюсь

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

но это провал.


person Lazer    schedule 21.06.2010    source источник
comment
К вашему сведению, это также не работает с натуральными числами. т.е. функция Γ, вообще говоря, не имеет обратной.   -  person Konrad Rudolph    schedule 21.06.2010
comment
@Конрад Рудольф: нет обратного? Я не понимаю. Должно быть некоторое обратное.   -  person Lazer    schedule 21.06.2010
comment
Думаю, вы могли бы задать свой вопрос на mathoverflow.net.   -  person Robin Day    schedule 21.06.2010
comment
@Robin Day: здесь говорится, что mathoverflow.net предназначен для математики исследовательского уровня, и такие вопросы на самом деле лучше подходят для этого сайта.   -  person Lazer    schedule 21.06.2010
comment
@Lazer: Если вы считаете wolframalpha.com/input/?i=gamma(x ) вы увидите, что гамма-функция не является инъективной на \R, т. е. некоторые значения y получаются для нескольких значений x. Но если ограничиться x › 2 (скажем), то проблемы нет.   -  person Andreas Rejbrand    schedule 21.06.2010
comment
В конце концов, место для этого вопроса должно быть area51.stackexchange.com/proposals/3355/mathematics, но это не так, и еще бегает.   -  person walkytalky    schedule 21.06.2010
comment
@Lazer: Похоже, вы не просите помощи в том, как что-то закодировать. Скорее вы просите помощи с математическим алгоритмом. Поэтому я бы указал вам на mathoverflow. Может стоит попробовать оба места?!   -  person Robin Day    schedule 21.06.2010
comment
@Robin Day: mathoverflow.com предназначен для изучения математики на исследовательском уровне, а не для уровня средней школы. Я не думаю, что есть что-то лучше, чем stackoverflow.com, для вопросов о математических алгоритмах.   -  person Mike Seymour    schedule 21.06.2010
comment
Возможно, нет лучшего сайта, чем stackoverflow, чтобы задать вопрос, но это все равно не означает, что это хороший вопрос для сайта stackoverflow. Одной из причин успеха stackoverflow является его посвящение и ограничение вопросами кодирования.   -  person Robin Day    schedule 21.06.2010
comment
заменил обратное на обратное.   -  person    schedule 21.06.2010
comment
@Mike: я бы не стал задавать вопросы о гамма-функции школьному уровню...   -  person BlueRaja - Danny Pflughoeft    schedule 21.06.2010


Ответы (3)


Используя wolframalpha.com, вы можете запросить

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

Как упоминалось в комментариях, у Гаммы нет уникальной инверсии. Истинно, даже если вы решаете для обычного факториала, например.

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

дает несколько ответов, один из которых равен 3.

Вместо использования Gamma[] в WolframAlpha вы также можете использовать Factorial[]:

Solve[Factorial[x]==6,x]
Solve[Factorial[x]==1.32934039,x]
person brainjam    schedule 21.06.2010
comment
Обычный факториал определен только для натуральных чисел {0, 1, 2, ...}, и здесь единственная проблема заключается в том, что 0! = 1!. (Например, x! = 6 имеет только один корень в натуральных числах, а именно 3.) - person Andreas Rejbrand; 21.06.2010
comment
@Andreas, OP спрашивает об обобщении обычных факториалов, известном как гамма-функция. Это реализовано в Mathematica/WolphramAlpha как Gamma[x+1] или Factorial[x]. Попробуйте. - person brainjam; 21.06.2010
comment
Конечно, я это знаю. Я очень хорошо знаком с функцией Гамма. Но Brainjam говорит, что у Гаммы нет уникальной инверсии. Истинно, даже если вы решаете для обычного факториала, например. Solve[Gamma[x+1]==6,x] дает несколько ответов, один из которых равен 3. Это можно интерпретировать так, как если бы x! = 6 имеет несколько решений на натуральных числах, что неверно. Единственное решение - 3. Возможно, это просто плохая формулировка. - person Andreas Rejbrand; 21.06.2010
comment
@Андреас, спасибо за разъяснение. Извините, что намекнул, что вы не знали о Гамме, вы, вероятно, знаете о ней больше, чем я. - person brainjam; 21.06.2010
comment
Кто-нибудь получил результат для Solve[Gamma[x+1]==2^1024,x]? Я ничего не получаю. - person Lazer; 21.06.2010
comment
@Lazer, нет, он молча терпит неудачу. Я считаю, что это решается численно, и что рассматриваемые большие числа, вероятно, заставляют его теряться (т.е. не сходятся к решению). 2^1024 находится примерно на уровне 170!, что довольно много. - person brainjam; 21.06.2010
comment
@Lazer Wolfram alpha вычисляет OK до 2 ^ 268. С 2 ^ 269 он молча терпит неудачу (MBS: ручной двоичный поиск :)) - person Dr. belisarius; 22.06.2010

Дэвид Кантрелл дает хорошее приближение Γ-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
person BlueRaja - Danny Pflughoeft    schedule 21.06.2010

Для целых чисел вы можете сделать:

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

Факториал действительных чисел не имеет обратного. Вы говорите, что «каждая функция должна иметь обратную». Это неправильно. Рассмотрим постоянную функцию f(x)=0. Что такое f^-1(42)? Чтобы функция была обратной, она должна быть как внедрением, так и сюръекцией.

person Yuval Adam    schedule 21.06.2010
comment
Должно быть i = 1, деление и приращение нужно поменять местами, и можно просто вернуть i. - person Matthew Flaschen; 21.06.2010
comment
Он не говорит каждую функцию (но, может быть, он редактировал это?). Но Γ(x) на [2,∞) (в отличие от f(x)=0) инъективно. Должна быть обратная по крайней мере для этого поддомена. - person Ken; 21.06.2010
comment
О: спасибо, но я понимаю обратные понятия. То, что я сказал, было в контексте гамма-функции, потому что кажется, что это неубывающая функция один-один, по крайней мере, для положительных действительных чисел. - person Lazer; 22.06.2010
comment
Спасибо, парень. В коде ответа есть опечатки. Но я взял за основу и реализовал эффективный алгоритм. - person midnite; 23.07.2013