Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
2 LA FUNCIÓN Γ DE EULER
Método 1 (El más fácil y preciso, pero caradura). Consiste en usar el comando de MATLAB gamma:
>> p=linspace(0,1,100);
>> G=gamma(p);
>> plot(p,G)
>> axis([0 1 0 10]);
>> xlabel(’p’)
>> ylabel(’G’)
>> title(’Funcion Gamma de Euler’);
Método 2 (Ni fácil, ni preciso). Escribimos la integral impropia Γ(p) como la suma de dos integrales:
Z M Z +∞
Γ(p) = xp−1 e−x dx + xp−1 e−x dx.
0 M
La segunda integral tiende a cero cuando M → +∞. Efectivamente, pues si M ≥ 1, entonces
Z +∞ Z +∞
x=+∞
xp−1 e−x dx ≤ e−x dx = −e−x x=M = e−M .
0≤
M M
Por tanto, fijada cualquier pequeña tolerancia 0 < 1, podemos encontrar un valor M ≥ 1 de
forma que la segunda integral sea menor que . Concretamente, basta tomar M = − log(). Después
calculamos la primera integral usando el comando de MATLAB quadl con la misma tolerancia . Es
importante observar que aunque el intervalo [0, M ] es compacto, la función f (x) = xp−1 e−x tiene una
singularidad en x = 0, luego el método puede fallar.
>> epsilon = 1.e-5;
>> p=linspace(0,1,100);
>> G=Gamma_cutre(p,epsilon);
>> plot(p,G)
>> axis([0 1 0 10]);
>> xlabel(’p’)
>> ylabel(’G’)
>> title(’Funcion Gamma de Euler’);
El fichero Gamma cutre.m contiene las instrucciones para calcular Γ(p):
function G=Gamma_cutre(p,epsilon)
M=-log(epsilon);
G=quadl(@(x) x.^(p-1).*exp(-x),0,M,epsilon);
Advertencia: Si escogemos una tolerancia demasiado pequeña (por ejemplo, si p = 1/2 y = 10−10 ),
la función Gamma cutre.m se queja debido a la singularidad que tiene f (x) = xp−1 e−x en x = 0.
Método 3 (Relativamente preciso, pero no fácil). Escribimos que
1 +∞ p −x 1 M p −x 1 +∞ p −x
Z Z Z
Γ(p + 1)
Γ(p) = = x e dx = x e dx + x e dx.
p p 0 p 0 p M
El nuevo integrando g(x) = xp e−x ya no es singular en x = 0 (recordemos que p > 0) y la segunda
integral sigue tendiendo a cero cuando M → +∞. Por tanto, fijada cualquier pequeña tolerancia
0 < 1, podemos encontrar un valor M ≥ 1 de forma que la segunda integral sea menor que . Se
puede probar (ejercicio para el lector, no es fácil) que el cero de la función
x
h(x) := 1 + xp−1 e−x −
p
que está cerca de la aproximación inicial x0 := − log() es un valor adecuado M .
Ası́ pues, crearemos un fichero Gamma mejor.m con las siguientes instrucciones para calcular Γ(p):
function G=Gamma_mejor(p,epsilon)
M=fzero(@(x) (1+x/p).*x.^(p-1).*exp(-x)-epsilon,-log(epsilon));
G=quadl(@(x) x.^p.*exp(-x),0,M,epsilon)/p;
Dibujaremos la función gamma con las mismas instrucciones de los método anteriores, pero usando
la nueva función Gamma mejor.m, en vez del comando gamma o de la vieja función Gamma cutre.m.