求高手帮我修改一个求本征函数的程序:
clear all
m=1
tt=1;
ttt=0.1;
w=10
for F=0:0.02:4
J=100; T=2*pi/w;
tstep=T/J; U=eye(4,4);
for t=tstep:tstep:T
H=zeros(4,4);
H_0=zeros(4,4);
H_0(1,2)=tt;
H_0(2,1)=tt;
H_0(2,3)=tt;
H_0(3,2)=tt;
H_0(3,4)=tt;
H_0(4,3)=tt;
H_0(1,3)=ttt;
H_0(3,1)=ttt;
H_0(2,4)=ttt;
H_0(4,2)=ttt;
H(1,1)=F*w*sin(w*t);
U=expm(-1i*(H_0+H)*tstep)*U;
end
[C,Ueig]=eig(U);
QuasiEnergy=((1i*log(diag(Ueig))/T));
ExpectH_0=(C'*(H_0)*C);
[ExpSort,Index]=sort(real(diag(ExpectH_0)));
[CC,Ueig]=(eig(U));
% yy=CC(:,Index(2)) %这个命令下图2与图3的图混错
yy=CC(:,2) %这个命令下在横坐标2.4附近有几个点不连续,有不对的值。
yy1(m)=yy(1)
yy2(m)=yy(2)
yy3(m)=yy(3)
yy4(m)=yy(4)
m=m+1;
end
plot(0:0.02:4,abs(yy1).^2,'k.','MarkerSize',1.5)
hold on
plot(0:0.02:4,abs(yy2).^2,'k.','MarkerSize',1.5)
hold on
plot(0:0.02:4,abs(yy3).^2,'k.','MarkerSize',1.5)
hold on
plot(0:0.02:4,abs(yy4).^2,'k.','MarkerSize',1.5)
在计算本征函数时用 yy=CC(:,Index(2)) %这个命令下图2与图3的图混错
用yy=CC(:,2) %这个命令下在横坐标2.4附近有几个点不连续,有不对的值。
求助如何处理本征函数的排序问题?
正确的图已给出在附件里。
![求高手帮我修改一个求本征函数的程序]()
新建 Microsoft Word Document (4).jpg |