趙昆濤
(華北理工大學冀唐學院,河北唐山 063300)
Python語言在牛頓環(huán)實驗數(shù)據(jù)處理中的應用
趙昆濤
(華北理工大學冀唐學院,河北唐山 063300)
牛頓環(huán)實驗是大學物理中非常重要的一個實驗,但是在實驗中需要讀取的數(shù)據(jù)比較多,數(shù)據(jù)處理的過程很費時間而且容易出錯.為此使用Python語言編寫了一個圖形界面的數(shù)據(jù)處理程序,分別使用逐差法和繪圖法處理實驗數(shù)據(jù),可以方便地獲得最終的計算結(jié)果,節(jié)省處理數(shù)據(jù)的時間.并可對結(jié)果可視化,幫助理解實驗結(jié)果.本文采用了一次實驗課中對讀數(shù)顯微鏡讀取的數(shù)據(jù)作為例子,演示了本程序的使用方法,介紹了數(shù)據(jù)處理的過程,并且對兩種數(shù)據(jù)處理的方法進行比較.
Python;牛頓環(huán);數(shù)據(jù)處理
牛頓環(huán)最早被牛頓所發(fā)現(xiàn),是一種典型的光的等厚干涉現(xiàn)象.將一塊曲率半徑很大的平凸透鏡凸面放在一塊玻璃平板上,用單色光照射,就可以觀察到一些明暗相間的同心圓環(huán),并且距離圓心越遠圓環(huán)越窄,這些圓環(huán)就是牛頓環(huán).
牛頓環(huán)實驗是大學物理必做的光學實驗,通過測量牛頓環(huán)的直徑,利用逐差法可以計算平凸透鏡的曲率半徑R[1-3]:

該實驗需要測量幾十個讀數(shù),還需要計算出相應環(huán)的直徑,并代入式(1)計算,面對如此大的計算量,無論是手算還是使用計算器都很繁瑣,難免會出錯,進而影響物理實驗的學習效果.為此設計了一個基于Python的圖形界面數(shù)據(jù)處理程序,只要將讀出的數(shù)據(jù)填入對應表格,點擊按鈕即可快速計算出所需結(jié)果.
在眾多編程語言中,之所以使用Python編寫,是因為Python作為一種跨平臺的高級編程語言,既具備了傳統(tǒng)編程語言功能強大的特點又不失腳本語言的簡單易用,使它一直穩(wěn)居編程語言排行榜前列.同時Python提供了豐富的標準庫(模塊)來實現(xiàn)各種功能[4-7].本文中主要是以Py Qt模塊設計圖形用戶界面,用NumPy模塊和SciPy模塊進行相關計算,用matplotlib模塊可視化處理結(jié)果.
Py Qt是一組與Python綁定的Qt應用程序框架,包含六百多個類,廣泛用于圖形用戶界面的開發(fā),可以運行在包括Windows、MacOS和Linux等多種操作系統(tǒng)平臺下[8].
NumPy是Python中用于科學計算的基本模塊,它可以提供強大的N維數(shù)組對象,繼承C/C++和Fortran代碼工具,具有線性代數(shù),傅里葉變換,以及隨機數(shù)等多種工具包,能保證足夠快的計算速度.
SciPy包含線性代數(shù)、積分、插值、特殊函數(shù)、統(tǒng)計、常微分方程求解等工具包,可以進行高效的科學計算.
Matplotlib是Python最常用的二維繪圖庫,可以生成多種格式的高質(zhì)量圖表.
參照文獻[2]中的表格,設計出圖形界面,其中n環(huán)取第8至17環(huán),m環(huán)取第18~27環(huán),界面設計效果如圖1.用戶可以直接在空格處填寫相應的讀數(shù),也可以點擊導入數(shù)據(jù)按鈕導入特定格式的數(shù)據(jù)文件.然后點擊計算按鈕即可計算牛頓環(huán)直徑和透鏡的曲率半徑.

圖1 圖形界面
數(shù)據(jù)處理的流程為,首先計算牛頓環(huán)的直徑D,即X右X左,再計算直徑平方差,然后按式(1)計算平凸透鏡凸面的曲率半徑R,最后計算不確定度.
由不確定度的定義可得

其中A類不確定度為

因為B類不確定度Uj無法用統(tǒng)計的方法確定,需要其他信息來估計,所以本程序中只計算了A類不確定度Uj.最終的計算結(jié)果如圖2.

