Sistema de potenciales delta de Dirac
Analizaremos un modelo sencillo, formado por tres potenciales delta de Dirac igualmente espaciados y situados en el interior de un pozo de potencial de altura infinita y anchura 4a, siendo a la distancia entre dos potenciales consecutivos, tal como se muestra en la figura
Resolveremos la ecuación de Schrödinger, primero para energías positivas E>0, y a continuación, para energías negativas E<0
El potencial V(x) es
Siendo ε→0, una cantidad que tiende a cero
Primera solución
Energías E>0
Las soluciones de la ecuación de Schrödinger en las regiones I, I, III y IV con potencial V(x)=0 son
-
Condiciones en los extremos x=0, y x=4a donde V(x)=∞
-
En en x=a, x=2a y x=3a la función de onda es continua
La derivada primera de la función de onda NO es continua en x=a, x=2a y x=3a
Integramos la ecuación de Schrödinger en el pequeño intervalo de a-ε a a+ε
De modo similar, establecemos las otras dos ecuaciones que relacionan los coeficientes en x=2a y en x=3a
En forma matricial la relación entre los coeficientes se escribe
Niveles de energía
Relacionamos A1 y B1 con A4 y B4
El resultado de la relación entre A1, B1 y A4 y B4 es el producto de seis matrices
Teniendo en cuenta, la relaciones en los extremos x=0 y x=4a, obtenemos la ecuación transcendente
Recordamos que la matriz inversa de una matriz 2×2 es
Sea un sistema formado por un pozo de potencial de altura infinita que contiene N=3 potenciales delta de Dirac separados a=1. El parámetro α=0.5 de dicho potencial delta
Representamos la parte real e imaginaria de la ecuación transcendente, dando valores a k entre 0.1 y 4
function delta_dirac_16 a=1; alfa=0.5; N=3; ff=@(x) niveles_real(x); xb=buscar_intervalos(ff,0.1,4,50); nb=size(xb); kr=zeros(1,nb(1)); for m=1:nb(1) temp=fzero(ff,[xb(m,1) xb(m,2)]); if abs(niveles_imag(temp))<0.1 kr(m)=round(temp*1000)/1000; end end ff=@(x) niveles_imag(x); xb=buscar_intervalos(ff,0.1,4,50); nb=size(xb); ki=zeros(1,nb(1)); for m=1:nb(1) temp=fzero(ff,[xb(m,1) xb(m,2)]); if abs(niveles_real(temp))<0.1 ki(m)=round(temp*1000)/1000; end end j=1; kn=zeros(1,length(kr)); for k=[ki,kr] if find(kn==k) continue; else kn(j)=k; j=j+1; end end for k=kn kn(kn==0)=[]; end disp(kn) kk=linspace(0.1,4, 100); rp=zeros(1,length(kk)); ri=zeros(1,length(kk)); m=1; for k=kk rp(m)=niveles_real(k); ri(m)=niveles_imag(k); m=m+1; end hold on plot(kk,rp, kk,ri) for k=kn plot(k,0,'ko','markersize',4,'markerfacecolor','k') end hold off legend('real','imag','Location','best') grid on xlabel('k') ylabel('f(k)') title('Ecuación transcendente') function res=niveles_real(k) M=eye(2); fI=@(z) [(1+1i*alfa/k)*exp(1i*k*z), exp(1i*k*z); (1-1i*alfa/k)* exp(-1i*k*z),-exp(-1i*k*z)]/2; g=@(z) [exp(-1i*k*z), exp(1i*k*z); exp(-1i*k*z), -exp(1i*k*z)]; for s=N:-1:1 M=(fI(s*a)*g(s*a))*M; end resultado=M(2,1)+M(1,1)-exp(-2*1i*k*(N+1)*a)*(M(2,2)+M(1,2)); res=real(resultado); end function res=niveles_imag(k) M=eye(2); fI=@(z) [(1+1i*alfa/k)*exp(1i*k*z), exp(1i*k*z); (1-1i*alfa/k)* exp(-1i*k*z),-exp(-1i*k*z)]/2; g=@(z) [exp(-1i*k*z), exp(1i*k*z); exp(-1i*k*z), -exp(1i*k*z)]; for s=N:-1:1 M=(fI(s*a)*g(s*a))*M; end resultado=M(2,1)+M(1,1)-exp(-2*1i*k*(N+1)*a)*(M(2,2)+M(1,2)); res=imag(resultado); end function xb = buscar_intervalos(f,a,b,n) x = a:(b-a)/n:b; j = 0; y1=f(x(1)); xb=[]; for i = 1:length(x)-1 y2=f(x(i+1)); if sign(y1) ~= sign(y2) j = j + 1; xb(j,1) = x(i); xb(j,2) = x(i+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
Los valores de k buscados (puntos de color negro) y por tanto, de los niveles de energía, son aquellos que hacen que la parte real e imaginaria sean nulas simultámeamente
Las raíces k comunes de la parte real e imaginaria de la ecuación transcendente se guardan en el vector
0.3070 1.3930 2.2390 3.1420 3.8640
Funciones de onda
Dados los coeficientes A1 y B1=-A1, obtenemos los coeficientes A2 y B2, A3 y B3, A4 y B4. En forma matricial
El coeficiente A1 se determina de modo que la suma
Añadimos al script anterior, el código que representa las funciones de onda correspondientes a los tres primeros niveles de energía
function delta_dirac_17 a=1; alfa=0.5; N=3; ff=@(x) niveles_real(x); xb=buscar_intervalos(ff,0.1,4,50); nb=size(xb); kr=zeros(1,nb(1)); for m=1:nb(1) temp=fzero(ff,[xb(m,1) xb(m,2)]); if abs(niveles_imag(temp))<0.1 kr(m)=round(temp*1000)/1000; end end ff=@(x) niveles_imag(x); xb=buscar_intervalos(ff,0.1,4,50); nb=size(xb); ki=zeros(1,nb(1)); for m=1:nb(1) temp=fzero(ff,[xb(m,1) xb(m,2)]); if abs(niveles_real(temp))<0.1 ki(m)=round(temp*1000)/1000; end end j=1; kn=zeros(1,length(kr)); for k=[ki,kr] if find(kn==k) continue; else kn(j)=k; j=j+1; end end for k=kn kn(kn==0)=[]; end disp(kn) %código que representa las funciones de onda %%%%%%%%%%% A=zeros(1,N+1); B=zeros(1,N+1); A(1)=1; B(1)=-1; for k=kn(1:3) f=@(z) [exp(-1i*k*z), exp(1i*k*z); (1-1i*alfa/k)*exp(-1i*k*z), -(1+1i*alfa/k)*exp(1i*k*z)]; gI=@(z) [exp(1i*k*z), exp(1i*k*z); exp(-1i*k*z), -exp(-1i*k*z)]/2; suma=(A(1)^2+B(1)^2)*a+A(1)*B(1)*1i*(exp(-2*1i*k*a)-1)/(2*k)- A(1)*B(1)*1i*(exp(2*1i*k*a)-1)/(2*k); for m=1:N Z=gI(m*a)*f(m*a)*[A(m);B(m)]; A(m+1)=Z(1); B(m+1)=Z(2); suma=suma+(A(m+1)*A(m+1)'+B(m+1)*B(m+1)')*a+A(m+1)*B(m+1)'* 1i*(exp(-2*1i*k*(m+1)*a)-exp(-2*1i*k*m*a))/(2*k)-A(m+1)'*B(m+1)*1i* (exp(2*1i*k*(m+1)*a)-exp(2*1i*k*m*a))/(2*k); end hold on for m=0:N fplot(@(x) imag(A(m+1)*exp(-1i*k*x)+B(m+1)*exp(1i*k*x))/sqrt(suma), [m*a,(m+1)*a]) end end hold off grid on xlabel('x') ylabel('\Phi(x)') title('Función de onda') function res=niveles_real(k) M=eye(2); fI=@(z) [(1+1i*alfa/k)*exp(1i*k*z), exp(1i*k*z); (1-1i*alfa/k)* exp(-1i*k*z),-exp(-1i*k*z)]/2; g=@(z) [exp(-1i*k*z), exp(1i*k*z); exp(-1i*k*z), -exp(1i*k*z)]; for s=N:-1:1 M=(fI(s*a)*g(s*a))*M; end resultado=M(2,1)+M(1,1)-exp(-2*1i*k*(N+1)*a)*(M(2,2)+M(1,2)); res=real(resultado); end function res=niveles_imag(k) M=eye(2); fI=@(z) [(1+1i*alfa/k)*exp(1i*k*z), exp(1i*k*z); (1-1i*alfa/k)* exp(-1i*k*z),-exp(-1i*k*z)]/2; g=@(z) [exp(-1i*k*z), exp(1i*k*z); exp(-1i*k*z), -exp(1i*k*z)]; for s=N:-1:1 M=(fI(s*a)*g(s*a))*M; end resultado=M(2,1)+M(1,1)-exp(-2*1i*k*(N+1)*a)*(M(2,2)+M(1,2)); res=imag(resultado); end function xb = buscar_intervalos(f,a,b,n) x = a:(b-a)/n:b; j = 0; y1=f(x(1)); xb=[]; for i = 1:length(x)-1 y2=f(x(i+1)); if sign(y1) ~= sign(y2) j = j + 1; xb(j,1) = x(i); xb(j,2) = x(i+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
Cambiamos el parámetro α=2, y representamos las funciones de onda correspondientes a los dos primeros niveles de energía
Primeros valores de k raíz de la ecuación transcendente (son nulas la parte real e imaginaria)
1.6910 3.1420 3.6970
Pozo de potencial infinito
Cuando no hay potenciales delta, α=0, los niveles de energía para un pozo de potencial de altura infinita y de anchura 4a son proporcionales al cuadrado de
>> (1:5)*pi/((N+1)*a) ans = 0.7854 1.5708 2.3562 3.1416 3.9270
Las funciones de onda correspondientes a los tres primeros niveles de energía son
Compárese con el caso α=0.5
Energías E<0
Las soluciones de la ecuación de Schrödinger en las regiones I, I, III y IV con potencial V(x)=0 son
Los cálculos son similares al apartado anterior E<0, sustituyendo ik por k. En forma matricial la relación de coeficientes es
Niveles de energía
Relacionamos A1 y B1 con A4 y B4
Teniendo en cuenta, la relaciones en los extremos, en x=0 (A1+B1=0) y en x=4a, (A4exp(-k·4a)+B4exp(k·4a)=0), obtenemos la ecuación transcendente
Sea un sistema formado por un pozo de potencial de altura infinita que contiene N=3 potenciales delta de Dirac separados a=1. El parámetro α=2 de dicho potencial delta
function delta_dirac_18 a=1; alfa=2; N=3; ff=@(x) niveles(x); xb=buscar_intervalos(ff,0.1,4,50); nb=size(xb); kr=zeros(1,nb(1)); for m=1:nb(1) kr(m)=fzero(ff,[xb(m,1) xb(m,2)]); end disp(kr) %%%%%%%%%%%% %insertar aquí el código que representa las funciones de onda %%%%%%%%%%%%% function res=niveles(k) M=eye(2); fI=@(z) [(1-alfa/k)*exp(k*z), exp(k*z); (1+alfa/k)*exp(-k*z) ,-exp(-k*z)]/2; g=@(z) [exp(-k*z), exp(k*z); exp(-k*z), -exp(k*z)]; for s=N:-1:1 M=(fI(s*a)*g(s*a))*M; end res=M(2,1)+M(1,1)-exp(-2*k*(N+1)*a)*(M(2,2)+M(1,2)); end function xb = buscar_intervalos(f,a,b,n) x = a:(b-a)/n:b; j = 0; y1=f(x(1)); xb=[]; for i = 1:length(x)-1 y2=f(x(i+1)); if sign(y1) ~= sign(y2) j = j + 1; xb(j,1) = x(i); xb(j,2) = x(i+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
Las raíces de la ecuación transcendente se guardan en el vector
1.3352
Por debajo del valor α=0.6 aproximadamente, no hay raíces
Funciones de onda
Dados los coeficientes A1 y B1=-A1, obtenemos los coeficientes A2 y B2, A3 y B3, A4 y B4. En forma matricial
El coeficiente A1 se determina de modo que la suma
Añadimos al script anterior, el código que representa la función de onda correspondientes al único nivel de energía
... A=zeros(1,N+1); B=zeros(1,N+1); A(1)=1; B(1)=-1; for k=kr f=@(z) [exp(-k*z), exp(k*z); (1+alfa/k)*exp(-k*z), -(1-alfa/k)*exp(k*z)]; gI=@(z) [exp(k*z), exp(k*z); exp(-k*z), -exp(-k*z)]/2; suma=B(1)^2*(exp(2*k*a)-1)/(2*k)-A(1)^2*(exp(-2*k*a)-1)/(2*k)+2*A(1)*B(1)*a; for m=1:N Z=gI(m*a)*f(m*a)*[A(m);B(m)]; A(m+1)=Z(1); B(m+1)=Z(2); suma=suma+B(m+1)^2*(exp(2*k*(m+1)*a)-exp(2*k*m*a))/(2*k)- A(m+1)^2*(exp(-2*k*(m+1)*a)-exp(-2*k*m*a))/(2*k)+2*A(m+1)*B(m+1)*a; end hold on for m=0:N fplot(@(x) (A(m+1)*exp(-k*x)+B(m+1)*exp(k*x))/sqrt(suma), [m*a,(m+1)*a]) end end hold off grid on xlabel('x') ylabel('\Phi(x)') title('Función de onda')
Segunda solución
Apreciaremos que la segunda solución que se describe en este apartado es mucho más simple y elegante que la primera y trabaja únicamente con valores reales
Energías E>0
Las soluciones de la ecuación de Schrödinger en las regiones I, I, III y IV con potencial V(x)=0 se pueden escribir de forma alternativa
-
Condiciones en los extremos x=0, y x=4a donde V(x)=∞
-
En en x=a, x=2a y x=3a la función de onda es continua
La derivada primera de la función de onda NO es continua en x=a, x=2a y x=3a
Integramos la ecuación de Schrödinger en el pequeño intervalo de a-ε a a+ε
De modo similar, establecemos las otras dos ecuaciones que relacionan los coeficientes en x=2a y en x=3a
En forma matricial la relación entre los coeficientes es
Niveles de energía
El resultado de la relación entre A1, B1 y A4 y B4 es el producto de seis matrices
Teniendo en cuenta, la relaciones en los extremos, en x=0 (B1=0) y en x=4a, (A4sin(ka)+B4cos(ka)=0), obtenemos la ecuación transcendente
Sea un sistema formado por un pozo de potencial de altura infinita que contiene N=3 potenciales delta de Dirac separados a=1. El parámetro α=0.5 de dicho potencial delta
function delta_dirac_20 a=1; alfa=0.5; N=3; ff=@(x) niveles(x); xb=buscar_intervalos(ff,0.1,4,50); nb=size(xb); kr=zeros(1,nb(1)); for m=1:nb(1) kr(m)=fzero(ff,[xb(m,1) xb(m,2)]); end disp(kr) %%%%%%%%%%%% %insertar aquí el código que representa las funciones de onda %%%%%%%%%%%%% function res=niveles(k) T=eye(2); M=[0,1; 1,alfa/k]; MI=[sin(k*a),cos(k*a);cos(k*a),-sin(k*a)]; for s=N:-1:1 T=(MI*M)*T; end res=T(2,1)*cos(k*a)-T(2,2)*sin(k*a); end function xb = buscar_intervalos(f,a,b,n) x = a:(b-a)/n:b; j = 0; y1=f(x(1)); xb=[]; for i = 1:length(x)-1 y2=f(x(i+1)); if sign(y1) ~= sign(y2) j = j + 1; xb(j,1) = x(i); xb(j,2) = x(i+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
Las raíces de la ecuación transcendente se guardan en el vector
0.3070 1.3930 2.2390 3.1420 3.8640
Funciones de onda
Dados los coeficientes A1 y B1=0, obtenemos los coeficientes A2 y B2, A3 y B3, A4 y B4. En forma matricial
El coeficiente A1 se determina de modo que la suma
Añadimos al script anterior el código que representa las funciones de onda correspondientes a los tres primeros niveles de energía
... A=zeros(1,N+1); B=zeros(1,N+1); A(1)=1; B(1)=0; for k=kr(1:3) MI=[-alfa/k,1;1,0]; M=[sin(k*a),cos(k*a);cos(k*a),-sin(k*a)]; suma=A(1)^2*(a-sin(2*k*a)/(2*k))/2+B(1)^2*(a+sin(2*k*a)/(2*k))/2 -A(1)*B(1)*(cos(2*k*a)-1)/(2*k); for m=1:N Z=(MI*M)*[A(m);B(m)]; A(m+1)=Z(1); B(m+1)=Z(2); suma=suma+A(m+1)^2*(a-sin(2*k*a)/(2*k))/2+B(m+1)^2*(a+sin(2*k*a) /(2*k))/2-A(m+1)*B(m+1)*(cos(2*k*a)-1)/(2*k); end hold on for m=0:N fplot(@(x) (A(m+1)*sin(k*(x-m*a))+B(m+1)*cos(k*(x-m*a))) /sqrt(suma),[m*a,(m+1)*a]) end end hold off grid on xlabel('x') ylabel('\Phi(x)') title('Funciones de onda')
Una figura similar hemos obtenido en el apartado anteror, pero invertida
Energías E<0
Las soluciones de la ecuación de Schrödinger en las regiones I, I, III y IV con potencial V(x)=0 son
-
Condiciones en los extremos x=0, y x=4a donde V(x)=∞
-
En en x=a, x=2a y x=3a la función de onda es continua
La derivada primera de la función de onda NO es continua en x=a, x=2a y x=3a
Integramos la ecuación de Schrödinger en el pequeño intervalo de a-ε a a+ε
De modo similar, establecemos las otras dos ecuaciones que relacionan los coeficientes en x=2a y en x=3a
En forma matricial la relación entre los coeficientes es
Niveles de energía
Relacionamos A1 y B1 con A4 y B4
Teniendo en cuenta, la relaciones en los extremos, en x=0 (A1+B1=0) y en x=4a, (A4exp(-ka)+B4exp(ka)=0), obtenemos la ecuación transcendente
Sea un sistema formado por un pozo de potencial de altura infinita que contiene N=3 potenciales delta de Dirac separados a=1. El parámetro α=2 de dicho potencial delta
function delta_dirac_21 a=1; alfa=2; N=3; ff=@(x) niveles(x); xb=buscar_intervalos(ff,0.1,4,50); nb=size(xb); kr=zeros(1,nb(1)); for m=1:nb(1) kr(m)=fzero(ff,[xb(m,1) xb(m,2)]); end disp(kr) %%%%%%%%%%%% %insertar aquí el código que representa las funciones de onda %%%%%%%%%%%%% function res=niveles(k) T=eye(2); M=[1,1; 1-alfa/k,-1-alfa/k]; MI=[exp(k*a),exp(k*a);exp(-k*a),-exp(-k*a)]/2; for s=N:-1:1 T=(MI*M)*T; end res=T(1,1)+T(2,1)-(T(1,2)+T(2,2))*exp(-2*k*a); end function xb = buscar_intervalos(f,a,b,n) x = a:(b-a)/n:b; j = 0; y1=f(x(1)); xb=[]; for i = 1:length(x)-1 y2=f(x(i+1)); if sign(y1) ~= sign(y2) j = j + 1; xb(j,1) = x(i); xb(j,2) = x(i+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
Las raíces de la ecuación transcendente se guardan en el vector
1.3352
Funciones de onda
Dados los coeficientes A1 y B1=-A1, obtenemos los coeficientes A2 y B2, A3 y B3, A4 y B4. En forma matricial
El coeficiente A1 se calcula de modo que la suma
Añadimos al script anterior el código que representa la función de onda correspondiente al único nivel de energía
... A=zeros(1,N+1); B=zeros(1,N+1); A(1)=1; B(1)=-1; for k=kr MI=[1+alfa/k,1;1-alfa/k,-1]/2; M=[exp(-k*a),exp(k*a);exp(-k*a),-exp(k*a)]; suma=-A(1)^2*(exp(-2*k*a)-1)/(2*k)+B(1)^2*(exp(2*k*a)-1)/(2*k)+ 2*A(1)*B(1)*a; for m=1:N Z=(MI*M)*[A(m);B(m)]; A(m+1)=Z(1); B(m+1)=Z(2); suma=suma-A(m+1)^2*(exp(-2*k*a)-1)/(2*k)+B(m+1)^2*(exp(2*k*a)-1) /(2*k)+2*A(m+1)*B(m+1)*a; end hold on for m=0:N fplot(@(x) (A(m+1)*exp(-k*(x-m*a))+B(m+1)*exp(k*(x-m*a))) /sqrt(suma),[m*a,(m+1)*a]) end end hold off grid on grid on xlabel('x') ylabel('\Phi(x)') title('Función de onda')
Niveles de energía de un sistema de N potenciales delta
- Para E>0 la energía E es proporcional a k2
- Para E<0 la energía E es proporcional a -k2
Representamos los niveles de energía para sistemas de N=1,2,3...10, pozos de potencial delta de Dirac
-
El parámetro α=0.5
function delta_dirac_22 a=1; alfa=2; %parámetro for N=1:10 %número de potenciales delta ff=@(x) niveles_sup(x); %para E>0 xb=buscar_intervalos(ff,0.1,5,50); nb=size(xb); ks=zeros(1,nb(1)); for m=1:nb(1) ks(m)=fzero(ff,[xb(m,1) xb(m,2)]); end ff=@(x) niveles_inf(x); %para E<0 xb=buscar_intervalos(ff,0.1,5,50); nb=size(xb); ki=zeros(1,nb(1)); for m=1:nb(1) ki(m)=fzero(ff,[xb(m,1) xb(m,2)]); end %niveles for i=1:length(ks) %para E>0 line([N-0.4 N+0.4],[ks(i)^2, ks(i)^2], 'color','r') end for i=1:length(ki) %para E<0 line([N-0.4 N+0.4],[-ki(i)^2, -ki(i)^2], 'color','b') end end grid on xlim([0,11]) xlabel('N'); ylabel('E') title('Atomo, molécula...sólido lineal') function res=niveles_inf(k) %para E<0 T=eye(2); M=[1,1; 1-alfa/k,-1-alfa/k]; MI=[exp(k*a),exp(k*a);exp(-k*a),-exp(-k*a)]/2; for s=N:-1:1 T=(MI*M)*T; end res=T(1,1)+T(2,1)-(T(1,2)+T(2,2))*exp(-2*k*a); end function res=niveles_sup(k) %para E>0 T=eye(2); M=[0,1; 1,alfa/k]; MI=[sin(k*a),cos(k*a);cos(k*a),-sin(k*a)]; for s=N:-1:1 T=(MI*M)*T; end res=T(2,1)*cos(k*a)-T(2,2)*sin(k*a); end function xb = buscar_intervalos(f,a,b,n) x = a:(b-a)/n:b; j = 0; y1=f(x(1)); xb=[]; for i = 1:length(x)-1 y2=f(x(i+1)); if sign(y1) ~= sign(y2) j = j + 1; xb(j,1) = x(i); xb(j,2) = x(i+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
El parámetro α=2
Referencias
Todd K. Timberlake, Neilson Woodfield. Band formation and defects in a finite periodic quantum potential. Am. J. Phys. 90 (2), February 2022. pp. 93-102