Procedimiento matricial de Numerov
Procedimiento matricial de Numerov
La ecuación de Schrödinger unidimensional independiente del tiempo para el potencial V(x) es
Denominaremos
Escribimos la ecuación de Schrödinger de la forma
Desarrollamos en serie la función Ψ(x)
donde δ es una cantidad pequeña. Sumamos y despejamos Ψ(2)(x)
Calculamos Ψ(4)(x) de forma similar
En estas dos últimas ecuaciones, sustituimos Ψ(2)(x) por f(x)Ψ(x), y Ψ(4)(x) por la expresión anterior
Denominamos
La ecuación anterior se escribe
Donde
Se transforma en
Ejemplo, sea N=4. Escribimos las ecuaciones para i=1,2,3,4
En forma matricial
En general
El procedimiento matricial de Numerov consiste en determinar los valores propios (energías) y vectores propios (funciones de onda) de la matriz, H=B-1A+V
Procedimiento
Hemos calculado los niveles de energía y representado las funciones de onda del potencial en forma de V
x=linspace(0,6,20);
f=@(x) airy(0,-x); %función Ai(x)
r1=raices(f,x);
f=@(x) airy(1,-x); %derivada de Ai(x)
r2=raices(f,x);
En=sort([r1,r2]);
hold on
line([0,-6],[0,6], 'color','r', 'lineWidth',1.5)
line([0,6],[0,6], 'color','r', 'lineWidth',1.5)
n=3;
f=@(x) airy(x-En(n)).^2;
c=1/sqrt(2*integral(f,0,50)); %por simetría
line([-8,8],[En(n),En(n)],'color','k')
g=@(x) c*airy(x-En(n));
x=linspace(0,8,100);
y=g(x);
if rem(n,2)==1 %si es par i=1,3,5
    yy=[fliplr(y)+En(n),y+En(n)];
else %si es impar
    yy=[-fliplr(y)+En(n),y+En(n)];
end 
plot([-fliplr(x),x],yy)
plot(En(n),En(n),'bo','markersize',4,'markerfacecolor','b')
plot(-En(n),En(n),'bo','markersize',4,'markerfacecolor','b')
text(6.5,En(n)+0.2,sprintf('%1.3f',En(n)))
ylim([0,7])
grid on
xlabel('x')
ylabel('\Psi(x)')
title('Potencial V')
         		
Para un nivel de energía En (línea horizontal de color negro) hay dos puntos de intersección con la función potencial V(x) (puntos de color rojo). Cuando nos alejamos hacia la izquierda y hacia la derecha de dichos puntos, la función de onda (en azul) decrece rápidamente a cero

Sea el potencial V(x) de la figura. Se establece una energía máxima Em. Se calculan las abscisas z1 y z2 de los puntos de intersección V(x)=Em, Cuando el potencial es simétrico z1=-z2.
Se establecen un márgen a la izquierda y a la derecha de dichos puntos
Supondremos que la función de onda es nula en x0 y xN+1, lo que equivale a resolver la ecuación Schrödinger en el potencial
Se ha situado el potencial V(x) dentro de un pozo de potencial de altura infinita
El mínimo valor de la longitud de onda de de Broglie es
Estableceremos como espaciado entre puntos, δ=λ
Si el potencial es simétrico, dejamos márgenes iguales de 4πδ, si no es simétrico se pueden dejar márgenes distintos, mayor a la derecha que a la izquierda como se muestra en la figura
Potencial en forma de V
En la página titulada, Potencial en forma de V. Función de Airy hemos obtenido los niveles de energía y representado las funciones de onda para un potencial mg|x|.
Niveles de energía
Exactos
Los niveles de energía E'=αE son las raíces de la función de Airy Ai o de su derivada. La constante α es
Establecemos un sistema de unidades en el que las constantes ℏ, m, g valen la unidad, entonces,
Los primeros niveles de energía E=E'/α son
x=linspace(0,25,100); f=@(x) airy(0,-x); %función Ai(x) r1=raices(f,x); f=@(x) airy(1,-x); %derivada de Ai(x) r2=raices(f,x); alfa=2^(1/3); En=sort([r1,r2])/alfa;
>> En(1:4) ans = 0.8086 1.8558 2.5781 3.2446 >> En(10) ans = 6.3053 >> En(20) ans = 10.1822 >> En(50) ans = 18.9469
Aproximados
Establecemos una energía máxima Em. Las abscisas de los puntos de intersección V(x)=Em son, ±z1=±Em. Establecemos además, un margen a la izquerda y derecha de 4πδ
El número de puntos es el entero más próximo a
Se crean las matrices A, B y Ep con el comando 
Em=20; %energía máxima h=1/sqrt(2*Em); %paso z1=Em; %abscida punto de intersección N=round(2*(z1/h+4*pi)); %número de puntos xx=-h*N/2+h/2:h:h*N/2-h/2;%abscisas; %matriz B B=diag(10*ones(1,N)/12)+diag(ones(1,N-1)/12,1)+diag(ones(1,N-1)/12,-1); %matriz A A=diag(-2*ones(1,N)/h^2)+diag(ones(1,N-1)/h^2,1)+diag(ones(1,N-1)/h^2,-1); %matriz potencial f=@(x) abs(x); %función potencial Ep=diag(f(xx)); %matriz H H=-inv(B)*A/2+Ep; [V,D]=eig(H); % valores propios, matriz D. Vectores propios, matriz V En=sort(diag(D)); %ordena los valores propios de menor a mayor
>> En(1:4)
ans =
    0.8099
    1.8557
    2.5785
    3.2445
