Polinomios de Laguerre y Hermite

Polinomios de Laguerre

Ecuación diferencial x d 2 y d x 2 +(1x) dy dx +ny=0,n=0,1,2,3,...
Fórmula de Rodríguez L n (x)= e x n! d n d x n ( e x x n )
Relación de recurrencia (n+1) L n+1 (x)=(2n+1x) L n (x)n L n1 (x)

Los primeros polinomios de Laguerre son.

L 0 (x)=1 L 1 (x)=1x L 2 (x)= 1 2! ( 24x+ x 2 ) L 3 (x)= 1 3! ( 618x+9 x 2 x 3 ) L 4 (x)= 1 4! ( 2496x+72 x 2 16 x 3 + x 4 ) L 5 (x)= 1 5! ( 120600x+600 x 2 200 x 3 +24 x 4 x 5 ) L 6 (x)= 1 6! ( 7204320x+5400 x 2 2400 x 3 +450 x 4 36 x 5 + x 6 )

Utilizamos la función laguerreL de MATLAB para mostrar los primeros polinomios de Laguerre

>> syms x;
>> for n=0:6
laguerreL(n,x)
end
 
ans =1
ans =1 - x
ans =x^2/2 - 2*x + 1
ans =- x^3/6 + (3*x^2)/2 - 3*x + 1
ans =x^4/24 - (2*x^3)/3 + 3*x^2 - 4*x + 1
ans =- x^5/120 + (5*x^4)/24 - (5*x^3)/3 + 5*x^2 - 5*x + 1
ans =x^6/720 - x^5/20 + (5*x^4)/8 - (10*x^3)/3 + (15*x^2)/2 - 6*x + 1

Representamos gráficamente los polinomios de L1(x) a L6(x) empleando el comando fplot.

hold on
for n=1:6
    fplot(@(x) laguerreL(n,x),[0,5]);
end
hold off
grid on
xlabel('x')
ylabel('L_n(x)')
title('Polinomios de Laguerre')

Utilizamos la relación de recurrencia para crear una función recursiva laguerre para obtener los valores Ln(x),

function res=laguerre(n,x) %n=2,3,4...
   if n==0
        res=1;
    elseif n==1
        res=1-x;
    else
        res=((2*n-1-x).*laguerre(n-1,x)-(n-1)*laguerre(n-2,x))/n;
   end
end

Llamamos a la función laguerre para n=3

>> syms x;
>> laguerre(3,x)
ans =(2*x)/3 - ((((x - 1)*(x - 3))/2 - 1/2)*(x - 5))/3 - 2/3
>> expand(ans)
ans =- x^3/6 + (3*x^2)/2 - 3*x + 1

Otra forma de obtener los polinomios de Laguerre es

L n (x)=1+ k=1 n ( n k ) ( 1 ) k k! x k =n! k=0 n ( 1 ) k (nk) ( !k ) 2 x k

function res=laguerre_4(n)
    syms x;
    res=1;
    for k=1:n
        res=res+x^k*nchoosek(n,k)*(-1)^k/factorial(k);
    end
end

Llamamos a la función laguerre_4 y también a laguerreL de MATLAB, para comprobar que se obtiene el mismo resultado

>> laguerre_4(3)
ans =- x^3/6 + (3*x^2)/2 - 3*x + 1
>> laguerreL(3,x)
ans =- x^3/6 + (3*x^2)/2 - 3*x + 1

De otra forma

syms x k;
for n=0:6
    pol=factorial(n)*symsum((-1)^k*x^k/(factorial(n-k)*factorial(k)^2),k,0,n)
end
pol =1
pol =1 - x
pol =x^2/2 - 2*x + 1
pol =- x^3/6 + (3*x^2)/2 - 3*x + 1
pol =x^4/24 - (2*x^3)/3 + 3*x^2 - 4*x + 1
pol =- x^5/120 + (5*x^4)/24 - (5*x^3)/3 + 5*x^2 - 5*x + 1
pol =x^6/720 - x^5/20 + (5*x^4)/8 - (10*x^3)/3 + (15*x^2)/2 - 6*x + 1

