?內容介紹
此代碼用于進行化學光學的計算機仿真。
其主要功能為:
(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.
??代碼獲取關注我??部份理論引用網路文獻,若有侵權聯系博主刪掉??關注我發放海量電子書和物理建模資料