>> En(10)
ans =    6.3049
>> En(20)
ans =   10.1806
>> En(50)
ans =   18.9364
      Comparación
Los valores exactos y aproximados de los niveles de energía n=1,2,3,4,10,20,50, se recogen en la tabla
| n=1 | 2 | 3 | 4 | 10 | 20 | 50 | |
|---|---|---|---|---|---|---|---|
| Exactos | 0.8086 | 1.8558 | 2.5781 | 3.2446 | 6.3053 | 10.1822 | 18.9469 | 
| Aproximados | 0.8099 | 1.8557 | 2.5785 | 3.2445 | 6.3049 | 10.1806 | 18.9364 | 
Función de onda
Exacta
La función de onda para un nivel de energía En es
El coeficiente C se calcula de modo que
Aproximada
La función de onda correpondiente al valor popio En es proporcional al vector propio (columna) n. Utilizamos la función 
Los valores propios de la matriz H aparecen desordendos y hay que ordenarlos de menor a mayor, creamos una función denominada 
Representamos la función de onda correspondiente al nivel de energía n=50, mediante una curva continua y el vector propio correspondiente al valor popio En mediante puntos de color rojo
function numerov_2
%exacto
    x=linspace(0,25,100);
    f=@(x) airy(0,-x); %función Ai(x)
    r1=raices(f,x);
    f=@(x) airy(1,-x); %derivada de Ai(x)
    r2=raices(f,x);
    alfa=2^(1/3);
    E=sort([r1,r2])/alfa;
    
    n=50; %nivel de energía (cambiar)
    f=@(x) airy(alfa*(x-E(n))).^2;
    c=1/sqrt(2*integral(f,0,50)); %por simetría
    g=@(x) airy(alfa*(x-E(n)))*c;
    x=linspace(0,25,400);
    y=g(x);
    if rem(n,2)==1 %si es par i=1,3,5
        yy=[fliplr(y),y];
    else %si es impar
        yy=[-fliplr(y),y];
    end 
    hold on
    plot([-fliplr(x),x],yy)
%aproximado
    Em=20; %energía máxima
    h=1/sqrt(2*Em); %paso
    z1=Em; %abscida punto de intersección, Em=V(x)
    N=round(2*(z1/h+4*pi)); %número de puntos
    xx=-h*N/2+h/2:h:h*N/2-h/2;%abscisas;
    %matriz B
    B=diag(10*ones(1,N)/12)+diag(ones(1,N-1)/12,1)+diag(ones(1,N-1)/12,-1);
    %matriz A
    A=diag(-2*ones(1,N)/h^2)+diag(ones(1,N-1)/h^2,1)+diag(ones(1,N-1)/h^2,-1);
    %matriz potencial V
    f=@(x) abs(x); %función potencial
    Ep=diag(f(xx));
    %matriz H
    H=-inv(B)*A/2 + Ep;
    [V,D]=eig(H); % valores propios, matriz D. Vectores propios, matriz V
    [En,F]=ordenar(diag(D),V);    
    c=1/sqrt(trapz(xx, F(:,n).^2));
    plot(xx,-F(:,n)*c,'ro','markersize',2,'markerfacecolor','r')
    text(-24, 0.1,num2str(En(n)),'VerticalAlignment','bottom', 
'HorizontalAlignment','left');
    hold off
    grid on
    xlabel('x')
    ylabel('\Psi(x)')
    title('Función de onda')
    
    function [x,M]=ordenar(x,M)
        m=length(x);
        for i=1:m
            for j=i+1:m
                if x(i)>x(j)
                    aux=x(j);
                    x(j)=x(i);
                    x(i)=aux;
                    w=M(:,j);
                    M(:,j)=M(:,i);
                    M(:,i)=w;
                 end
            end
        end
    end