Definimos una función que calcula los coeficientes del polinomio de Laguerre de grado n

function p=laguerre_p(n)
    p=zeros(n+1,1);
    p1=zeros(n,1);
    p0=zeros(n-1,1);
    format rat;
%valores iniciales   
    p0=[1];
    p1=[-1 1];
   if n==0
       p=p0;
   elseif n==1
        p=p1;
   else
        for k=2:n
            p=((2*k-1)*[0 p1]-[p1 0]-(k-1)*[0 0 p0])/k;
            p0=p1;
            p1=p;
        end
   end
end

La función poly2sym convierte el vector de los coeficientes en un polinomio simbólico p(x)

>> syms x;
>> L4=poly2sym(laguerre_p(4))
L4 =x^4/24 - (2*x^3)/3 + 3*x^2 - 4*x + 1
>> L5=poly2sym(laguerre_p(5))
L5 =- x^5/120 + (5*x^4)/24 - (5*x^3)/3 + 5*x^2 - 5*x + 1

Mediante la función polyval de MATLAB, se calcula el valor del polinomio de Laguerre para un valor de x o para un vector de datos x

>> polyval(laguerre_p(4),2)
ans =       1/3     
>> laguerreL(4,2)
ans =       1/3   

Propiedades

Polinomio p(x) de grado n

1= L 0 x= L 0 L 1 x 2 =2 L 0 4 L 1 +2 L 2 x 3 =6 L 0 18 L 1 +18 L 2 6 L 3 x 4 =24 L 0 96 L 1 +144 L 2 96 L 3 +24 L 4 x 5 =120 L 0 600 L 1 +1200 L 2 1200 L 3 +600 L 4 120 L 5 x 6 =720 L 0 4320 L 1 +10800 L 2 1440 L 3 +10800 L 4 4320 L 5 +720 L 6

Una potencia xn se puede expresar como una combinación lineal de n+1 polinomios de Laguerre Lk(x), k=0, 1, 2...n, Los coeficientes valen

0 x n e x L k (x)dx = ( 1 ) k ( n k )n!,k=0,1,2...n

function res=potencia(n)
    syms x;
    res=zeros(1,n+1);
    for k=0:n
        res(k+1)=int(exp(-x)*x^n*laguerreL(k,x),x,0,inf);
    end
end

Por ejemplo, para x3 y x5

>> potencia(3)
ans =    6   -18    18    -6
>> potencia(5)
ans =    120        -600        1200       -1200         600        -120

Alternativamente

function res=potencia_1(n)
    res=zeros(1,n+1);
    for k=0:n
        res(k+1)=(-1)^k*nchoosek(n,k)*factorial(n);
    end
 end

Definida esta función, podemos expresar cualquier polinomio p(x) en términos de los polinomios de Lagerre Lk(x)

function res=polinomio(pol)
    res=zeros(1,length(pol));
    for n=0:length(pol)-1
        for k=0:n
             res(k+1)=res(k+1)+(-1)^k*nchoosek(n,k)*factorial(n)*pol(length(pol)-n);
        end  
    end
 end

El polinomio 2x3+4x2+2x+1, se expresa como una combinación lineal de los polinomios de Laguerre, a0L0(x)+a1L1(x)+a2L2(x)+a3L3(x). Los coeficientes valen

>> polinomio([2,4,2,1])
ans =    23   -54    44   -12

Comprobación

>> 23*laguerreL(0,x)-54*laguerreL(1,x)+44*laguerreL(2,x)-12*laguerreL(3,x)
ans =2*x^3 + 4*x^2 + 2*x + 1

Polinomios asociados de Laguerre

La ecuación diferencial y su solución, los polinomios asociados de Laguerre, son

x d 2 y d x 2 +( m+1x ) dy dx +ny=0 L n m (x)= ( 1 ) m d m d x m L m+n (x)=(n+m)! k=0 n ( 1 ) k (nk)!(k+m)!k! x k

Generamos el polinomio asociado L 2 3 (x) con el siguiente código

