高 峰,趙文麗,曹學(xué)成
(山東農(nóng)業(yè)大學(xué)信息科學(xué)與工程學(xué)院,山東泰安 271018)
夫瑯禾費單縫衍射是大學(xué)物理波動光學(xué)及大學(xué)物理基礎(chǔ)實驗的重要教學(xué)內(nèi)容[1,2]。在理論教學(xué)中,通常是先通過菲涅爾半波帶法推得亮紋中心(或暗紋中心)的公式,再討論條紋隨波長、縫寬和透鏡到屏幕的距離等參數(shù)的變化。由于對公式討論比較抽象,教學(xué)效果不夠理想。在實驗中,如將觀察條紋隨波長、縫寬和透鏡到屏幕的距離這些參數(shù)的變化作為實驗內(nèi)容,由于使用的光學(xué)實驗儀器比較精密,調(diào)節(jié)起來比較復(fù)雜、耗費時間。學(xué)生在儀器調(diào)節(jié)方面花費太多的時間,往往不能更好地理解實驗原理和觀察實驗現(xiàn)象,所以通常只是把用光電探頭測定激光單色光源的單縫衍射光強(qiáng)分布作為實驗內(nèi)容,沒有涉及觀察條紋隨波長、縫寬和透鏡到屏幕的距離這些參數(shù)的變化。
對于以上問題,本文應(yīng)用MATLAB GUI技術(shù)開發(fā)了夫瑯禾費單縫衍射仿真軟件。該仿真軟件可以對單縫衍射在各種不同參數(shù)條件下進(jìn)行模擬,界面中采用交互式滾動條動態(tài)的展現(xiàn)各參數(shù)與衍射條紋之間的關(guān)系,結(jié)果直觀、逼真,有利于加深學(xué)生對原理的理解和認(rèn)識,便于單縫衍射的學(xué)習(xí)和研究[3-8]。
一束波長為λ的單色平行光垂直入射到寬度為a的狹縫,縫后透鏡到屏幕的距離為f,如圖1所示。根據(jù)惠更斯-菲涅爾原理,利用衍射矢量圖分析的方法,屏幕點處的光強(qiáng)為
圖1 夫瑯禾費單縫衍射原理圖Fig.1 The schematic diagram of the principle of Fraunhofer single slit diffraction
其中IP為P點處的光強(qiáng),I0為中央明紋中心O處的光強(qiáng),a為狹縫的寬度,λ為單色光的波長,θ為衍射角。
在布局編輯器中設(shè)置如下控件:建立2個坐標(biāo)軸對象用來顯示單縫衍射的衍射條紋和光強(qiáng)分布;建立3個靜態(tài)文本標(biāo)簽,標(biāo)注相應(yīng)的控件提示;建立3個可編輯文本框,分別顯示波長、狹縫寬度和透鏡到屏幕的距離;建立3個滑動條用以控制波長、狹縫寬度和透鏡到屏幕的距離;建立2個按鈕,分別繪制單縫衍射衍射圖樣和結(jié)束程序。設(shè)置以上所有控件的Sting和Tag屬性,便于程序的編輯、記憶和維護(hù),如圖2所示。
圖2 仿真界面設(shè)計Fig.2 The design of the simulation interactive software
編寫程序代碼過程中的主要工作如下:
1、在程序初始化時,結(jié)合實驗實際,設(shè)置光源的波長λ=390 nm,狹縫的寬度a=0.02 nm,透鏡的焦距f=0.6 m。
程序代碼如下:
set(handles.edit1,'String',390); % 設(shè)定波長的默認(rèn)值(單位 nm)
set(handles.edit2,'String',0.2); % 設(shè)定狹縫寬度的默認(rèn)值(單位 mm)
set(handles.edit3,'String',0.6); % 設(shè)定透鏡到屏幕距離的默認(rèn)值(單位 m)
2、設(shè)置三個滑動條的最大和最小值,并將選擇好的三個滑動條中的數(shù)據(jù)顯示到三個動態(tài)文本框中。波長部分程序代碼如下,狹縫寬度和透鏡到屏幕的距離做相同設(shè)置:
set(handles.slider1,'Min',390); % 設(shè)定波長的最小值(單位 nm)
set(handles.slider1,'Max',760); % 設(shè)定波長的最大值(單位 nm)
slider1value=get(handles.slider1,'Value');% 獲得波長滑動條的數(shù)值
set(handles.edit1,'String',num2str(slider1value)); % 將波長滑動條的數(shù)值顯示在動態(tài)文本框中。
3、調(diào)用pushbutton1_Callback函數(shù),根據(jù)輸入?yún)?shù)繪制單縫衍射和光強(qiáng)分布圖形,并實現(xiàn)根據(jù)波長范圍設(shè)置相應(yīng)衍射圖像的顏色。程序調(diào)試完成后運(yùn)行的界面如圖3所示。程序代碼如下:
lambda=1e-9*get(handles.slider1,'Value');
a=1e-3*get(handles.slider2,'Value');
f=get(handles.slider3,'Value');
xmax=10*lambda*f/a; %設(shè)置屏幕范圍
Nx=1000;
xs=linspace(-xmax,xmax,Nx); %屏幕上的點數(shù)
Np=1000;
xpoint=linspace(-a/2,a/2,Np); %將單縫分成Np個光源
for i=1:Nx %對屏幕上各點做循環(huán)
sintheta=xs(i)/f;
alpha=2*pi.*xpoint*sintheta/lambda;
sumcos=sum(cos(alpha));
sumsin=sum(sin(alpha));
B(i,:)=(sumcos^2+sumsin^2)/Np^2;
end
N=255; %確定灰度等級
Br=B/max(B)*N; %使最大光強(qiáng)對應(yīng)于最大灰度級
axes(handles.axes1),image(x1max,xs,Br); %畫衍射條紋
axis([0,0.5,-6e-3,6e-3]);
if lambda>=622e-9 c=[0 0 0;1 0 0]; %根據(jù)波長范圍設(shè)置相應(yīng)的衍射條紋顏色
elseif lambda> =597e-9 c=[0 0 0;1 0.38 0];
elseif lambda> =577e-9 c=[0 0 0;1 1 0];
elseif lambda> =492e-9 c=[0 0 0;0 1 0];
elseif lambda> =450e-9 c=[0 0 0;0 1 1];
elseif lambda> =435e-9 c=[0 0 0;0 0 1];
else c=[0 0 0;0.5 0 0.5];
end
colormap(c); %確定光的顏色
xlabel('單縫衍射圖像');
axes(handles.axes2);
plot(B,xs,'b.-'),grid on;
axis([0,1,-6e-3,6e-3]);
xlabel('單縫衍射光強(qiáng)分布')
圖3 仿真運(yùn)行界面Fig.3 The operating interface of the simulation interactive software
滑動改變運(yùn)行界面中的波長、狹縫的寬度、透鏡到屏幕的距離這3個參數(shù),圖像的顏色、條紋的寬度都隨之改變。圖4為波長分別為(藍(lán)光)和(紅光),在縫寬和透鏡到屏幕的距離不變的情況下的單縫衍射條紋,從圖中可以明顯的看出,當(dāng)波長增大時,條紋會變寬,衍射更明顯。
圖4 衍射條紋隨波長的變化Fig.4 The change of the diffraction pattern with wavelength
圖5 表示在波長,透鏡到屏幕的距離不變的情況下,改變狹縫的寬度,例如任選兩個數(shù)值0.109 m和1.617 m,可以看出,狹縫的寬度越小,衍射越明顯。
圖5 衍射條紋隨縫寬的變化Fig.5 The change of the diffraction pattern with the width of the single slit
同樣,在波長,狹縫寬度不變的情況下,改變透鏡到屏幕的距離,例如任選兩個數(shù)值0.2 m和1.0 m,可以看到,透鏡到屏幕的距離越大,衍射越明顯。如圖6所示。
利用MATLAB GUI對夫瑯禾費單縫衍射進(jìn)行仿真,編制了交互界面,在界面中改變相關(guān)參數(shù),可以仿真出不同實驗條件下的現(xiàn)象和結(jié)果,加深了學(xué)生對于物理原理的理解,同時也避免了學(xué)生實驗過程中由于儀器調(diào)節(jié)而產(chǎn)生的部分圖像失真問題,達(dá)到了與理論和實驗的較好結(jié)合。通過動態(tài)展示,整個過程直觀形象,圖樣細(xì)致逼真,對于培養(yǎng)學(xué)生學(xué)習(xí)興趣有著十分積極的意義。
[1]王永剛,曹學(xué)成,高 峰,等.大學(xué)物理實驗[M].北京:中國農(nóng)業(yè)出版社,2011:141-147
[2]曹學(xué)成,姜永超,王永剛,等.大學(xué)物理[M].北京:中國農(nóng)業(yè)出版社,2009:280-283
[3]鐘曦旭,楊萬民,唐純青.MATLAB及其在大學(xué)物理課程中的應(yīng)用[M].西安:陜西師范大學(xué)出版社,2006
[4]陳垚光,毛濤濤,王正林,等.精通MATLAB GUI設(shè)計[M].北京:電子工業(yè)出版社,2008
[5]周 憶,梁 齊.用MATLAB語言模擬光衍射現(xiàn)象[J].大學(xué)物理實驗,2001,14(4):47-52
[6]胡孝博,劉揚(yáng)正.基于MATLAB GUI的光的干涉實驗仿真[J].南京工程學(xué)院學(xué)報(自然科學(xué)版),2004,24(3):65-67
[7]吳 迪,張 星.利用MATLAB的GUI制作交互式演示實驗軟件[J].大學(xué)物理實驗,2006,19(2):74-75
[8]謝嘉寧,趙建林,陳偉成,等.夫瑯禾費衍射的計算機(jī)仿真[J].大學(xué)物理,2006,19(2):51-54