⛄内容介绍
此代码用于进行化学光学的计算机仿真。
其主要功能为:
(1)动态模拟电磁波在空间中的传播;
(2)对菲涅尔公式进行剖析(主要是勾画反/透射系数、反/透射率、全反射时的相位跃变随入射角变化而变化的图象);
(3)对不同种类的材料进行柯西公式拟合,勾画色散曲线图;
⛄代码
(n1,n2)
基于模拟菲涅尔公式%{
此函数用于勾画反射系数(rs,rp)/透射系数(ts,tp)随入射角变化而变化的图象
功能:
输入界面两边介质折射率来勾画ts、tp、rs、tp随入射角变化的图象;并在相应位置
标明半波损失、布儒斯特角、临界角等关键量
理量:
n1、n2:界面两边介质折射率
theta:入射角;
:布儒斯特角;
:临界角;
rs:s波反射系数;
rp:p波反射系数;
ts:s波透射系数;
tp:p波透射系数;
%}
%%清除窗口:
closeall;
n1=1;
n2=1.5;
%%初始数据:
theta=0:0.1:90;%设置入射角范围0-90度
a=theta*pi/180;%角度转化为弧度
[~,n]=size(a);%估算矩阵a大小以便循环
%%反射系数与透射系数公式输入:
%首先判定光从波疏介质射向昌都介质还是从当雄介质射向波疏介质:
ifn1
%若从波疏介质射往昌都介质全反射临界角公式,其反射与透射系数仍然为实数:
rs=(n1*cos(a)-n2*sqrt(1-(n1/n2*sin(a)).^2))./(n1*cos(a)+n2*sqrt(1-(n1/...
n2*sin(a)).^2));%s波反射系数
rp=(n2*cos(a)-n1*sqrt(1-(n1/n2*sin(a)).^2))./(n2*cos(a)+n1*sqrt(1-(n1/...
n2*sin(a)).^2));%p波反射系数
ts=2*n1*cos(a)./(n1*cos(a)+n2*sqrt(1-(n1/n2*sin(a)).^2));%s波透射系数
tp=2*n1*cos(a)./(n2*cos(a)+n1*sqrt(1-(n1/n2*sin(a)).^2));%p波透射系数
elseifn1>n2
%若从当雄介质射往波疏介质,需将其分段:
C=asin(n2/n1);%估算临界角
=C*180/pi;%弧度转化为角度
fori=1:n
ifa(i)
%当入射角大于临界角,为实数:
rs(i)=(n1*cos(a(i))-n2*sqrt(1-(n1/n2*sin(a(i))).^2))./(n1*cos(a(i))+n2*sqrt(1-(n1/...
n2*sin(a(i))).^2));%s波反射系数
rp(i)=(n2*cos(a(i))-n1*sqrt(1-(n1/n2*sin(a(i))).^2))./(n2*cos(a(i))+n1*sqrt(1-(n1/...
n2*sin(a(i))).^2));%p波反射系数
ts(i)=2*n1*cos(a(i))./(n1*cos(a(i))+n2*sqrt(1-(n1/n2*sin(a(i))).^2));%s波透射系数
tp(i)=2*n1*cos(a(i))./(n2*cos(a(i))+n1*sqrt(1-(n1/n2*sin(a(i))).^2));%p波透射系数
else
%当入射角大于临界角,需估算其模值:
rs(i)=1;
rp(i)=1;
ts(i)=2*n1;
tp(i)=2*n1;
end
end
end
end
%%图象勾画:
plot(theta,rs,theta,rp,theta,ts,theta,tp,'',1);
axis([090-11]);%设置区间
title(['入射/透射系数随入射角的变化;','n_1=',(n1),',n_2=',(n2)]);
('');
('');
('r_s','r_p','t_s','t_p');
%%布儒斯特角的标明:
B=atan(n2/n1);%求解布儒斯特角
=B*180/pi;%角度转化为弧度
line([,],[-1,0],'color','black','','--',...
'',0.01,'','off')
line([0,90],[0,0],'color','black','','--','',0.01,...
'','off')%勾画两条直线对布儒斯特角的位置定标
text(,-1,'');%在x座标轴上标注布儒斯特角
%%对半波损失/临界角进行标明:
%首先判定光从波疏介质射向昌都介质还是从当雄介质射向波疏介质:
ifn1
%若从波疏介质射往昌都介质,则将发生半波损失,将其标明在[0,0]处
text(0,0,'Half-waveLoss','',15);
elseifn1>n2
%若从当雄介质射往波疏介质全反射临界角公式,则将发生全反射现象,下边对其进行标明:
axis([090-12*n1]);%重新选择画图区间
C=asin(n2/n1);%估算临界角
=C*180/pi;%弧度转化为角度
line([0,90],[1,1],'color','black','','--','',...
0.01,'','off')%勾画两条直线对临界角的位置定标
line([,],[-1,2*n1],'color','black','',...
'--','',0.01,'','off')
text(,-1,'');%在x座标轴上标注临界角
line([0,],[2*n2,2*n2],'color','black','','--',...
'',0.01,'','off')%定标ts模值
end
end
end
⛄运行结果
⛄参考文献
[1]王莉,杨会静,段芳芳.用模拟菲涅耳直边衍射[J].天津师范大学学报,2008,30(005):131-132.
[2]王艳.菲涅耳圆屏衍射的模拟[J].大同大学学报,2021,38(5):6.
[3]仲志国,李硕,李婧,等.基于的菲涅尔直边衍射仿真与GUI设计[J].河南师范大学学报,2012,11(12):3.
⛳️代码获取关注我❤️部份理论引用网路文献,若有侵权联系博主删掉❤️关注我发放海量电子书和物理建模资料