syms x k;
n=2;
m=3;
pol=symsum((-1)^k*factorial(n+m)*x^k/(factorial(n+m-k)*factorial(k)^2),k,0,n+m);
pol_n_m=(-1)^m*diff(pol,m)
pol1_n_m=factorial(n+m)*symsum((-1)^k*x^k/(factorial(n-k)*factorial(m+k)*
factorial(k)),k,0,n)
pol_n_m =x^2/2 - 5*x + 10
pol1_n_m =x^2/2 - 5*x + 10

Generamos los polinomios asociados L n m (x) con el siguiente código

syms x k;
for n=0:3
    for m=0:n
        disp([n,m])
        pol_n_m=factorial(n+m)*symsum((-1)^k*x^k/(factorial(n-k)*
factorial(m+k)*factorial(k)),k,0,n)
    end
end
      0     0    pol_n_m =1
      1     0    pol_n_m =1 - x
      1     1    pol_n_m =2 - x
      2     0    pol_n_m =x^2/2 - 2*x + 1
      2     1    pol_n_m =x^2/2 - 3*x + 3
      2     2    pol_n_m =x^2/2 - 4*x + 6
      3     0    pol_n_m =- x^3/6 + (3*x^2)/2 - 3*x + 1
      3     1    pol_n_m =- x^3/6 + 2*x^2 - 6*x + 4
      3     2    pol_n_m =- x^3/6 + (5*x^2)/2 - 10*x + 10
      3     3    pol_n_m =- x^3/6 + 3*x^2 - 15*x + 20

L 0 0 (x)=1 L 1 0 (x)=1x L 1 1 (x)=2x L 2 0 (x)= 1 2 x 2 2x+1 L 2 1 (x)= 1 2 x 2 3x+3 L 2 2 (x)= 1 2 x 2 4x+6

Dado n, los polinomios asociados de Laguerre para distintos valores de m son

L 0 m (x)=1 L 1 m (x)=x+m+1 L 2 m (x)= 1 2 ( x 2 2(m+2)x+(m+1)(m+2) ) L 3 m (x)= 1 6 ( x 3 +3(m+3) x 2 3(m+2)(m+3)x+(m+1)(m+2)(m+3) )

Utilizando la función laguerreL de MATLAB

>> syms m x;
>> laguerreL(1,m,x)
ans =m - x + 1
>> laguerreL(2,m,x)
ans =(3*m)/2 - x*(m + 2) + m^2/2 + x^2/2 + 1
>> laguerreL(3,m,x)
ans =(11*m)/6 - x*(m^2/2 + (5*m)/2 + 3) + x^2*(m/2 + 3/2) + m^2 + m^3/6 - x^3/6 + 1

Propiedades

Relaciones de recurrencia

n L n m (x)=( 2n+m1x ) L n1 m (x)( n+m1 ) L n2 m (x),n=2,3,4...

function res=laguerre_a(n,m, x) %n=2,3,4...
   if n==0
        res=1;
    elseif n==1
        res=-x+m+1;
    else
        res=((2*n+m-1-x).*laguerre_a(n-1,m, x)-(n+m-1)*laguerre_a(n-2,m, x))/n;
   end
end
>> syms x;
>> m=2;
>> n=2;
>> laguerre_a(n,m,x)
ans =((x - 3)*(x - 5))/2 - 3/2
>> expand(ans)
ans =x^2/2 - 4*x + 6

Relaciones de ortogonalidad

