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)
Estudiamos la solución de la la ecuación de Schrödinger independiente del tiempo para energías E<V0
En la región I
En la región II
En x=0, el potencial es infinito, por lo que
Cuando x→∞ el primer término se hace muy grande, por lo que el coeficiente D deberá anularse, D=0
La función de onda en las regiones I y II es
Niveles de energía
La función de onda y su derivada primera es continua en x=a
Eliminando A y D de este sistema homogéneo, obtenemos una la ecuación transcendente que determina los niveles de energía permitidos
Establecemos un sistema de unidades tal que ℏ=m=1. La ecuación transcendente se escribe en términos de la energía E
La altura del pozo rectangular asimétrico es V0=5 y la anchura a=3. Utilizamos la función
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
La función de onda en las regiones I y II es
El coeficiente A se calcula de modo que
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
Estudiamos las soluciones de la la ecuación de Schrödinger independiente del tiempo
primero para E<V0 y a continuación, para E>V0
Energía, E<V0
En la región I
En la región II
Niveles de energía
En x=-a, el potencial es infinito
En x=b, el potencial es infinito
La función de la función de onda y su derivada primera son continuas en x=0
Tenemos un sistema homogéneeo de cuatro ecuaciones con cuatro incógnitas
El determinante de los coeficientes es cero
Después de un largo proceso de simplificación, obtenemos la ecuación transcendente
Energía, E>V0
En la región I
En la región II
La misma solución
Niveles de energía
En x=-a, el potencial es infinito
En x=b, el potencial es infinito
La función de la función de onda y su derivada primera son continuas en x=0
Tenemos un sistema homogéneeo de cuatro ecuaciones con cuatro incógnitas
El determinante de los coeficientes es cero
Después de un largo proceso de simplificación, obtenemos la ecuación transcendente
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
Correspondientes a los niveles de energía, E<V0
Calculamos la integral
Expresamos los coeficientes B, C y D en términos de A
El resultado es
Representamos las funciones de onda correspondientes a los tres primeros niveles de energía, E<V0
function caja_asimetrica_1 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); hold on for E=r1(1:3) q=sqrt(V0-E); k=sqrt(E); A=1/sqrt(2*a-sin(2*k*a)/k+(1-cos(2*k*a)*(4*q*b+exp(-2*b*q*b)-exp(2*q*b)) /(q*(1-exp(2*q*b))*(1-exp(-2*q*b))))); B=-A*exp(-2*1i*k*a); f1=@(x) real(A*exp(1i*k*x)+B*exp(-1i*k*x)); fplot(f1,[-a,0]) C=(1-exp(-2*1i*k*a))*A/(1-exp(2*q*b)); D=(1-exp(-2*1i*k*a))*A/(1-exp(-2*q*b)); f2=@(x) real(C*exp(q*x)+D*exp(-q*x)); fplot(f2,[0,b]) end hold off grid on xlabel('x') ylabel('\Psi(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 s=1:length(indices) r(s)=fzero(f, [x(indices(s)), x(indices(s)+1)]); end end end
Correspondientes a los niveles de energía, E>V0
Calculamos la integral
Expresamos los coeficientes B, C y D en términos de A
El resultado es
Representamos las funciones de onda correspondientes a los dos primeros niveles de energía, E>V0
function caja_asimetrica_2 V0=20; %altura a=3; %dimesiones b=3; k=@(E) sqrt(E); 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); hold on for E=r2(1:2) q=sqrt(E-V0); k=sqrt(E); A=1/sqrt(2*a-sin(2*k*a)/k-(1-cos(2*k*a)*sin(2*q*b)/(q*(1-cos(2*q*b))))); B=-A*exp(-2*1i*k*a); f1=@(x) real(A*exp(1i*k*x)+B*exp(-1i*k*x)); fplot(f1,[-a,0]) C=(1-exp(-2*1i*k*a))*A/(1-exp(2*1i*q*b)); D=(1-exp(-2*1i*k*a))*A/(1-exp(-2*1i*q*b)); f2=@(x) real(C*exp(1i*q*x)+D*exp(-1i*q*x)); fplot(f2,[0,b]) end hold off grid on xlabel('x') ylabel('\Psi(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 s=1:length(indices) r(s)=fzero(f, [x(indices(s)), x(indices(s)+1)]); end end
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)
Estudiamos las soluciones de la la ecuación de Schrödinger independiente del tiempo
primero para E<V0 y a continuación, para E>V0
Energía, E<V0
En la región I
En la región II
En la región III
Niveles de energía
Las funciones de onda pueden ser
-
Simétricas
-
Antisimétricas
En x=a, el potencial es infinito,
La función de onda es continua en x=b y también su derivada primera
La ecuación transcendente que nos proporciona los niveles de energía correspondiente a las funciones de onda simétricas, es
En x=a, el potencial es infinito,
La función de onda es continua en x=b y también su derivada primera
La ecuación transcendente que nos proporciona los niveles de energía correspondiente a las funciones de onda simétricas, es
Energía, E>V0
En la región I
En la región II
En la región III
Niveles de energía
Las funciones de onda pueden ser
-
Simétricas
-
Antisimétricas
En x=a, el potencial es infinito,
La función de onda es continua en x=b y también su derivada primera
En vez de volver a realizar el cálculo completo, basta sustituir en la correspondeinte ecuación transcencente
La ecuación ecuación transcendente, para los niveles de energía E>V0, es
La ecuación ecuación transcendente, para los niveles de energía E>V0, es
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
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
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
El resultado 1/2 se debe a razones de simetría de la función de onda. El segundo término no cambia
En el extremo x=a, la relación entre los coeficientes A y B es
El resultado de la integral es
Las funciones de onda para E<V0 y E>V0 son
E<V0
Simétricas
Antisimétricas
E>V0
Simétricas
Antisimétricas
El primer término vale
Las relaciones entre los coeficientes C y B con A son
El resultado es
El primer término vale
Las relaciones entre los coeficientes C y B con A son
El resultado es
El primer término vale
Las relaciones entre los coeficientes C y B con A son
El resultado es
El primer término vale
Las relaciones entre los coeficientes C y B con A son
El resultado es
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
- E<V0
- Simétricas,
par_1 - Antisimétricas,
impar_1 - E>V0
- Simétricas,
par_2 - Antisimétricas,
impar_2
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
- E<V0
- Simétricas
... for E=par_1 k=sqrt(2*E); q=sqrt(2*V0-2*E); suma=2*(a-b)-sin(2*k*(a-b))/k+sin(k*(a-b))^2*(sinh(2*q*b)/q+2*b) /cosh(q*b)^2; A=1/sqrt(2*suma); B=-A*exp(-1i*2*k*a); C=(B*exp(1i*k*b)+A*exp(-1i*k*b))/(2*cosh(q*b)); fplot(@(x) real(C*(exp(q*x)+exp(-q*x))),[-b,b]) fplot(@(x) real(B*exp(1i*k*x)+A*exp(-1i*k*x)),[b,a]) fplot(@(x) real(A*exp(1i*k*x)+B*exp(-1i*k*x)),[-a,-b]) end disp(par_1) ...
2.3452 8.5402
... for E=impar_1 k=sqrt(2*E); q=sqrt(2*V0-2*E); suma=2*(a-b)-sin(2*k*(a-b))/k+sin(k*(a-b))^2*(sinh(2*q*b)/q-2*b) /sinh(q*b)^2; A=1/sqrt(2*suma); B=-A*exp(-1i*2*k*a); C=(B*exp(1i*k*b)+A*exp(-1i*k*b))/(2*sinh(q*b)); fplot(@(x) real(C*(exp(q*x)-exp(-q*x))),[-b,b]) fplot(@(x) real(B*exp(1i*k*x)+A*exp(-1i*k*x)),[b,a]) fplot(@(x) real(-A*exp(1i*k*x)-B*exp(-1i*k*x)),[-a,-b]) end disp(impar_1) ...
2.4847 9.7064
- Simétricas
... for E=par_2 %E>V0 k=sqrt(2*E); q=sqrt(2*E-2*V0); suma=2*(a-b)-sin(2*k*(a-b))/k+sin(k*(a-b))^2*(sin(2*q*b)/q+2*b) /cos(q*b)^2; A=1/sqrt(2*suma); B=-A*exp(-1i*2*k*a); C=(B*exp(1i*k*b)+A*exp(-1i*k*b))/(exp(1i*q*b)+exp(-1i*q*b)); fplot(@(x) real(C*(exp(1i*q*x)+exp(-1i*q*x))),[-b,b]) fplot(@(x) real(B*exp(1i*k*x)+A*exp(-1i*k*x)),[b,a]) fplot(@(x) real(A*exp(1i*k*x)+B*exp(-1i*k*x)),[-a,-b]) end disp(par_2) ...
15.8611 26.5993
... for E=impar_2 %E>V0 k=sqrt(2*E); q=sqrt(2*E-2*V0); suma=2*(a-b)-sin(2*k*(a-b))/k+sin(k*(a-b))^2*(-sin(2*q*b)/q+2*b) /sin(q*b)^2; A=1/sqrt(2*suma); B=-A*exp(-1i*2*k*a); C=(B*exp(1i*k*b)+A*exp(-1i*k*b))/(exp(1i*q*b)-exp(-1i*q*b)); fplot(@(x) real(C*(exp(1i*q*x)-exp(-1i*q*x))),[-b,b]) fplot(@(x) real(B*exp(1i*k*x)+A*exp(-1i*k*x)),[b,a]) fplot(@(x) real(-A*exp(1i*k*x)-B*exp(-1i*k*x)),[-a,-b]) end disp(impar_2) ...
20.8679
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
La ecuación de Schrödinger es
Dividimos ambos miembros por Vm, el máximo potencial no infinito y distinto de cero, en este ejemplo, Vm=16 eV. Definimos
la energía adimensional e=E/Vm
el potencial adimensional en cada intervalo vi=V(x)/Vm, con i=1, 2, 3, ...N.
la distancia adimensional ξ
La ecuación de Schrödinger se transforma en otra más simple y apropiada para el cálculo numérico