end
            		
La representación gráfica (en azul) de la función de onda correspondiente al nivel (valor propio) n=50, cuya energía se muestra a la izquierda, junto al vector propio (puntos de color rojo) correspondiente, es un ejemplo de la exactitud del procedimiento numérico de Numerov.
Para ciertos valores de n es necesario cambiar el signo del vector propio 
El oscilador armónico cuántico

En la página titulada, El oscilador armónico cuántico hemos obtenido los niveles de energía y representado las funciones de onda para un potencial
Tomando una escala de energías y distancias de la forma
La ecuación de Schrödinger se transforma en otra más simple
Exactos
Los niveles de energía son
La función de onda correspondiente al nivel de energía n es
Aproximados
Establecemos una energía máxima Em. Las abscisas de los puntos de intersección V(x)=Em son . Establecemos además, un margen a la izquerda y derecha de 4πδ
El número de puntos es el entero más próximo a
Se crean las matrices A, B y Ep con el comando 
Los vectores y matrices en MATLAB comienzan con el índice i=1. El nivel de energía n, se corresponde con el índice n+1 en el cálculo aproximado mediante el procedimiento de Numerov
Representamos la función de onda correspondiente al nivel de energía n=10, mediante una curva continua y el vector propio correspondiente al valor popio εn mediante puntos de color rojo
function numerov_1
    Em=20; %energía máxima
    h=1/sqrt(2*Em); %paso
    z1=sqrt(2*Em); %abscida punto de intersección, Em=V(x)
    N=round(2*(z1/h+4*pi)); %número de puntos
    x=-h*N/2+h/2:h:h*N/2-h/2;%abscisas;
%exacto
    n=10; %nivel de energía (cambiar)
    y=hermiteH(n,x).*exp(-x.^2/2)/sqrt(2^n*sqrt(pi)*factorial(n));
    hold on
    plot(x,y) 
%aproximado
    %matriz B
    B=diag(10*ones(1,N)/12)+diag(ones(1,N-1)/12,1)+diag(ones(1,N-1)/12,-1);
    %matriz A
    A=diag(-2*ones(1,N)/h^2)+diag(ones(1,N-1)/h^2,1)+diag(ones(1,N-1)/h^2,-1);
    %matriz potencial V
    f=@(x) x.^2/2; %función potencial
    Ep=diag(f(x));
    %matriz H
    H=-inv(B)*A/2+Ep;
    [V,D]=eig(H); % valores propios, matriz D. Vectores propios, matriz V
    [En,F]=ordenar(diag(D),V);    
    c=1/sqrt(trapz(x, F(:,n+1).^2));
    plot(x,-F(:,n+1)*c,'ro','markersize',2,'markerfacecolor','r')
    text(-9, 0.1,num2str(En(n+1)),'VerticalAlignment','bottom', 
'HorizontalAlignment','left');
    hold off
    grid on
    xlabel('x')
    ylabel('\Psi(x)')
    title('Función de onda')
    
    function [x,M]=ordenar(x,M)
        m=length(x);
        for i=1:m
            for j=i+1:m
                if x(i)>x(j)
                    aux=x(j);
                    x(j)=x(i);
                    x(i)=aux;
                    w=M(:,j);
                    M(:,j)=M(:,i);
                    M(:,i)=w;
                 end
            end
        end
    end
end
            		
Para n=10, el valor exacto de la energía es εn=10+1/2=10.5. El valor aproximado que obtenemos, mediante el procedimiento matricial de Numerov, es 10.4961
Para ciertos valores de n es necesario cambiar el signo del vector propio 
Otros potenciales
En este apartado, calculamos los niveles de energía y representamos las funciones de onda para el potencial
Establecemos un sistema de unidades en el que ℏ=m=1
Representamos el potencial para a=1, b=-4.9497, para tres valores de α=2, 3, 4
a=1;
b=-4.9497;
hold on
for alfa=2:4
    fplot(@(x) a*x.^(2*alfa)+b*x.^2,[-3,3],'displayName',num2str(alfa))
