Otros pozos rectangulares de potencial

Pozo de potencial asimétrico (I)

Consideremos un pozo de potencial rectangular de anchura a y profundidad V0, descrito por la función V(x)

V(x)={ ,x0 0,0<xa V 0 ,x>a

Estudiamos la solución de la la ecuación de Schrödinger independiente del tiempo para energías E<V0

2 2m d 2 ψ(x) d x 2 +V(x)·ψ(x)=E·ψ(x)

La función de onda en las regiones I y II es

{ ψ I (x)=A e ikx A e ikx ψ II (x)=D e qx

Niveles de energía

La función de onda y su derivada primera es continua en x=a

{ ψ I (a)= ψ II (a) d ψ I (x) dx | x=a = d ψ II (x) dx | x=a { A e ika A e ika =D e qa ik( A e ika +A e ika )=qD e qa

Eliminando A y D de este sistema homogéneo, obtenemos una la ecuación transcendente que determina los niveles de energía permitidos

qsin(ka)+kcos(ka)=0

Establecemos un sistema de unidades tal que =m=1. La ecuación transcendente se escribe en términos de la energía E

2 V 0 2E sin( a 2E )+ 2E cos( a 2E )=0

La altura del pozo rectangular asimétrico es V0=5 y la anchura a=3. Utilizamos la función raices para obtener las raíces de la ecuación transcendente. Representamos la función potencial V(x) y los niveles de energía

function semi_1
    V0=5; %altura
    a=3; %anchura
    f=@(E) sqrt(2*V0-2*E).*sin(sqrt(2*E)*a)+sqrt(2*E).*cos(sqrt(2*E)*a);
    x=linspace(0,V0, 20);
    rr=raices(f,x);
    disp(rr)
    %potencial
    xx=[-0.1, 0, 0, a, a, 2*a, 2*a, -0.1, -0.1];
    yy=[V0+1, V0+1, 0, 0, V0, V0, -0.1, -0.1, V0+1];
    fill(xx,yy, [0.5 0.5 0.5])
    %niveles de energía
    for E=rr
        line([0,a+1],[E,E],'color','b')
        text(a, E,num2str(E),'VerticalAlignment','bottom', 'HorizontalAlignment'
,'right')
   end
    xlabel('')
    ylabel('E')
    title('Niveles de energía')

    function r = raices(f, x)
        y=f(x);
        indices=find(y(1:end-1).*y(2:end)<0);
        r=zeros(1,length(indices));
        for k=1:length(indices)
            r(k)=fzero(f, [x(indices(k)), x(indices(k)+1)]);
        end
    end
end

Funciones de onda

La continuidad de la función de onda en x=a relaciona los coeficientes D y A

D=2Aisin(ka) e qa

La función de onda en las regiones I y II es

{ ψ I (x)=A e ikx A e ikx =2Aisin(kx),0x<a ψ II (x)=D e qx =2Aisin(ka) e qa exp(qx),ax<

El coeficiente A se calcula de modo que

0 a ψ I (x) ψ I * (x)dx+ a ψ II (x) ψ II * (x)dx=1 4 A 2 0 a sin 2 (kx)dx+ 4 A 2 sin 2 (ka) a exp(2qx)dx=1 2( a sin(2ka) 2k + sin 2 (ka) q ) A 2 =1

Representamos las funciones de onda correspondientes a los tres niveles de energía

function semi
    V0=5; %altura
    a=3; %anchura
    %niveles de energía
    f=@(E) sqrt(2*V0-2*E).*sin(sqrt(2*E)*a)+sqrt(2*E).*cos(sqrt(2*E)*a);
    x=linspace(0,V0, 20);
    rr=raices(f,x);
    %funciones de onda
    hold on
    for E=rr
       q=sqrt(2*V0-2*E);
       k=sqrt(2*E);
       A=1/sqrt(2*(a-sin(2*k*a)/(2*k)+sin(k*a)^2/q));
       f1=@(x) 2*A*sin(k*x);
       f2=@(x) 2*A*sin(k*a)*exp(q*a)*exp(-q*x);
       fplot(f1,[0,a])
       fplot(f2,[a,2*a])
    end
    hold off
    grid on
    xlabel('x')
    ylabel('\Phi(x)')
    title('Funciones de onda')

    function r = raices(f, x)
        y=f(x);
        indices=find(y(1:end-1).*y(2:end)<0);
        r=zeros(1,length(indices));
        for k=1:length(indices)
            r(k)=fzero(f, [x(indices(k)), x(indices(k)+1)]);
        end
    end
end

Pozo de potencial asimétrico (II)

Consideremos un pozo de potencial de altura infinita

V(x)={ ,xa 0,a<x0 V 0 ,0<xb ,x>b

Estudiamos las soluciones de la la ecuación de Schrödinger independiente del tiempo

2 2m d 2 ψ(x) d x 2 +V(x)·ψ(x)=E·ψ(x)

primero para E<V0 y a continuación, para E>V0

Energía, E<V0

Niveles de energía

Tenemos un sistema homogéneeo de cuatro ecuaciones con cuatro incógnitas

{ A e ika +B e ika =0 C e qb +D e qb =0 A+B=C+D ik( AB )=q( CD )

El determinante de los coeficientes es cero

| e ika e ika 0 0 0 0 e qb e qb 1 1 1 1 ik ik q q |=0

Después de un largo proceso de simplificación, obtenemos la ecuación transcendente

exp( qb )( kcos( ka )+qsin( ka ) )+exp( qb )( kcos( ka )+qsin( ka ) )=0

Energía, E>V0

Niveles de energía

Tenemos un sistema homogéneeo de cuatro ecuaciones con cuatro incógnitas

{ A e ika +B e ika =0 C e iqb +D e iqb =0 A+B=C+D k( AB )=q( CD )

El determinante de los coeficientes es cero

| e ika e ika 0 0 0 0 e iqb e iqb 1 1 1 1 k k q q |=0

Después de un largo proceso de simplificación, obtenemos la ecuación transcendente

qsin( ka )cos( qb )+kcos( ka )sin( qb )=0

Establecemos un sistema de unidades tal que =m=1.

Representamos la función potencial V(x) y los niveles de energía para a=b=3 y V0=20.

function caja_asimetrica
    V0=20; %altura
    a=3; %dimesiones
    b=3;
    q=@(E) sqrt(V0-E);
    k=@(E) sqrt(E);
    f=@(E) exp(q(E)*b).*(k(E).*cos(k(E)*a)+q(E).*sin(k(E)*a))+
exp(-q(E)*b).*(-k(E).*cos(k(E)*a)+q(E).*sin(k(E)*a));
    x=linspace(0,V0, 50);
    r1=raices(f,x);
    disp(r1)
    q=@(E) sqrt(E-V0);
    f=@(E) q(E).*(sin(k(E)*a).*cos(q(E)*b))+k(E).*(sin(q(E)*b).*cos(k(E)*a));
    x=linspace(V0, 30,20);
    r2=raices(f,x);
    disp(r2)
    %potencial
    xx=[-0.1-a,-0.1-a, -a, -a, 0, 0, b, b, b+0.1, b+0.1];
    yy=[-0.1, V0+10, V0+10, 0, 0, V0, V0, V0+10, V0+10,-0.1];
    fill(xx,yy, [0.5 0.5 0.5])
    ylim([-0.1,V0+10])
    %niveles de energía
    for E=r1
        line([-a,1],[E,E],'color','b')
        text(-a-0.3, E,sprintf('%1.3f',E),'VerticalAlignment','bottom', 
'HorizontalAlignment','right')
   end
    for E=r2
        line([-a,b],[E,E],'color','b')
        text(-a-0.3, E,sprintf('%1.3f',E),'VerticalAlignment','bottom', 
'HorizontalAlignment','right')
    end
    axis off
    xlabel('')
    ylabel('E')
    title('Niveles de energía')

    function r = raices(f, x)
        y=f(x);
        indices=find(y(1:end-1).*y(2:end)<0);
        r=zeros(1,length(indices));
        for s=1:length(indices)
            r(s)=fzero(f, [x(indices(s)), x(indices(s)+1)]);
        end
    end
end

    0.9487    3.7809    8.4439   14.7763
   20.8357   22.3363   24.9302   29.2372

Funciones de onda

Vamos a representar las funciones de onda correspondientes a los niveles de energía en cada uno de los dos casos, E<V0 y E>V0. Para ello, tenemos que relacionar los coeficientes B, C y D con el coeficiente A. El coeficiente A se calcula de modo que

a 0 ψ I (x) ψ I * (x)dx+ 0 b ψ II (x) ψ II * (x)dx=1

Pozo de potencial doble

El pozo de potencial doble consta de una pozo de potencial de altura infinita y de anchura 2a con una barrera de potencial de anchura 2b y altura V0 situada en medio, descrito por la función V(x)

V(x)={ ,xa 0,a<xb V 0 ,b<x<b 0,bx<a ,x>a

Estudiamos las soluciones de la la ecuación de Schrödinger independiente del tiempo

2 2m d 2 ψ(x) d x 2 +V(x)·ψ(x)=E·ψ(x)

primero para E<V0 y a continuación, para E>V0

Energía, E<V0

Niveles de energía

Las funciones de onda pueden ser

Energía, E>V0

Niveles de energía

Las funciones de onda pueden ser

Cálculo de los niveles de energía

Establecemos un sistema de unidades tal que =m=1.

Representamos los primeros niveles de energía de un pozo infinito de potencial de anchura 2a=π con el fin de apreciar el efecto de la barrera de potencial

E= n 2 π 2 2 8m a 2 ,n=1,2,3...

a=pi/2; %mitad de la anchura del pozo infinito
Emax=15;
hold on
xx=[-a-0.1, -a, -a,a,a, a+0.1, a+0.1, -a-0.1, -a-0.1];
yy=[Emax, Emax, 0, 0, Emax, Emax, -1, -1, Emax ];
fill(xx,yy, [0.5 0.5 0.5])
for n=1:5
    E=n^2*pi^2/(8*a^2);
    text(a, E,num2str(E),'VerticalAlignment','bottom', 'HorizontalAlignment',
'right')
    line([-a,a],[E,E],'color','b')
end
hold off
ylim([-1,Emax])
xlabel('')
ylabel('E')
title('Niveles de energía')

Introducimos en el pozo infinito de potencial de anchura 2a=π una barrera de altura V0=10 y de anchura 2b=0.75. Utilizamos la función raices para obtener las raíces de la ecuación transcendente. Representamos la función potencial V(x) y los niveles de energía

function semi_3
    V0=10; %altura barrera
    a=pi/2; %mitad anchura del pozo
    b=0.75/2; %mitad de la anchura de la barrera
    Emax=30;
    %niveles de energía
    %E<V0
    fi=@(E) (sqrt(2*V0-2*E).*cosh(sqrt(2*V0-2*E)*b)).*sin(sqrt(2*E)*(a-b))
+(sqrt(2*E).*sinh(sqrt(2*V0-2*E)*b)).*cos(sqrt(2*E)*(a-b));
    fp=@(E) (sqrt(2*V0-2*E).*sinh(sqrt(2*V0-2*E)*b)).*sin(sqrt(2*E)*(a-b))+
(sqrt(2*E).*cosh(sqrt(2*V0-2*E)*b)).*cos(sqrt(2*E)*(a-b));
    x=linspace(0,V0, 40);
    impar_1=raices(fi,x);
    par_1=raices(fp,x);
    % E>V0
    ffi=@(E) sqrt(2*E-2*V0).*cos(sqrt(2*E-2*V0)*b).*sin(sqrt(2*E)*(a-b))+
sqrt(2*E).*sin(sqrt(2*E-2*V0)*b).*cos(sqrt(2*E)*(a-b));
    ffp=@(E) sqrt(2*E-2*V0).*sin(sqrt(2*E-2*V0)*b).*sin(sqrt(2*E)*(a-b))-
sqrt(2*E).*cos(sqrt(2*E-2*V0)*b).*cos(sqrt(2*E)*(a-b));
    x=linspace(V0, Emax, 40);
    par_2=raices(ffp,x);
    impar_2=raices(ffi,x);
    niveles=sort([par_1, impar_1, par_2, impar_2]);
    hold on
    xx=[-a-0.1, -a, -a,-b,-b, b, b,a,a,a+0.1, a+0.1,-a-0.1, -a-0.1];
    yy=[Emax, Emax, 0, 0, V0, V0,0,0,Emax, Emax,-1, -1, Emax];
    fill(xx,yy, [0.5 0.5 0.5])
    i=1;
    for E=niveles
        line([-a,a],[E,E],'color','b')
        if rem(i,2)==0
            text(a, E,num2str(E),'VerticalAlignment','bottom', 
'HorizontalAlignment','right')
        else
            text(-a, E,num2str(E),'VerticalAlignment','bottom', 
'HorizontalAlignment','left')
        end
        i=i+1;
    end
    hold off
    ylim([-1,Emax])
    xlabel('')
    ylabel('E')
    title('Niveles de energía')

    function r = raices(f, x)
        y=f(x);
        indices=find(y(1:end-1).*y(2:end)<0);
        r=zeros(1,length(indices));
        for k=1:length(indices)
            r(k)=fzero(f, [x(indices(k)), x(indices(k)+1)]);
        end
    end
end

A la izquierda, la energía de los niveles correspondientes a funciones de onda simétricas y a la derecha, antisimétricas

Funciones de onda

Vamos a representar las funciones de onda correspondientes a los niveles de energía en cada uno de los cuatro casos. Para ello, tenemos que relacionar los coeficientes B y C con el coeficiente A. El coeficiente A se calcula de modo que

0 b ψ II (x) ψ II * (x)·dx+ b a ψ III (x) ψ III * (x) ·dx= 1 2

El resultado 1/2 se debe a razones de simetría de la función de onda. El segundo término no cambia

b a ψ III (x) ψ III * (x) ·dx= b a ( B e ikx +A e ikx )( B * e ikx + A * e ikx ) ·dx= ( A A * +B B * )(ab)+ B A * 2ik ( e 2ika e 2ikb ) A B * 2ik ( e 2ika e 2ikb )

En el extremo x=a, la relación entre los coeficientes A y B es

Bexp(ika)+Aexp(ika)=0 B A * = A 2 e 2ika A B * = A 2 e 2ika A A * +B B * =2 A 2

El resultado de la integral es

b a ψ III (x) ψ III * (x) ·dx= A 2 ( 2(ab) sin( 2k(ab) ) k )

Las funciones de onda para E<V0 y E>V0 son

Representamos las funciones de onda de de un pozo infinito de potencial de anchura 2a=π con una barrera de altura V0=10 y de anchura 2b=0.75.

A continuación, el código que calcula los niveles de energía y los guarda en un vector

function semi_5
    V0=10;
    a=pi/2;
    b=0.75/2;
    Emax=30;
    %Niveles de energía
    %E<V0
    fi=@(E) (sqrt(2*V0-2*E).*cosh(sqrt(2*V0-2*E)*b)).*sin(sqrt(2*E)*(a-b))
+(sqrt(2*E).*sinh(sqrt(2*V0-2*E)*b)).*cos(sqrt(2*E)*(a-b));
    fp=@(E) (sqrt(2*V0-2*E).*sinh(sqrt(2*V0-2*E)*b)).*sin(sqrt(2*E)*(a-b))
+(sqrt(2*E).*cosh(sqrt(2*V0-2*E)*b)).*cos(sqrt(2*E)*(a-b));
    x=linspace(0,V0, 40);
    impar_1=raices(fi,x);
    par_1=raices(fp,x);

    % E>V0
    ffi=@(E) sqrt(2*E-2*V0).*cos(sqrt(2*E-2*V0)*b).*sin(sqrt(2*E)*(a-b))
+sqrt(2*E).*sin(sqrt(2*E-2*V0)*b).*cos(sqrt(2*E)*(a-b));
    ffp=@(E) sqrt(2*E-2*V0).*sin(sqrt(2*E-2*V0)*b).*sin(sqrt(2*E)*(a-b))
-sqrt(2*E).*cos(sqrt(2*E-2*V0)*b).*cos(sqrt(2*E)*(a-b));
    x=linspace(V0, Emax, 40);
    par_2=raices(ffp,x);
    impar_2=raices(ffi,x);
    hold on
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    %Situar aquí el código que representa las funciones de onda
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    hold off
    grid on
    xlabel('x')
    ylabel('\Phi(x)')
    title('Funciones de onda')

    function r = raices(f, x)
        y=f(x);
        indices=find(y(1:end-1).*y(2:end)<0);
        r=zeros(1,length(indices));
        for k=1:length(indices)
            r(k)=fzero(f, [x(indices(k)), x(indices(k)+1)]);
        end
    end

end

El código para representar las funciones de onda se introduce en el lugar señalado

Una variante del pozo de potencial de profundidad infinita

En esta sección, vamos a calcular los niveles de energía y las correspondientes funciones de onda del siguiente pozo de potencial de profundidad infinita.

Para crear parte de la figura se ha utilizado el código

x=[0,0,2,2,5,5,7,7,10,10,12,12,14,14];
y=[25,0,0,-20,-20,5,5,16,16,-8,-8,2,2,25];
plot(x,y,'k','lineWidth',1.5)
xlim([-1,15])
ylim([-21,25])
xlabel('x')
ylabel('E_p(x)')
title('Potencial')

Donde la energía potencial se mide en eV (1.6021·10-19 J) y la posición x en ángstrom Å (10-10 m). El potencial V(x) es infinito en x=0 y x=14 Å y consta de N=6 intervalos de potencial constante

V(x)={ 0<x2,0 2<x5,20 5<x7,5 7<x10,16 10<x12,8 12<x<14,2

La ecuación de Schrödinger es

2 2m d 2 Ψ d x 2 +V(x)Ψ=EΨ

Dividimos ambos miembros por Vm, el máximo potencial no infinito y distinto de cero, en este ejemplo, Vm=16 eV. Definimos

La ecuación de Schrödinger se transforma en otra más simple y apropiada para el cálculo numérico

2 2m V m d 2 Ψ d x 2 + V(x) V m Ψ= E V m Ψ d 2 Ψ d ξ 2 +( e v i )Ψ=0

La solución de esta ecuación diferencial en un intervalo i de potencial constante vi comprendido entre ξi-1 y ξi es

Ψ i = A i f i (ξ)+ B i g i (ξ)

figif'ig'i
e<vi k i = v i e exp( k i ξ ) exp( k i ξ ) k i exp( k i ξ ) k i exp( k i ξ )
e>vi k i = e v i k i exp( k i ξ ) cos( k i ξ ) k i cos( k i ξ ) k i sin( k i ξ )
e=viξ110

Las dos últimas columnas, corresponden a las derivadas de fi(ξ) y gi(ξ) respecto de ξ

Niveles de energía

Con N intervalos, hay 2N coeficientes Ai y Bi que tenemos que determinar

Estas dos condiciones generan el sistema de ecuaciones

A 1 f 1 (0)+ B 1 g 1 (0)=0 { A 1 f 1 ( ξ 1 )+ B 1 g 1 ( ξ 1 )= A 2 f 2 ( ξ 1 )+ B 2 g 2 ( ξ 1 ) A 1 f 1 ' ( ξ 1 )+ B 1 g 1 ' ( ξ 1 )= A 2 f 2 ' ( ξ 1 )+ B 2 g 2 ' ( ξ 1 ) { A 2 f 2 ( ξ 2 )+ B 2 g 2 ( ξ 2 )= A 3 f 3 ( ξ 2 )+ B 3 g 3 ( ξ 2 ) A 2 f 2 ' ( ξ 2 )+ B 2 g 2 ' ( ξ 2 )= A 3 f 3 ' ( ξ 2 )+ B 3 g 3 ' ( ξ 2 ) ....... { A N1 f N1 ( ξ N1 )+ B N1 g N1 ( ξ N1 )= A N f N ( ξ N1 )+ B N g N ( ξ N1 ) A N1 f N1 ' ( ξ N1 )+ B N1 g N1 ' ( ξ N1 )= A N f N ' ( ξ N1 )+ B N g N ' ( ξ N1 ) A N f N ( ξ N )+ B N g N ( ξ N )=0

Tenemos un sistema homogéneo de 2N ecuaciones con 2N incógnitas, en forma matricial se escribe

( f 1 (0) g 1 (0) 0 0 0 0 ... 0 0 0 0 f 1 ( ξ 1 ) g 1 ( ξ 1 ) f 2 ( ξ 1 ) g 2 ( ξ 1 ) 0 0 ... 0 0 0 0 f 1 ' ( ξ 1 ) g 1 ' ( ξ 1 ) f 2 ' ( ξ 1 ) g 2 ' ( ξ 1 ) 0 0 ... 0 0 0 0 0 0 f 2 ( ξ 2 ) g 2 ( ξ 2 ) f 3 ( ξ 2 ) g 3 ( ξ 2 ) ... 0 0 0 0 0 0 f 2 ' ( ξ 2 ) g 2 ' ( ξ 2 ) f 3 ' ( ξ 2 ) g 3 ' ( ξ 2 ) ... 0 0 0 0 ... ... ... ... ... ... ... ... ... ... ... 0 0 0 0 0 ... f N1 ( ξ N1 ) g N1 ( ξ N1 ) f N ( ξ N1 ) g N ( ξ N1 ) 0 0 0 0 0 ... f N1 ' ( ξ N1 ) g N1 ' ( ξ N1 ) f N ' ( ξ N1 ) g N ' ( ξ N1 ) 0 0 0 0 0 ... 0 0 f N ( ξ N ) g N ( ξ N ) )( A 1 B 1 A 2 B 2 A 3 B 3 ... A N1 B N1 A N B N )=0

El determinante de los coeficientes deberá ser cero, lo que determina los niveles de energía

function pozo_potencial
    Vm=16;  %máximo
    K=sqrt(2*9.1091e-31*Vm*1.6021e-19)*1e-10/1.0545e-34;
    x=[2,5,7,10,12,14]*K;
    v=[0,-20,5,16,-8,2]/Vm;
    N=length(v);
    C=zeros(2*N);
    
%niveles de energía
    xb=buscar_intervalos(@energia,-20/Vm, 25/Vm,50);
    nb=size(xb);
    nivel=zeros(1,nb(1));
    disp('niveles de energia')
    for m=1:nb(1)
        nivel(m)=fzero(@energia,[xb(m,1),xb(m,2)]);
    end
    disp(nivel')
    
    xx=[0,0,x(1),x(1),x(2),x(2),x(3),x(3),x(4),x(4),x(5),x(5),x(6),x(6)];
    yy=[2,v(1),v(1),v(2),v(2),v(3),v(3),v(4),v(4),v(5),v(5),v(6),v(6),2];
    plot(xx,yy,'k','lineWidth',1.5)
    for m=1:nb(1)
        line([0,x(6)],[nivel(m), nivel(m)],'color','r')
    end
    grid on
    xlabel('\xi')
    ylabel('E_p(\xi)')
    title('Niveles de energía')  
    
    
    function res = energia(e)
        if v(1)>e
            C(1,1)=1; C(1,2)=1;
        else
            C(1,1)=0; C(1,2)=1;
        end
        for i=1:N-1
            if v(i)>e
                k=sqrt(v(i)-e);
                C(2*i,2*i-1)=exp(k*x(i)); C(2*i,2*i)=exp(-k*x(i));
                C(2*i+1,2*i-1)=k*exp(k*x(i)); C(2*i+1,2*i)=-k*exp(-k*x(i));
            elseif v(i)<e
                k=sqrt(e-v(i));
                C(2*i,2*i-1)=sin(k*x(i)); C(2*i,2*i)=cos(k*x(i));
                C(2*i+1,2*i-1)=k*cos(k*x(i)); C(2*i+1,2*i)=-k*sin(k*x(i));
            else
                C(2*i,2*i-1)=x(i); C(2*i,2*i)=1;
                C(2*i+1,2*i-1)=1; C(2*i+1,2*i)=0;
            end
            if v(i+1)>e
                k=sqrt(v(i+1)-e);
                C(2*i,2*i+1)=-exp(k*x(i)); C(2*i,2*i+2)=-exp(-k*x(i));
                C(2*i+1,2*i+1)=-k*exp(k*x(i)); C(2*i+1,2*i+2)=k*exp(-k*x(i));
            elseif v(i+1)<e
                k=sqrt(e-v(i+1));
                C(2*i,2*i+1)=-sin(k*x(i)); C(2*i,2*i+2)=-cos(k*x(i));
                C(2*i+1,2*i+1)=-k*cos(k*x(i)); C(2*i+1,2*i+2)=k*sin(k*x(i));
            else
                C(2*i,2*i+1)=-x(i); C(2*i,2*i+2)=-1;
                C(2*i+1,2*i+1)=-1; C(2*i+1,2*i+2)=0;
            end
        end
        if v(N)>e
            k=sqrt(v(N)-e);
            C(2*N,2*N-1)=exp(k*x(N)); C(2*N,2*N)=exp(-k*x(N));
        elseif v(N)<e
            k=sqrt(e-v(N));
            C(2*N,2*N-1)=sin(k*x(N)); C(2*N,2*N)=cos(k*x(N));
        else
            C(2*N,2*N-1)=x(N); C(2*N,2*N)=1;
        end
        res=det(C);
        C=zeros(2*N);
    end
        
    function xb = buscar_intervalos(f,a,b,n)
        z = linspace(a,b,n);
        j = 0; 
        y1=f(z(1));
        for m = 1:length(z)-1
            y2=f(z(m+1));
            if sign(y1) ~= sign(y2) 
                j = j + 1;
                xb(j,1) = z(m);
                xb(j,2) = z(m+1);
            end
            y1=y2;
        end
        if isempty(xb) 
            disp('no se han encontrado cambios de signo')
        else
        disp(['número de intervalos:' int2str(j)]) 
        end
    end 

end

Representamos la energía potencial Ep(ξ) en función de la variable adimensional ξ, las líneas rojas horizontales corresponden a los niveles de energía adimensionales e=E/Vm

Los niveles de energía en eV son

  -17.4546
  -10.1369
   -4.0159
    0.3012
    5.2654
    7.7995
   11.0232
   13.0925
   17.4024
   20.1808
   24.4298

Funciones de onda

Dado un nivel de energía e, calculamos los coeficientes B1, A2, B2, A3, B3....AN-1, BN-1, AN, BN en función de A1 que sirve de factor de escala

La primera ecuación nos da B1

B 1 = f 1 (0) g 1 (0) A 1

Las dos ecuaciones siguientes, A2 y B2

{ A 2 f 2 ( ξ 1 )+ B 2 g 2 ( ξ 1 )= c 1 , c 1 = A 1 f 1 ( ξ 1 )+ B 1 g 1 ( ξ 1 ) A 2 f 2 ' ( ξ 1 )+ B 2 g 2 ' ( ξ 1 )= c 2 , c 2 = A 1 f 1 ' ( ξ 1 )+ B 1 g 1 ' ( ξ 1 ) A 2 = c 1 g 2 ' ( ξ 1 ) c 2 g 2 ( ξ 1 ) f 2 ( ξ 1 ) g 2 ' ( ξ 1 ) f 2 ' ( ξ 1 ) g 2 ( ξ 1 ) , B 2 = c 2 f 2 ( ξ 1 ) c 1 f 2 ' ( ξ 1 ) f 2 ( ξ 1 ) g 2 ' ( ξ 1 ) f 2 ' ( ξ 1 ) g 2 ( ξ 1 )

y así, con el resto de los coeficientes. Los dos últimas proporcionan AN y BN

{ A N f N ( ξ N1 )+ B N g N ( ξ N1 )= c 1 , c 1 = A N1 f N1 ( ξ N1 )+ B N1 g N1 ( ξ N1 ) A N f N ' ( ξ N1 )+ B N g N ' ( ξ N1 )= c 2 , c 2 = A N1 f N1 ' ( ξ 1 )+ B N1 g N1 ' ( ξ N1 ) A N = c 1 g N ' ( ξ N1 ) c 2 g N ( ξ N1 ) f N ( ξ N1 ) g N ' ( ξ N1 ) f N ' ( ξ N1 ) g N ( ξ N1 ) , B N = c 2 f N ( ξ N1 ) c 1 f N ' ( ξ N1 ) f N ( ξ N1 ) g N ' ( ξ N1 ) f N ' ( ξ N1 ) g N ( ξ N1 )

Primero, calculamos el coeficiente B1 para cada uno de los posibles casos

{ e< v 1 , f 1 (0)=1, g 1 (0)=1, B 1 = A 1 e> v 1 , f 1 (0)=0, g 1 (0)=1, B 1 =0 e= v 1 , f 1 (0)=0, g 1 (0)=1, B 1 =0

Calculamos c1 y c2 para cada uno de los tres posibles casos

{ e< v 1 , k 1 = v 1 e { c 1 = A 1 e k 1 ξ 1 + B 1 e k 1 ξ 1 c 2 = A 1 k 1 e k 1 ξ 1 B 1 k 1 e k 1 ξ 1 e> v 1 , k 1 = e v 1 { c 1 = A 1 sin( k 1 ξ 1 )+ B 1 cos( k 1 ξ 1 ) c 2 = A 1 k 1 cos( k 1 ξ 1 ) B 1 k 1 sin( k 1 ξ 1 ) e= v 1 ,{ c 1 = A 1 ξ 1 + B 1 c 2 = A 1

Las expresiones de los coeficientes A2 y B2 son

{ e< v 2 , k 2 = v 2 e , A 2 = c 1 k 2 + c 2 2 k 2 e k 2 ξ 1 , B 2 = c 1 k 2 c 2 2 k 2 e k 2 ξ 1 e> v 1 , k 2 = e v 2 , A 2 = c 1 k 2 sin( k 2 ξ 1 )+ c 2 cos( k 2 ξ 1 ) 2 k 2 , B 2 = c 1 k 2 cos( k 2 ξ 1 ) c 2 sin( k 2 ξ 1 ) 2 k 2 e= v 1 , A 2 = c 2 , B 2 = c 1 c 2 ξ 1

y así, el resto de los coeficientes

Normalización

El coeficiente A1 se calcula teniendo en cuenta que

i=1 N ξ i1 ξ i Ψ i 2 (ξ)dξ =1 i=1 N ξ i1 ξ i ( A i f i (ξ)+ B i g i (ξ) ) 2 dξ =1

donde ξi-1=0. Para cada uno de los tres posibles casos, la expresión de la integral es

{ e< v i , k i = v i e ξ i1 ξ i ( A i 2 e 2 k i ξ + B i 2 e 2 k i ξ +2 A i B i ) dξ e> v i , k i = e v i ξ i1 ξ i ( A i 2 sin 2 ( k i ξ)+ B i 2 cos 2 ( k i ξ)+ A i B i sin(2 k i ξ) ) dξ e= v i , ξ i1 ξ i ( A i 2 ξ 2 + B i 2 +2 A i B i ξ ) dξ

Utilizamos estas dos relaciones trigonométricas para efectuar las integrales de la segunda fila, e>vi. Las otras son inmediatas

cos 2 x= 1+cos(2x) 2 , sin 2 x= 1cos(2x) 2

El resultado es

{ e< v i , A i 2 2 k i ( e 2 k i ξ i e 2 k i ξ i1 ) B i 2 2 k i ( e 2 k i ξ i e 2 k i ξ i1 )+2 A i B i ( ξ i ξ i1 ) e> v i , A i 2 + B i 2 2 ( ξ i ξ i1 )+ A i 2 B i 2 2 k i ( sin(2 k i ξ i )sin(2 k i ξ i1 ) ) A i B i 2 k i ( cos(2 k i ξ i )cos(2 k i ξ i1 ) ) e= v i , A i 2 3 ( ξ i 3 ξ i1 3 )+ B i 2 ( ξ i ξ i1 )+ A i B i ( ξ i 2 ξ i1 2 )

Representamos la función de onda correspondiente al nivel n=9. Se proporciona también el dato de su energía e. Para convertirla en eV se ha de multiplicar por Vm=16

function pozo_potencial_1
    Vm=16;  %máximo
    K=sqrt(2*9.1091e-31*Vm*1.6021e-19)*1e-10/1.0545e-34;
    x=[2,5,7,10,12,14]*K;
    v=[0,-20,5,16,-8,2]/Vm;
%matriz de los coeficientes
    N=length(v);
    C=zeros(2*N);
    
%niveles de energía
    xb=buscar_intervalos(@energia,-20/Vm, 25/Vm,50);
    nb=size(xb);
    nivel=zeros(1,nb(1));
    disp('niveles de energia')
    for m=1:nb(1)
        nivel(m)=fzero(@energia,[xb(m,1),xb(m,2)]);
    end
 %función de onda  correspondiente a un nivel de energía
    e=nivel(9); %energía del nivel, cambiar el número de nivel
    A=zeros(1,N);
    B=zeros(1,N);
    A(1)=1;
    if(v(1)>e)
        B(1)=-1;
    else
        B(1)=0;
    end
    for i=1:N-1
        if v(i)>e
            k=sqrt(v(i)-e);
            c1=A(i)*exp(k*x(i))+B(i)*exp(-k*x(i));
            c2=A(i)*k*exp(k*x(i))-B(i)*k*exp(-k*x(i));
       elseif v(i)<e
            k=sqrt(e-v(i));
            c1=A(i)*sin(k*x(i))+B(i)*cos(k*x(i));
            c2=A(i)*k*cos(k*x(i))-B(i)*k*sin(k*x(i));
      else
            c1=A(i)*x(i)+B(i);
            c2=A(i);
      end       
     if v(i+1)>e
            k=sqrt(v(i+1)-e);
            A(i+1)=(c1*k+c2)*exp(-k*x(i))/(2*k);
            B(i+1)=(c1*k-c2)*exp(k*x(i))/(2*k);
       elseif v(i+1)<e
            k=sqrt(e-v(i+1));
            A(i+1)=(c1*k*sin(k*x(i))+c2*cos(k*x(i)))/k;
            B(i+1)=(c1*k*cos(k*x(i))-c2*sin(k*x(i)))/k;
       else
            A(i+1)=c2;
            B(i+1)=c1-c2*x(i);
       end
    end 
%comprobación
%     if v(N)>e
%             k=sqrt(v(N)-e);
%             disp(A(N)*exp(k*x(N))+B(N)*exp(-k*x(N)))
%        elseif v(N)<e
%             k=sqrt(e-v(N));
%             disp(A(N)*sin(k*x(N))+B(N)*cos(k*x(N)))
%        else
%             disp(A(N)*x(N)+B(N)) %próximo a cero
%        end


 %normalización
    suma=0;
    if v(1)>e
        k=sqrt(v(1)-e);
        suma=suma+A(1)^2*(exp(2*k*x(1))-1)/(2*k)-B(1)^2*(exp(-2*k*x(1))-1)
/(2*k)+2*A(1)*B(1)*x(1);
    elseif v(1)<e
        k=sqrt(e-v(1));
        suma=suma+x(1)*(A(1)^2+B(1)^2)/2+(A(1)^2-B(1)^2)*sin(2*k*x(1))
/(2*k)-A(1)*B(1)*(cos(2*k*x(1))-1)/(2*k);
    else
        suma=suma+A(1)^2*x(1)^3/3+B(1)^2*x(1)+A(1)*B(1)*x(1)^2;
    end

    for i=2:N
        if v(i)>e
            k=sqrt(v(i)-e);
            suma=suma+A(i)^2*(exp(2*k*x(i))-exp(2*k*x(i-1)))/(2*k)-B(i)^2*
(exp(-2*k*x(i))-exp(-2*k*x(i-1)))/(2*k)+2*A(i)*B(i)*(x(i)-x(i-1));
        elseif v(i)<e
            k=sqrt(e-v(i));
            suma=suma+(x(i)-x(i-1))*(A(i)^2+B(i)^2)/2+(A(i)^2-B(i)^2)*
(sin(2*k*x(i))-sin(2*k*x(i-1)))/(2*k)-A(i)*B(i)*(cos(2*k*x(i))-
cos(2*k*x(i-1)))/(2*k);
        else
            suma=suma+A(i)^2*(x(i)^3-x(i-1)^3)/3+B(i)^2*(x(i)-x(i-1))+
A(i)*B(i)*(x(i)^2-x(i-1)^2);
        end
            
    end 
    for i=1:N
        A(i)=A(i)/sqrt(suma);
        B(i)=B(i)/sqrt(suma);
    end
    hold on
 %representación gráfica
    if v(1)>e
        k=sqrt(v(1)-e);
        f=@(x) A(1)*exp(k*x)+B(1)*exp(-k*x);
        fplot(f,[0, x(1)])
   elseif v(1)<e
        k=sqrt(e-v(1));
        f=@(x) A(1)*sin(k*x)+B(1)*cos(k*x);
        fplot(f,[0, x(1)])
   else
        f=@(x) A(1)*x+B(1);
        fplot(f,[0, x(1)])
   end
   for i=2:N
       if v(i)>e
            k=sqrt(v(i)-e);
            f=@(x) A(i)*exp(k*x)+B(i)*exp(-k*x);
            fplot(f,[x(i-1), x(i)])
       elseif v(i)<e
            k=sqrt(e-v(i));
            f=@(x) A(i)*sin(k*x)+B(i)*cos(k*x);
            fplot(f,[x(i-1), x(i)])
       else
            f=@(x) A(i)*x+B(i);
            fplot(f,[x(i-1), x(i)])
       end    
  end 
  text(0.5, 0, num2str(e),'VerticalAlignment','top')
 hold off
 grid on
 xlabel('\xi')
 ylabel('\Phi(\xi)')
 title('Función de onda')  
    
    function res = energia(e)
        if v(1)>e
            C(1,1)=1; C(1,2)=1;
        else
            C(1,1)=0; C(1,2)=1;
        end
        for i=1:N-1
            if v(i)>e
                k=sqrt(v(i)-e);
                C(2*i,2*i-1)=exp(k*x(i)); C(2*i,2*i)=exp(-k*x(i));
                C(2*i+1,2*i-1)=k*exp(k*x(i)); C(2*i+1,2*i)=-k*exp(-k*x(i));
            elseif v(i)<e
                k=sqrt(e-v(i));
                C(2*i,2*i-1)=sin(k*x(i)); C(2*i,2*i)=cos(k*x(i));
                C(2*i+1,2*i-1)=k*cos(k*x(i)); C(2*i+1,2*i)=-k*sin(k*x(i));
            else
                C(2*i,2*i-1)=x(i); C(2*i,2*i)=1;
                C(2*i+1,2*i-1)=1; C(2*i+1,2*i)=0;
            end
            if v(i+1)>e
                k=sqrt(v(i+1)-e);
                C(2*i,2*i+1)=-exp(k*x(i)); C(2*i,2*i+2)=-exp(-k*x(i));
                C(2*i+1,2*i+1)=-k*exp(k*x(i)); C(2*i+1,2*i+2)=k*exp(-k*x(i));
            elseif v(i+1)<e
                k=sqrt(e-v(i+1));
                C(2*i,2*i+1)=-sin(k*x(i)); C(2*i,2*i+2)=-cos(k*x(i));
                C(2*i+1,2*i+1)=-k*cos(k*x(i)); C(2*i+1,2*i+2)=k*sin(k*x(i));
            else
                C(2*i,2*i+1)=-x(i); C(2*i,2*i+2)=-1;
                C(2*i+1,2*i+1)=-1; C(2*i+1,2*i+2)=0;
            end
        end
        if v(N)>e
            k=sqrt(v(N)-e);
            C(2*N,2*N-1)=exp(k*x(N)); C(2*N,2*N)=exp(-k*x(N));
        elseif v(N)<e
            k=sqrt(e-v(N));
            C(2*N,2*N-1)=sin(k*x(N)); C(2*N,2*N)=cos(k*x(N));
        else
            C(2*N,2*N-1)=x(N); C(2*N,2*N)=1;
        end
        res=det(C);
        C=zeros(2*N);
    end
        
    function xb = buscar_intervalos(f,a,b,n)
        z = linspace(a,b,n);
        j = 0; 
        y1=f(z(1));
        for m = 1:length(z)-1
            y2=f(z(m+1));
            if sign(y1) ~= sign(y2) 
                j = j + 1;
                xb(j,1) = z(m);
                xb(j,2) = z(m+1);
            end
            y1=y2;
        end
        if isempty(xb) 
            disp('no se han encontrado cambios de signo')
        else
        disp(['número de intervalos:' int2str(j)]) 
        end
    end 

end

Comprobamos que Ψ(ξN)≈0, quitando los comentarios % delante de la porción de código titulada, comprobación

Tomando como referencia este ejemplo, se pueden estudiar otros pozos de potencial V(x) de profundidad infinita, V(0)=∞ y V(xN)=∞

Referencias

M. A. Doncheski, R. W. Robinett. Comparing classical and quantum probability distributions for an asymmetric infinite well. (1999)

B Cameron Reed. Classroom-suitable matrix method for one-dimensional stepped quantum potentials. Eur. J. Phys. 42 (2021) 065404