屈瑞陽 吳茂成 楊俊義 方 亮
(1. 江蘇省蘇州第一中學(xué)校,江蘇 蘇州 215004; 2. 蘇州大學(xué)物理與光電·能源學(xué)部,江蘇 蘇州 215006)
100年前愛因斯坦廣義相對論預(yù)言了引力波,它可以形象地看成彎曲時空的 “漣漪”,由加速運動的質(zhì)量產(chǎn)生.[1]當(dāng)引力波傳播時,時空將在垂直于引力波的傳播方向產(chǎn)生擠壓和拉伸,而要發(fā)現(xiàn)這種極其微小的變化是極其困難的.為了尋找引力波事件,研究者在美國路易斯安那州和華盛頓州分別建立了兩個激光干涉引力波天文臺(LIGO).2016年2月,加州理工學(xué)院、麻省理工學(xué)院以及“LIGO”的研究人員宣布首次成功探測到兩個黑洞合并產(chǎn)生的引力波.Rainer Weiss,Barry Barish和Kip Thorne也因“對激光干涉引力波天文臺(LIGO)和引力波觀測的決定性貢獻” 而獲得了2017年諾貝爾物理學(xué)獎.[2]這一科研成果的重大突破也將人們的目光聚焦在了邁克爾遜干涉儀上.
歷史上邁克耳遜干涉儀因探尋以太而被設(shè)計發(fā)明,是光學(xué)干涉測量的常用裝置之一,用于測量激光波長、微小位移、介質(zhì)折射率等工作,在光學(xué)物理實驗教學(xué)方面有著重要的地位和意義.[3]但由于邁克爾遜干涉現(xiàn)象理論的復(fù)雜性和抽象性,一直是教與學(xué)的難點,學(xué)生對這一現(xiàn)象的理解主要依賴于具體實驗結(jié)果.該實驗關(guān)鍵在于要準(zhǔn)確地計算干涉環(huán)“冒出”或“陷入”的環(huán)數(shù),以滿足后續(xù)測量的要求.而干涉環(huán)的計數(shù)多采用人工法,即用人眼直接觀察成像到屏幕上的干涉環(huán)變化.該方法不僅極易造成眼睛疲勞,同時也影響讀數(shù)的準(zhǔn)確性,給學(xué)生的學(xué)習(xí)造成一定的困惑.物理仿真實驗?zāi)芡ㄟ^計算機輔助設(shè)計方法仿真出直觀形象的實驗結(jié)果,目前已有一些工作采用Matlab、Labview等軟件來實現(xiàn)邁克耳遜干涉仿真實驗.[4-7]通過這些仿真實驗,學(xué)生可以很容易地觀察到干涉條紋的變化,加深對知識點的理解.但采用上述軟件所編制的邁克爾遜干涉仿真實驗還只能在個人電腦環(huán)境下進行展現(xiàn),制約了仿真實驗的有效利用.
移動學(xué)習(xí)是指利用無線移動通信網(wǎng)絡(luò)技術(shù)以及無線移動通信設(shè)備(如移動電話、平板電腦等)獲取教育信息、教育資源和教育服務(wù)的一種學(xué)習(xí)形式,是一種現(xiàn)代社會不可或缺的新型學(xué)習(xí)模式.將物理仿真實驗與移動學(xué)習(xí)進行有效結(jié)合,可以充分利用移動終端的普及型和便捷性,構(gòu)建更為高效的開放型教學(xué)模式,從而提高教學(xué)和學(xué)習(xí)效果.[8]
Python是一種解釋型、面向?qū)ο蟆討B(tài)數(shù)據(jù)類型的高級程序設(shè)計語言,[9]具有簡單易學(xué)、高可移植、高可擴展等特性,并且它是開源和免費的.雖然目前物理實驗仿真中還多采用Matlab,但隨著NumPy、SciPy、matplotlib等眾多Python擴展包的開發(fā),對于Matlab中的科學(xué)計算應(yīng)用系統(tǒng)的實現(xiàn),完全可以采用Python來替代.而Matlab中無法直接實現(xiàn)的與數(shù)據(jù)庫或網(wǎng)頁進行通訊的問題,Python通過它的MySQLDB、Mplds等擴展包可以輕松實現(xiàn).因此在當(dāng)前移動互聯(lián)網(wǎng)時代,用Python代替Matlab等軟件實現(xiàn)物理實驗仿真將更有利于物理實驗的移動教學(xué).
雖然Python 語言應(yīng)用廣泛,但在物理實驗上的應(yīng)用還基本集中在數(shù)據(jù)處理上,[10,11]仿真實驗的應(yīng)用還不多見.本文以邁克爾遜干涉實驗為例,應(yīng)用Python語言編程模擬了不同參數(shù)下干涉條紋的分布圖形,并在此基礎(chǔ)上將二維碼技術(shù)運用到仿真實驗中,將移動網(wǎng)絡(luò)技術(shù)很好地應(yīng)用于現(xiàn)代教學(xué)進程中,實現(xiàn)學(xué)生對實驗教學(xué)的移動學(xué)習(xí).
邁克耳遜干涉實驗是利用分振幅法產(chǎn)生雙光束以實現(xiàn)等傾角干涉,其實驗裝置及光路示意圖如圖1所示.G1、G2是兩塊材料和厚度都相同,并且彼此平行的平面玻璃片.在G1的后表面上鍍有半透(半反射)膜,能將入射光分成振幅近乎相等的反射光1和透射光2,因此G1也稱為分光片.G2是用來補償反射光1和透射光2之間的附加光程差,故稱為補償片.M1和M2為兩片平面反射鏡,與玻璃片G1、G2傾斜成45o角.當(dāng)從光源處發(fā)出一束光入射到G1上,反射光1在G1處反射后傳播到M1上,透射光2則透過G2后傳播到M2上.這兩束光分別在平面鏡M1和M2上反射后逆著各自的入射方向返回,最后到達觀察者處.由于這兩束光是來自光源上的同一點,是相干光,因而觀察者能看到干涉條紋.此外,從M2返回的光線在G1的后表面上反射,使得M2在M1附近形成了一個平行于M1的虛像M2′,M1和M2′的兩表面構(gòu)成了一個厚度為d的理想空氣膜.因此光來自于M1和M2的反射,相當(dāng)于來自于M1和M2′的反射,即相干光產(chǎn)生的干涉與該空氣膜產(chǎn)生的干涉是等效的.
(a) 邁克爾遜干涉實驗裝置示意圖
(b) 邁克爾遜干涉實驗光路示意圖
當(dāng)M1與M2垂直時,即M1與M2′平行時,所得的干涉為等傾干涉.所有傾角為i的入射光,由M1與M2′反射光線的光程差表達式為
Δ=2dcosi,
(1)
其中i為光在M1鏡面上的入射角,d為空氣膜的厚度.
根據(jù)光的干涉公式,相干光合成后的強度表達式為
(2)
利用相干光光強的合成原理,設(shè)計Python語言仿真程序,其中邁克爾遜干涉實驗仿真核心程序如下.
class PlotCanvas(FigureCanvas):
def_init_(self, parent=None, width=5, height=4, dpi=100):
self.lamd=589.3e-9
#設(shè)定入射光波長
self.h=400e-3
#設(shè)定入射光高度
self.r1=250e-3
#設(shè)定干涉條紋觀察區(qū)域半徑
self.N=1024
#設(shè)置采樣點數(shù)
self.countK=20
#循環(huán)次數(shù),與K相關(guān),k=0.5 實際循環(huán)40次
myCtrSignal.Signal[str].connect(self.plot)
def plot(self,text):
x=np.linspace(-self.r1,self.r1,self.N)
y=x
#設(shè)定坐標(biāo)向量
[self.X,self.Y]=np.meshgrid(x,y)
#生成坐標(biāo)矩陣
self.K=0
if text==′Show′:
#顯示干涉圖
self.im=self.ax.imshow(self.singleMap(),cmap=′gray′, animated=False)
self.fig.savefig(′snapshot.jpg′)
self.draw()
def singleMap(self):
r2=np.sqrt(self.X**2+self.Y**2)
#計算各點到圓心距離
theta=np.arctan(np.true-divide(r2,self.h))
#計算各點入射角
d=self.bei*self.lamd+self.K*self.lamd/2
#設(shè)置薄膜厚度
n2=1.5
#設(shè)置介質(zhì)折射率
delta=2*d*np.cos(theta) #求光程差
phi=2*np.pi*delta/self.lamd
#求位相差
I=4*np.cos(phi/2)**2
#求光強
return I
圖2為邁克爾遜干涉實驗的Python仿真界面,界面左上部為參數(shù)選擇區(qū)域;左下部為光路示
圖2 邁克爾遜干涉實驗仿真界面
意圖;右上部為文件生成區(qū)域,可以生成能保存的動態(tài)干涉條紋文件,以便退出程序后觀看;右下部為實時的干涉條紋演示圖.通過改變波長、空氣膜厚度參數(shù),學(xué)生能清楚地觀察到邁克爾遜等傾干涉條紋強度的各種變化情況.
圖3(a)~(c)分別顯示了空氣膜厚度為1.5×10-5m,入射波長λ為532nm、589.3nm和632.8nm時獲得的干涉條紋演示圖.從圖中可以看出, 隨著入射波長的增加, 條紋逐漸地變疏,這是因為隨著λ的增大,各級干涉條紋的角間距也隨之增大,在相同的區(qū)域,能顯示的條紋級數(shù)變少.另外由于波長的變化,導(dǎo)致空氣膜厚度引起的相位差變化不同,從而使條紋的明暗分布也發(fā)生了變化.圖3(d)~(f)分別顯示了入射波長λ為589.3nm,空氣膜厚度為10λ、30λ和50λ時獲得的干涉條紋演示圖.當(dāng)移動M1使空氣膜厚度d增加時,由于各級干涉條紋的角間距隨之減小,干涉條紋不斷從中心“冒出”.即相同區(qū)域內(nèi),能顯示的條紋級數(shù)增多.反之,當(dāng)空氣膜厚度d減小時,干涉條紋則不斷向中心“陷入”.
最后,我們將該仿真實驗的信息訪問路徑編碼,生成二維碼,如圖3(h).學(xué)生可以通過手機、平板電腦等移動設(shè)備中安裝的二維碼掃描工具進行掃描,能夠在自己移動設(shè)備上觀看該仿真實驗的參數(shù)調(diào)整,動態(tài)圖展示等信息,以實現(xiàn)移動學(xué)習(xí),提高學(xué)習(xí)效率.
本文利用Python語言仿真了邁克爾遜干涉實驗,在程序中可以方便的改變波長、空氣膜厚度等參數(shù),能直觀的觀察不同參數(shù)條件下干涉圖樣的變化.同時利用手持設(shè)備的廣泛性和二維碼技術(shù)的便捷性,將移動網(wǎng)路技術(shù)應(yīng)
到教學(xué)過程中.本文所做的嘗試不僅可以幫助學(xué)生建立基本光學(xué)干涉概念,驗證光學(xué)波動性的規(guī)律,更為重要的是能調(diào)動學(xué)生學(xué)習(xí)的主動性,有利于培養(yǎng)學(xué)生的創(chuàng)新能力.
1 孫瑋怡,劉玉穎,朱世秋. 從探尋“以太”到探測“引力波”——邁克耳孫干涉儀的應(yīng)用[J]. 物理與工程,2017,27(4):42-46.
2 黃燕萍,沈珊雄. 2017年諾貝爾物理學(xué)獎和引力波[J]. 物理教學(xué),2017(12):2-3.
3 江美福,方建興. 大學(xué)物理實驗教程[M]. 北京:高等教育出版社,2013: 188-192.
4 喬亮,羊富貴,夏忠朝,等. 基于Matlab 的邁克爾遜干涉實驗仿真[J]. 大學(xué)物理實驗,2015,27(2):93-95.
5 譚毅. 邁克爾遜干涉實驗的仿真研究[J]. 實驗室科學(xué),2015,14(2):121-124.
6 楊俊義,張曉俊. MATLAB在大學(xué)物理實驗中的應(yīng)用[M]. 蘇州:蘇州大學(xué)出版社,2015:69-71.
7 呂亮,曹宏昊,汪洪,等. 基于Labview的邁克爾遜干涉儀測量空氣折射率虛擬實驗研究[J]. 大學(xué)物理實驗,2013,26(6):70-73.
8 喬憲武,江影. 二維碼在大學(xué)物理實驗教學(xué)中的應(yīng)用[J]. 物理實驗,2015,35(5):16-18.
9 張若愚. Python科學(xué)計算(第2版) [M]. 北京:清華大學(xué)出版社,2016:1-10.
10 宮薇薇,祝繼常,韓煦. 基于Python的網(wǎng)頁版物理實驗快速建設(shè)技術(shù)[J].大學(xué)物理實驗,2016,29(5):114-117.
11 吳迪,張星海. Python在熱敏電阻測量實驗數(shù)據(jù)處理中的應(yīng)用[J]. 大學(xué)物理實驗,2013,26(5):97-99.