La solución de esta ecuación diferencial en un intervalo i de potencial constante vi comprendido entre ξi-1 y ξi es
fi | gi | f'i | g'i | ||
---|---|---|---|---|---|
e<vi | |||||
e>vi | |||||
e=vi | ξ | 1 | 1 | 0 |
Las dos últimas columnas, corresponden a las derivadas de fi(ξ) y gi(ξ) respecto de ξ
- La solución exponencial, corresponde a una partícula que penetra a través de una barrera e<vi
- la solución trigonométrica, a una barrera cuya altura es menor que la energía de la partícula e>vi.
- El tercer caso e=vi es posible, pero muy improbable
Niveles de energía
Con N intervalos, hay 2N coeficientes Ai y Bi que tenemos que determinar
En los extremos el potencial es infinito, la función de onda es nula, Ψ(0)=0, Ψ(ξN)=0
En las posiciones ξ1, ξ2, ...ξN-1, la función de onda deberá ser continua y también su derivada primera
Estas dos condiciones generan el sistema de ecuaciones
Tenemos un sistema homogéneo de 2N ecuaciones con 2N incógnitas, en forma matricial se escribe
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
Las dos ecuaciones siguientes, A2 y B2
y así, con el resto de los coeficientes. Los dos últimas proporcionan AN y BN
Primero, calculamos el coeficiente B1 para cada uno de los posibles casos
Calculamos c1 y c2 para cada uno de los tres posibles casos
Las expresiones de los coeficientes A2 y B2 son
y así, el resto de los coeficientes
Normalización
El coeficiente A1 se calcula teniendo en cuenta que
donde ξi-1=0. Para cada uno de los tres posibles casos, la expresión de la integral es
Utilizamos estas dos relaciones trigonométricas para efectuar las integrales de la segunda fila, e>vi. Las otras son inmediatas
El resultado es
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,
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