圖2 計算結(jié)果
計算曲率半徑除了可以用逐差法,還可以用繪圖法:以環(huán)數(shù)j為橫軸,直徑平方D2為縱軸建立坐標系,將實驗數(shù)據(jù)描點,然后對數(shù)據(jù)點做線性擬合,計算直線的斜率k.由公式D2j=4Rλk,根據(jù)線性擬合出的斜率k即可求出凸透鏡凸面的曲率半徑R[9-11].
本文中使用最小二乘法進行數(shù)據(jù)擬合,Python的科學計算庫SciPy中的leastsq模塊可以實現(xiàn)最小二乘法的擬合[12].選取擬合函數(shù)為直線y=a+bx,根據(jù)已知的自變量x數(shù)列和因變量y數(shù)列的值,就可以求出a和b的值,代碼如下:


使用Matlablib將數(shù)據(jù)點和擬合結(jié)果繪制出來如圖3.由圖3和圖2可以看出,兩種方法的結(jié)果完全吻合,在這次實驗中最小二乘法計算結(jié)果的A類不確定度比逐差法要大,但是與逐差法相比繪圖法的結(jié)果更直觀更容易理解.

圖3 繪圖法結(jié)果
本文設計了一個圖形界面的實驗數(shù)據(jù)處理程序,能快速、高效、準確地獲得結(jié)果,可以避免手算出現(xiàn)錯誤,使學生將主要精力放在實驗的操作和牛頓環(huán)本身物理意義的理解上,不需要耗費大量時間進行計算,能顯著提高學生學習興趣,充分調(diào)動學生實驗的積極性和主動性.
[1]王文福,稅正偉.大學物理學[M].北京:科學出版社,2011.
[2]張志東,魏懷鵬,展永.大學物理實驗[M].北京:科學出版社,2011.
[3]李平.牛頓環(huán)實驗數(shù)據(jù)處理方法的回顧與討論[J].物理與工程,2002,12(02):31-33.
[4]沈殊璇,薄亞明.適合于科學計算的腳本語言Python[J].微計算機應用,2002,23(05):289-291.
[5]丘恩.Python核心編程[M].北京:人民郵電出版社,2008.
[6]吳迪,張星海.Python在熱敏電阻測量實驗數(shù)據(jù)處理中的應用[J].大學物理實驗,2013,26(05):97-100.
[7]張若愚.Python科學計算[M].北京:清華大學出版社,2012.
[8]Summerfield,M.Rapid GUI Programming with Python and Qt[M].New Jersey:Prentice Hall,2007.
[9]徐紅,宋蓓,王海軍,等.牛頓環(huán)曲率半徑測量的多種數(shù)據(jù)處理方法[J].延安大學學報:自然科學版,2014,33(04):26-30.
[10]周新亮,劉應開.用數(shù)值計算的方法研究面光源的牛頓環(huán)干涉及干涉條紋的可視化[J].大學物理實驗,2013,26(01): 65-69.
[11]徐海英,唐曙光,闞彩俠,等.逐差法和Origin7.0軟件在牛頓環(huán)實驗數(shù)據(jù)處理中的比較[J].大學物理實驗,2015,28(01):99-100.
[12]Mc Kinney,W.Python for Data Analysis[M].California: OReilly Media,2012.
APPLICATION OF PYTHON IN DATA PROCESSING IN NEWTON’S RINGS EXPERIMENT
Zhao Kuntao
(Jitang College,North China University of Science and Technology,Tangshan,Hebei 063300)
Newton’s rings experiment occupies an important position in college physics course. But there are a large number of experimental data to be processed,which is time-consuming and very prone to error.Therefore,a user-friendly graphical user interface(GUI)data processing program based on Python is developed using the successive minus method and the mapping method to get the final results easily and save the time for data processing.Furthermore,the results can be visualized to help understand the experimental results.In this paper,using the real data from the reading microscope in an experiment course as an example,we demonstrate the use of the program,introduce the process of data processing,and compare the two kinds of data processing methods.
Python;Newton’s rings;data processing
2015-09-03
趙昆濤,男,助教,主要從事大學物理實驗教學和科研工作.kt.zhao@gmail.com
趙昆濤.Python語言在牛頓環(huán)實驗數(shù)據(jù)處理中的應用[J].物理與工程,2016,26(4):83-85,91.