end
hold off
ylim([-10,15])
grid on
legend('-DynamicLegend','location','best')
xlabel('x')
ylabel('V(x)')
title('Potencial')
       
Aplicamos el procedimiento matricial de Numerov para el caso α=3
function numerov_7
    alfa=3;  
    a=1;
    b=-4.9497;
    Em=20; %energía máxima
    raices=roots([1,0,0,0,b,0,-Em]);  %intersección Em=V(x)
    z1=-raices(1);
    h=1/sqrt(2*Em); %paso
    N=round(2*(z1/h+4*pi)); %número de puntos
    x=-h*N/2+h/2:h:h*N/2-h/2;%abscisas;
    %matriz B
    B=diag(10*ones(1,N)/12)+diag(ones(1,N-1)/12,1)+diag(ones(1,N-1)/12,-1);
    %matriz A
    A=diag(-2*ones(1,N)/h^2)+diag(ones(1,N-1)/h^2,1)+diag(ones(1,N-1)/h^2,-1);
    %matriz potencial V
    f=@(x) a*x.^(2*alfa)+b*x.^2; %función potencial
    Ep=diag(f(x));
    %matriz H
    H=-inv(B)*A/2+Ep;
    [V,D]=eig(H); % valores propios, matriz D. Vectores propios, matriz V
    [En,F]=ordenar(diag(D),V);
    fplot(@(x) a*x.^(2*alfa)+b*x.^2,[-3,3]) %energía potencial
    for k=1:7 %niveles de energía
        raices=roots([1,0,0,0,b,0,-En(k)]);
         for m=1:length(raices)
            if isreal(raices(m))
                z1=real(raices(m));
                break;
            end
        end
        line([-z1,z1],[En(k),En(k)],'color','r')
    end
    grid on
    ylim([-5,15])
    xlabel('x')
    ylabel('E_n')
    title('Niveles de energía')
    disp(En(1:10))
    
    %funciones de onda
    figure 
    hold on
    for n=1:3
        c=1/sqrt(trapz(x, F(:,n).^2));
        plot(x,F(:,n)*c,'-o','markersize',2,'markerfacecolor','r',
'displayName',num2str(n))
    end
    hold off
    xlim([-2.5,2.5])
    grid on
    legend('-DynamicLegend','location','best')
    xlabel('x')
    ylabel('\Psi(x)')
    title('Función de onda')
    
    function [x,M]=ordenar(x,M)
        m=length(x);
        for i=1:m
            for j=i+1:m
                if x(i)>x(j)
                    aux=x(j);
                    x(j)=x(i);
                    x(i)=aux;
                    w=M(:,j);
                    M(:,j)=M(:,i);
                    M(:,i)=w;
                 end
            end
        end
    end
end   
  Se comparan los niveles de energía calculados mediante este script (1), con los que aparecen en la Tabla I (2) del segundo artículo mencionado en las referencias
| n | 1 | 2 | 3 | 4 | 5 | 6 | 
|---|---|---|---|---|---|---|
| (1) | -1.6821 | -1.3473 | 1.6807 | 4.2761 | 7.7245 | 11.6998 | 
| (2) | -1.6815 | -1.3475 | 1.6815 | 4.2795 | 7.7355 | 11.7255 | 

Las funciones de onda correspondientes a los tres primeros niveles de energía son

Cambiamos el valor del coeficiente b=-10.6066 manteniendo el valor de α=3
function numerov_8
    alfa=3;  
    a=1;
    b=-10.6066;
    Em=20;   
    raices=roots([1,0,0,0,b,0,-Em]);  %intersección Em=V(x)
    z1=-raices(1);
     h=1/sqrt(2*Em); %paso
     N=round(2*(z1/h+4*pi)); %número de puntos
     x=-h*N/2+h/2:h:h*N/2-h/2;%abscisas;