0 e x x k L n k (x) L m k (x)dx={ 0,mn (n+k)! n! ,m=n

Comprobación

0 e x x 2 L 2 2 (x) L 3 2 (x)dx=0 0 e x x 2 ( L 2 2 (x) ) 2 dx= (2+2)! 2! =12 0 e x x 2 ( L 3 2 (x) ) 2 dx= (3+2)! 3! =20

syms x;
k=2;
f_2=(x^2-2*(k+2)*x+(k+1)*(k+2))/2;
f_3=(-x^3+3*(k+3)*x^2-3*(k+2)*(k+3)*x+(k+1)*(k+2)*(k+3))/6;
int(exp(-x)*x^k*f_2*f_3,x,0,inf)
int(exp(-x)*x^k*f_2^2,x,0,inf)
int(exp(-x)*x^k*f_3^2,x,0,inf)
ans =0
ans =12
ans =20 

Alternativamente, utilizando la función laguerreL de MATLAB

syms x;
k=2;
int(exp(-x)*x^k*laguerreL(2,k,x)*laguerreL(3,k,x),x,0,inf)
int(exp(-x)*x^k*laguerreL(2,k,x)^2,x,0,inf)
int(exp(-x)*x^k*laguerreL(3,k,x)^2,x,0,inf)

Polinomios de Hermite

Ecuación diferencial x d 2 y d x 2 2x dy dx +2ny=0,n=0,1,2,3,...
Fórmula de Rodríguez H n (x)= ( 1 ) n e x 2 d n d x n ( e x 2 )
Relación de recurrencia H n+1 (x)=2x H n (x)2n H n1 (x)

Los primeros polinomios de Hermite son.

H 0 (x)=1 H 1 (x)=2x H 2 (x)=4 x 2 2 H 3 (x)=8 x 3 12x H 4 (x)=16 x 4 48 x 2 +12 H 5 (x)=32 x 5 160 x 3 +120x H 6 (x)=64 x 6 480 x 4 +720 x 2 120 H 7 (x)=128 x 7 1334 x 5 +3360 x 3 1680x

Utilizamos la función hermiteH de MATLAB para mostrar los primeros polinomios de hermite

>> syms x;
>> for n=0:6
hermiteH(n,x)
end
 
ans =1 
ans =2*x
ans =4*x^2 - 2
ans =8*x^3 - 12*x
ans =16*x^4 - 48*x^2 + 12
ans =32*x^5 - 160*x^3 + 120*x
ans =64*x^6 - 480*x^4 + 720*x^2 - 120

Representamos gráficamente los polinomios de H1(x) a H4(x) empleando el comando fplot.

hold on
for n=1:4
    fplot(@(x) hermiteH(n,x),[-2,2]);
end
hold off
grid on
ylim([-30,30])
xlabel('x')
ylabel('H_n(x)')
title('Polinomios de Hermite')

Utilizamos la relación de recurrencia para crear una función recursiva hermite para obtener los valores Hn(x),

function res=hermite(n,x) %n=2,3,4...
   if n==0
        res=1;
    elseif n==1
        res=2*x;
    else
        res=2*x.*hermite(n-1,x)-2*(n-1)*hermite(n-2,x);
    end
end

Llamamos a la función hermite y también a hermiteH de MATLAB, para comprobar que se obtiene el mismo resultado

>> hermite(4,5)
ans =        8812
>> hermiteH(4,5)
ans =        8812

Definimos una función que calcula los coeficientes del polinomio de Hermite de grado n

function p=hermite_p(n)
    p=zeros(n+1,1);
    p1=zeros(n,1);
    p0=zeros(n-1,1);
%valores iniciales   
    p0=[1];
    p1=[2 0];
   if n==0
       p=p0;
   elseif n==1
        p=p1;
   else
        for k=2:n
            p=2*[p1 0]-2*(k-1)*[0 0 p0];
            p0=p1;
            p1=p;
        end
   end
end

La función poly2sym convierte el vector de los coeficientes en un polinomio simbólico p(x)

>> syms x;
>> H4=poly2sym(hermite_p(4))
H4 =16*x^4 - 48*x^2 + 12
>> H5=poly2sym(hermite_p(5))
H5 =32*x^5 - 160*x^3 + 120*x

Mediante la función polyval de MATLAB, se calcula el valor del polinomio de Hermite para un valor de x o para un vector de datos x

>> polyval(hermite_p(4),2)
ans =    76
>> hermiteH(4,2)
ans =    76

Propiedades

Ejemplos en el curso de Física

El oscilador armónico cuántico

El oscilador armónico en dos dimensiones

El oscilador armónico en tres dimensiones

El átomo de hidrógeno

Potencial de Morse y potencial de Pöschl–Teller

El átomo de hidrógeno en en dos dimensiones

Referencias

Alan Jeffrey, Hui-Hui Dai. Handbook of Mathematical Formulas and Integrals. Elsevier (2008). págs. 325-332