1.题目
一粒子在一维势阱中运动:
求束缚态(0<E<U0)的能级所满足的方程.
2.
依照参考答案,化简到:
3.得到进行数值模拟
本征能量满足方程:
进行数值模拟,设定初始值为:Me=0.5MeV,a=0.5nm,U0=20eV,得到图像如下:
设定初始值为:Me=0.5MeV,a=0.5nm,U0=0.020eV,得到图像如下:
设定初始值为:Me=0.5MeV,a=0.5nm,U0=200eV,得到图像如下:
3.代码示例:
E求解matlab版:
E=0;%%%
EV=1.783*10^-38;%%%%电子伏特与质量
ev=1.6*10^-19;%%%%%电子伏特
u=0.5*(10^6)*EV;
a=0.5*10^-9;%%势阱宽度
h=6.62*10^-34;
%k1=sqrt(2*u*(U0-E))./(h./(2*pi)).^2;
%k2=sqrt((2*u*E)./(h./(2*pi))).^2;
fk=[];
M1=1000;
U=[0.02,20,200];%%%%输入需要的能级
ANS=[];
for k=1:size(U,2)
U0=U(k)*ev;%%%%%%重要项目--能级
for i=1:M1
k1=sqrt((2*u*(U0-E))./(h./(2*pi)).^2);
k2=sqrt((2*u*E)./(h./(2*pi)).^2);
fk(i)=(k2.^2-k1.^2)*sin(2*k2*a)-2*k1*k2*cos(2*k2*a);
E=E+(U0./(M1));
ANS(k,i)=fk(i);
end
end
ksize=a./(M1-1);
kksize=0:ksize:a;
subplot(3,1,1);
plot(kksize,ANS(1,:));
xlabel('势阱宽度(nm)')
title('Me=0.5MeV,a=0.5nm,U0=0.20eV');
subplot(3,1,2);
plot(kksize,ANS(2,:));
xlabel('势阱宽度(nm)')
title('Me=0.5MeV,a=0.5nm,U0=20eV')
subplot(3,1,3);
plot(kksize,ANS(3,:));
xlabel('势阱宽度(nm)')
title('Me=0.5MeV,a=0.5nm,U0=200eV')
E求解python版本:
import numpy as np
from matplotlib import pyplot as pl
import math
pi=3.1415926
E=0
EV=1.783*(10**-38)
ev=1.6*(10**-19)
u=0.5*(10**6)*EV
a=0.5*(10**-9)
h=6.62*(10**-34)
M1=1000
U=np.array([20])#能级
ANS=np.zeros(shape=(M1))
fk=np.zeros(shape=(M1))
for k in range(0,np.size(U)):
U0=U[k]*ev
for i in range(0,M1):
k1=math.sqrt((2*u*(U0-E))/(h/(2*pi))**2)
k2=math.sqrt((2*u*E)/(h/(2*pi))**2)
fk[i]=(k2**2-k1**2)*math.sin(2*k2*a)-2*k1*k2*math.cos(2*k2*a)
E=E+(U0/(M1))
ANS[i]=fk[i]
ksize=a/(M1-1)
kksize=np.linspace(0,a,M1)
pl.plot(kksize,ANS)
pl.show()
波函数与概率密度matlab版本:
E=0;%%%
EV=1.783*10^-38;%%%%电子伏特与质量
ev=1.6*10^-19;%%%%%电子伏特
u=0.5*(10^6)*EV;
a=0.5*10^-9;%%势阱宽度
h=6.62*10^-34;
%k1=sqrt(2*u*(U0-E))./(h./(2*pi)).^2;
%k2=sqrt((2*u*E)./(h./(2*pi))).^2;
fk=[];
M1=1000;
U=20;
U0=U*ev;%%%%输入需要的能级
ANS=[];
x=-0.5*a;
zetla=[];
for i1=1:M1
k1=sqrt((2*u*(U0-E))./(h./(2*pi)).^2);
k2=sqrt((2*u*E)./(h./(2*pi)).^2);
C=-(k2*sin(k2*a)-k1*cos(k2*a))*exp(-k1*a)./(k2);
D=(exp(-k1*a)+C*sin(k2*a))/(cos(k2*a));
zetla(i1)=C*sin(k2*x)+D*cos(k2*x);
x=x+a./(M1-1);
E=E+(U0./(M1));
end
ksize=a./(M1-1);
kksize=-0.5*a:ksize:0.5*a;
plot(kksize,zetla)
hold on;
plot(kksize,zetla.^2);
legend('波函数','概率密度')
xlabel('势阱宽度')