%aproximado
    %matriz B
    B=diag(10*ones(1,N)/12)+diag(ones(1,N-1)/12,1)+diag(ones(1,N-1)/12,-1);
    %matriz A
    A=diag(-2*ones(1,N)/h^2)+diag(ones(1,N-1)/h^2,1)+diag(ones(1,N-1)/h^2,-1);
    %matriz potencial V
    f=@(x) a*x.^(2*alfa)+b*x.^2; %energía potencial
    Ep=diag(f(x));
    %matriz H
    H=-inv(B)*A/2+Ep;
    [V,D]=eig(H); % valores propios, matriz D. Vectores propios, matriz V
    [En,F]=ordenar(diag(D),V);
    fplot(@(x) a*x.^(2*alfa)+b*x.^2,[-3,3])
    for k=1:8
        raices=roots([1,0,0,0,b,0,-En(k)]);
        for m=1:length(raices)
            if isreal(raices(m))
                z1=real(raices(m));
                break;
            end
        end
        line([-z1,z1],[En(k),En(k)],'color','r')
    end
    grid on
    ylim([-15,15])
    xlabel('x')
    ylabel('E_n')
    title('Niveles de energía')
    disp(En(1:10))
    
    %funciones de onda
    figure 
     hold on
    for n=1:3
        c=1/sqrt(trapz(x, F(:,n).^2));
        plot(x,F(:,n)*c,'-o','markersize',2,'markerfacecolor','r'
,'displayName',num2str(n))
    end
    hold off
    xlim([-2.5,2.5])
    grid on
    legend('-DynamicLegend','location','best')
   xlabel('x')
    ylabel('\Psi(x)')
    title('Función de onda')
    
    function [x,M]=ordenar(x,M)
        m=length(x);
        for i=1:m
            for j=i+1:m
                if x(i)>x(j)
                    aux=x(j);
                    x(j)=x(i);
                    x(i)=aux;
                    w=M(:,j);
                    M(:,j)=M(:,i);
                    M(:,i)=w;
                 end
            end
        end
    end
end
   
    Se comparan los niveles de energía calculados mediante este script (1), con los que aparecen en la Tabla II (2) del segundo artículo mencionado en las referencias
| n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
|---|---|---|---|---|---|---|---|---|
| (1) | -8.9668 | -8.9615 | -2.1213 | -1.6321 | 2.1061 | 5.0461 | 8.9177 | 13.2429 | 
| (2) | -8.9655 | -8.9605 | -2.1165 | -1.6265 | 2.1165 | 5.0695 | 8.9655 | 13.3315 | 

Las funciones de onda correspondientes a los tres primeros niveles de energía son

El lector puede cambiar el parámetro α a los valores 1 y 4 y observar los resultados, comparándolos con los de la tabla I (b=-4.9497) y la tabla II (b=-10.6066) del segundo artículo mencionado en las referencias
El potencial Morse
En la página titulada Potencial de Morse y potencial de Pöschl–Teller, hemos calculado los niveles de energía y las funciones de onda de una molécula de CO. Los datos son
- Masa del Carbono, 12.0115, amu
 - Masa del Oxígeno, 15.994, amu
 - Parámetro D=10.970, eV
 - Parámetro α=2.325, Å-1
 
La masa reducida m=m1·m2/(m1+m2)=6.8608 amu
Los puntos de intersección de la recta y=E y la función potencial y=Dexp(-2αx)-2Dexp(-αx) se han calculado en la página titulada el El potencial de Morse
D=10.970; %eV
alfa=2.325; %A^-1
mC=12.0115; %amu
f=@(x) D*exp(-2*alfa*x)-2*D*exp(-alfa*x); %en eV
fplot(f,[-0.35,3])
E=-4;
hold on
line([-0.35,3],[E,E])
x1=-log(1+sqrt((E+D)/D))/alfa;
x2=-log(1-sqrt((E+D)/D))/alfa;
plot(x1,f(x1),'ro','markersize',3,'markerfacecolor','r')
plot(x2,f(x2),'ro','markersize',3,'markerfacecolor','r')
hold off
grid on
xlabel('x')
ylabel('V(x)')
title('Potencial V(x)')
             
