Нижняя неполная гамма-функция может быть определена в терминах неправильного интеграла в соответствии с Wikipedia . Этот интеграл может быть связан с обобщенной формой экспоненциального интеграла . На обеих страницах дано это соотношение между ними:
E_n(x) = x^(n-1)*gamma(1-n, x)
Так что для случая в OP у нас будет n=2
, что соответствует -1
в качестве первого входного параметра для гамма-функции. Я численно проверил в SageMath, что вышеприведенное соотношение выполняется. Соответствующие функции в SageMath:
1. gamma(n, x) == gamma_inc(n, x)
2. E_n(x) == exp_integral_e(n, x)
, которые в соответствии с отношением Википедии дают нам (помимо ошибок округления):
exp_integral_e(n, x) == x^(n-1)*gamma_inc(1-n, x)
Соответствующие функции Python:
1. gamma(n, x) == scipy.special.gammainc(n, x)
2. E_n(x) == scipy.special.expn(n, x)
Что в соответствии с отношением Википедии дает нам (помимо ошибок округления):
expn(n, x) == x**(n-1)*gammainc(1-n, x)
Есть одно небольшое предостережение. Функция gamma_inc
из SageMath принимает отрицательный первый входной параметр, а функция gammainc
из scipy.special
- нет. Однако функция expn
из scipy.special
не имеет этого ограничения, поскольку ее можно оценить для n>=2
, соответствующего отрицательному первому входному параметру для gamma_inc
.
Таким образом, ответ на OP использовать отношение Википедии для замены нижней неполной гамма-функции обобщенным экспоненциальным интегралом и использовать scipy.special.expn
для оценки в Python.