2014-12-17 5 views
0

Я работаю над проблемой упрощенного переноса излучения, и я получаю интеграл от формы
\ int_ {x_0}^{x_1} e^{+ t} t^a dt
в одном из моих уравнений. Есть ли:
1. Специальное имя для такой функции, которую я просто не смог найти? Это явно связано с неполной гамма-функцией
\ frac {1} {\ Gamma (a)} \ int_0^{x} e^{- t} t^{a-1} dt
, которая реализована под номером scipy.special.gammainc. Я уже использовал это в более ранней части моего кода.
2. Достаточно быстрая реализация такой функции, где показатель $ a $ фиксирован, но границы интегрирования $ x_ {0,1} $ являются переменными? Предпочтительно, где $ x_ {0,1} $ может быть числовыми векторами одинаковой длины или где один является скаляром? (Я могу обсудить, как это вписывается в проблему, если бы прояснить вещи.)Scipy - Противоположность неполной гамма-функции

Две простые обходные использовать scipy.integrate.quad или scipy.integrate.cumtrapz:

from scipy.integrate import quad 
from scipy.integrate import cumtrapz 
from numpy import exp, empty_like, linspace, ones 

a = 0.286 * 4.0 
fIntegrand = lambda t: exp(t) * t**a 

def FIntegrated1(x0,x1): 
    # Use quad to do integrals one by one 
    F = empty_like(x0) 
    for i in xrange(x0.size): 
     F[i] = quad(fIntegrand, x0[i], x1[i])[0] 
    return F 

def FIntegrated2(x): 
    # Use cumtrapz 
    # x is a numpy array from x0 to maximum x1 to be calculated 
    F = cumtrapz(fIntegrand, x=x, initial=0.0) 
    return F 

# Test out with typical values 
x = linspace(.5,8,50) 
x1 = x[1:] 
x0 = ones(x1.shape) * .5 
F1 = FIntegrated1(x0,x1) 
F2 = FIntegrated2(x) 

Ни Обходной особенно медленно или особенно быстро, но более высокий подход был бы весьма полезен.

ответ

0

Документация для (нижней) неполной гамма-функции в SciPy: (link)

+0

Если я читаю этот вопрос правильно, OP уже знаком с этой функцией. – DSM

+0

Да, ты прав. – ErikR

Смежные вопросы