Aplicamos el procedimiento Numerov, comparando la solución analítica y numérica
Expresamos el potencial V(x) en eV y la energía E en eV
  function numerov
    D=10.970; %eV
    alfa=2.325; %A^-1
    mC=12.0115; %amu
    mO=15.9994;
    mu=mO*mC*1.6604e-27/(mO+mC); %masa reducida, en kg
    f=@(x) D*exp(-2*alfa*x)-2*D*exp(-alfa*x); %potencial en eV
    lambda=sqrt(2*mu*D*1.6e-19)/(alfa*1e10*1.0545e-34);
    
    n=2; %numero de nivel (cambiar)
    
    %solución analítica
    E=(-D*1.6e-19+alfa*1e10*1.0545e-34*sqrt(2*D*1.6e-19/mu)*(n+1/2)-
(alfa*1e10*1.0545e-34)^2*(n+1/2).^2/(2*mu))/1.6e-19; %en eV
    z1=-log(1+sqrt((E+D)/D))/alfa;
    z2=-log(1-sqrt((E+D)/D))/alfa;    
    hold on
    text(2*z2, 0,num2str(E),'VerticalAlignment','bottom', 'HorizontalAlignment',
'right');
    g=@(x) fOnda(n,x).^2;
    c2=integral(g,3*z1,5*z2);
    x=linspace(2*z1,2*z2,200);
    y=fOnda(n,x)/sqrt(c2); %normaliza
    plot(x,y)
    
    %procedimiento numérico matricial de Numerov
    Em=-6; %energía máxima
    z1=-log(1+sqrt((Em+D)/D))/alfa;
    z2=-log(1-sqrt((Em+D)/D))/alfa;
    %paso en A, h=6.6256e-34 Js, 1eV=1.6021e-19 J
    h=6.6256e-34*1e10/sqrt(2*mu*D*1.6e-19)/10; 
     xx=z1-4*pi*h:h:z2+4*pi*h;%abscisas;
     N=length(xx);
     constante=1.0545e-34^2/(2*mu*1e-10^2*1.6e-19); %en eV/A^2
     %matriz B
     B=diag(10*ones(1,N)/12)+diag(ones(1,N-1)/12,1)+diag(ones(1,N-1)/12,-1);
     %matriz A
     A=diag(-2*ones(1,N)/h^2)+diag(ones(1,N-1)/h^2,1)+diag(ones(1,N-1)/h^2,-1);
     %matriz potencial V
     Ep=diag(f(xx));
     %matriz H
     H=-constante*inv(B)*A+Ep;
     [V,D]=eig(H); % valores propios, matriz D. Vectores propios, matriz V
    [En,F]=ordenar(diag(D),V);   
    disp(En(1:6))
    c2=1/sqrt(trapz(xx, F(:,n+1).^2));
    plot(xx,-F(:,n+1)*c2,'ro','markersize',2,'markerfacecolor','r')
    text(z1, 0.1,num2str(En(n+1)),'VerticalAlignment','bottom', 
'HorizontalAlignment','left');
    hold off
    grid on
    xlabel('x')
    ylabel('\Psi(x)')
    title('Función de onda')
     
   function res=fOnda(n,x)
        m=round(2*lambda-2*n-1);
        z=2*lambda*exp(-alfa*x);
        res=exp(-z/2).*z.^(lambda-n-1/2).*laguerreL(n,m,z);
    end
         
     function [x,M]=ordenar(x,M)
        m=length(x);
        for i=1:m
            for j=i+1:m
                if x(i)>x(j)
                    aux=x(j);
                    x(j)=x(i);
                    x(i)=aux;
                    w=M(:,j);
                    M(:,j)=M(:,i);
                    M(:,i)=w;
                 end
            end
        end
    end    
 end
    Los niveles de energía exactos y aproximados casi coinciden
| n | 0 | 1 | 2 | 3 | 4 | 5 | 
|---|---|---|---|---|---|---|
| En (eV), exactos | -10.8359 | -10.5702 | -10.3078 | -10.0487 | -9.7929 | -9.5404 | 
| En (eV), aprox. | -10.8359 | -10.5702 | -10.3078 | -10.0487 | -9.7929 | -9.5404 | 
Se cambia el número de nivel n=0,1,2,3,... en la línea de código 
Para n=2
Para n=5

A la izquerda, el valor exacto de la energía del nivel seleccionado, En; a la derecha, el valor aproximado

Como podemos apreciar, el procedimiento numérico matricial de Numerov reproduce los cálculos analíticos.
Referencias
Mohandas Pillai, Joshua Goglio, Thad G. Walker. Matrix Numerov method for solving Schrödinger’s equation. Am. J. Phys. 80 (11), November 2012. pp. 1017-1019
N. Al Sdran, F. Maiz. Airy function approach and Numerov method to study the anharmonic oscillator potential V(x)=Ax2α+Bx2. AIP Advances 6, 065323 (2016); https://doi.org/10.1063/1.4954923