鐘志強
(鞍山師范學院 物理科學與技術學院,遼寧 鞍山 114007)
?
基于Python語言的大學物理實驗數(shù)據(jù)處理方法研究
鐘志強
(鞍山師范學院 物理科學與技術學院,遼寧 鞍山 114007)
摘要以大學物理實驗中的單擺周期測量、螺線管霍爾效應和單擺簡諧運動為例,探討了Python語言在隨機誤差分布規(guī)律、數(shù)據(jù)回歸分析和機械運動模擬中的應用方法.研究表明,Python處理實驗數(shù)據(jù)的方法簡便靈活,表征數(shù)據(jù)圖形直觀明了,適宜推廣使用.
關鍵詞Python;大學物理實驗;數(shù)據(jù)分析
目前,應用計算機軟件分析實驗數(shù)據(jù)已成為大學物理實驗教學中的一個重要環(huán)節(jié),最具代表性的軟件是MATLAB(Matrix Laboratory,矩陣實驗室).但與MATLAB相比,Python是一門更易學、更嚴謹?shù)某绦蛟O計語言,最重要的是其開源和免費.Python是一種面向?qū)ο?、支持動態(tài)語義、內(nèi)置高級數(shù)據(jù)結構、語法簡潔優(yōu)美、易于擴展的解釋型腳本語言(script language)[1].Python擴展庫中的NumPy 相當于Matlab,它提供了矩陣、線性代數(shù)、傅里葉變換等的解決方法,還包含F(xiàn)ortran 代碼集、C++代碼集.MATLAB主要專注于工程和科學計算,然而即便是在計算領域也會遇到文件操作、網(wǎng)絡通信、界面操作與管理等程序語言要求,這一點MATLAB也不如Python出色[2].此外,對于同樣是開源、免費的R軟件而言,其應用核心領域為數(shù)理統(tǒng)計分析,盡管在機器學習等領域也頗有建樹,但其運行效率和在虛擬實驗等應用范圍上的表現(xiàn)仍不及Python.
雖然Python語言應用廣泛,但在大學物理實驗中應用并不多見[3].國內(nèi)的實驗分析仍以MATLAB為主[4,5].為此,我們對物理實驗教材中的經(jīng)典實驗進行分析,并省略實驗的基本原理和實驗公式的推導過程,突出表現(xiàn)Python語言數(shù)據(jù)分析統(tǒng)計、繪圖和仿真應用的基本過程.
1單擺周期隨機誤差分布
1.1數(shù)據(jù)的采集
表1 單擺擺動周期表(局部)
參考大學物理實驗教材(一、力學及熱學部分)[6],本實驗是通過光電門,記錄單擺周期T實驗,目標是通過采集樣本、繪制樣本分布函數(shù)和密度函數(shù)、對樣本進行參數(shù)估計及假設檢驗等環(huán)節(jié)加深學生對正態(tài)分布的理解.記錄的次序(order)和對應時間(time(s)) 見表1.
1.2實驗數(shù)據(jù)處理過程
Python 對數(shù)理統(tǒng)計和繪圖功能的實現(xiàn)主要是通過Scipy包中的stats包,Numpy包和繪圖Pylab包以及 pandas包來實現(xiàn).其統(tǒng)計輸出結果見表2、圖1,具體實現(xiàn)過程代碼如下:
pddata=pd.read_csv('data.csv') #讀取表1中數(shù)據(jù)#
data=pddata["time"]
print data.describe() # 輸出樣本描述統(tǒng)計數(shù)據(jù)#
t = np.arange(1.5,2.5,0.1)
y =stats.norm(loc=2.0,scale=0.09) #根據(jù)樣本描述統(tǒng)計數(shù)據(jù)的平均值和方差做期望擬合數(shù)據(jù)#
y2 = y.rvs(size=100)
pl.hist(data,t)# 繪制實驗數(shù)據(jù)直方圖#
pl.plot(t,y.pdf(t),label="experience",linestyle='--',color='g') #繪制經(jīng)驗或理論概率密度曲線#
p,t2 = np.histogram(y2,bins=10,normed=True)
t2 = (t2[:-1] + t2[1:])/2
pl.plot(t2,p,label="reality") # 繪制實際樣本概率密度曲線#
pl.plot(t,y.cdf(t),label="experience",linestyle='--',color='g') #繪制經(jīng)驗或理論累計曲線#
pl.plot(t2,np.add.accumulate(p)*(t2[1]-t2[0]),label="reality") #繪制實際樣本累計曲線#
表2 單擺周期T實驗數(shù)據(jù)描述統(tǒng)計
圖1 單擺周期T實驗樣本統(tǒng)計直方圖(左)、實際與理論比較的概率密度圖(中)和累計曲線圖(右)
1.3實驗結果說明
從表2、圖1可知:樣本數(shù)據(jù)單擺周期T的平均值為2.00 s,方差為0.081,數(shù)據(jù)基本正態(tài)分布;樣本與理論概率密度基本吻合;累計曲線也基本吻合,其線型陡峭說明測量次數(shù)增加不會太多地影響測量結果.
2霍爾效應實驗數(shù)據(jù)回歸分析
2.1數(shù)據(jù)的采集
霍爾效應實驗是大學物理實驗中電磁學部分的經(jīng)典實驗之一.包括2個實驗過程[7]:測量霍爾電壓(磁場強度)與螺線管軸上的位置的磁場分布,如表3數(shù)據(jù);利用通電螺線管中心的均勻磁場測得霍爾器件靈敏度,如表4數(shù)據(jù).
表3 霍爾電壓-x軸坐標變化表
2.2實驗數(shù)據(jù)處理過程
此類實驗數(shù)據(jù)處理的主要過程是:根據(jù)實驗數(shù)據(jù)的分布圖利用逐步逼近法求出數(shù)據(jù)回歸方程[8],繪出擬合曲線并驗證回歸方程的擬合程度.Python回歸分析主要利用sklearn.linear_model包實現(xiàn),此外還需要 stats、Numpy包配合完成.根據(jù)已有經(jīng)驗,使用多項式(polynomial)回歸對實驗數(shù)據(jù)處理代碼如下(統(tǒng)計輸出結果見圖2、3,表5):
data=pd.read_csv('xu.csv') #讀取表3數(shù)據(jù),讀取表4數(shù)據(jù)時換成“iu.csv"#
def rmse(y_test,y):#均方根誤差,反應了測量數(shù)據(jù)偏離真實值的程度#
return sp.sqrt(sp.mean((y_test - y) ** 2))
def R2(y_test,y_true):#相關系數(shù)平方.介于[0~1],0表示不如均值.1表示完美預測#
return 1 - ((y_test - y_true)**2).sum() / ((y_true - y_true.mean())**2).sum()
plt.scatter(x,y,s=5,label ="reality") #繪出原始數(shù)據(jù)散點圖#
degree = [7,8,9] #回歸多項式個數(shù),由于霍爾靈敏度回歸是線性回歸,需要改為degree = [1]#
for d in degree:
clf = Pipeline([('poly',PolynomialFeatures(degree=d)),('linear',LinearRegression(fit_intercept=False))])#多項式回歸#
clf.fit(x[:,np.newaxis],y)
y_test = clf.predict(x[:,np.newaxis]) #計算擬合數(shù)據(jù)#
print('rmse=%.2f,R2=%.2f,clf.score=%.2f' %(rmse(y_test,y),R2(y_test,y),clf.score(x[:,np.newaxis],y))) # clf.score就是多項式參數(shù)#
plt.plot(x,y_test,linewidth=2) #繪出擬合圖形#
表4 霍爾電壓-電流的變化表局部(U=(|U1|+|U2|+|U3|+|U4|)/4)
圖2 螺線管內(nèi)的磁場分布散點圖與擬合曲線(表3數(shù)據(jù))
圖3 霍爾電壓隨工作電流的變化散點圖與擬合線(表4數(shù)據(jù))
RMSER2clf.scoreU-X2.340.995.63668840e+01-4.28485817e+001.55978676e+00-2.03107921e-01Order=71.23421662e-02-3.76621379e-045.57085642e-06-3.17889241e-08U-X1.780.995.53001552e+011.18791264e+00-7.78141496e-011.67548090e-01Order=8-1.65308381e-028.48446780e-04-2.32987195e-053.23110328e-07-1.77449642e-09U-X1.800.995.54555268e+013.53004303e+00-2.06171540e+004.27468964e-01Order=9-4.29069437e-022.35788380e-03-7.42232677e-051.32714298e-06-1.24700075e-084.75346186e-11U-I0.230.981.84668990e-033.39675958e+00
2.3實驗結果說明
從圖2、表5可知,R2接近1,所有曲線擬合度都較好;7,8,9次多項式時均方根誤差RMSE值分別為2.34,1,78,1.80;8次多項式RMSE值相對較小,說明其相對較好地擬合了螺線管內(nèi)的磁場分布曲線.從圖3、表5可知:霍爾器件的電壓與電流存在線性關系,線性擬合度較好.
3單擺機械運動模擬
圖4 odeint求解機械運動微分方程圖
g = 9.8
def pendulum_equations(w,t,l):#解單擺微分方程#
th,v = w
dth = v
dv = - g/l * sin(th)
return dth,dv
t = np.arange(0,10,0.01) #生成時間連續(xù)點#
track = odeint(pendulum_equations,(1.0,0),t,args=(1.0,))#根據(jù)時間點,求解變化角度#
pl.plot(t,track[:,0])
4小結
從上述隨機誤差分布規(guī)律:數(shù)據(jù)回歸分析和機械運動模擬的物理實驗應用中可以看出Python使用靈活方便且資源豐富,可以推廣到各類的物理和電子信息實驗教學,以極大提高大學實驗教學質(zhì)量.
參考文獻
[1] 百度百科.PYTHON[EB/OL].http://baike.baidu.com,2015-06-10.
[2] 張若愚.Python科學計算[M].北京:清華大學出版社,2012.
[3] 吳迪,張星海.Python在熱敏電阻測量實驗數(shù)據(jù)處理中的應用[J].大學物理實驗,2013(10):97-101.
[4] 李小燕,馮卓宏,邱俊才.Matlab在大學物理教學中的應用[J].實驗技術與管理,2010(11):124-126.
[5] 祝宇紅,朱瑋.MATLAB在近代物理實驗數(shù)據(jù)處理中的應用[J].實驗技術與管理,2006(4):38-40.
[6] 楊述武.普通物理實驗[M].北京:高等教育出版社,2004.
[7] 郭悅韶.Matlab曲線擬合在霍爾效應實驗中的應用[J].實驗室科學,2013(8):24-26.
[8] 李飛.基于Matlab的霍爾效應實驗數(shù)據(jù)處理[J].實驗室研究與探索,2011(1):58-61.
[9] HYRY Studio.用Python做科學計算[EB/OL].http://sebug.net/paper/books/scipydoc/double_pendulum.html#id2,2015-06-10.
(責任編輯:張冬冬)
The research of university physics experiment data processing method based on Python language
ZHONG Zhiqiang
(School of Physical Science and Technology,Anshan Normal University,Anshan Liaoning 114007,China)
AbstractTaking the pendulum period measurement,solenoid Hall effect and the pendulum harmonic motion in university physics experiment as an example,this paper shows random error distribution,data regression analysis and application of methods of mechanical motion simulation by using Python language.The results show that experimental data processing is simple and flexible by this method,data graphical is intuitive and convenient,and this method should be widely used.
Key wordsPython;university physics experiment;data analysis
收稿日期2016-01-10
基金項目2014年遼寧省普通高等學校本科教育教學改革研究項目(UPRP20140403):面向工程實踐,提高專業(yè)核心能力——電子類專業(yè);2016年遼寧省大學生創(chuàng)新創(chuàng)業(yè)訓練計劃項目(201510169012):智能便捷式起吊機.
作者簡介鐘志強(1975-),男,遼寧遼陽人,鞍山師范學院物理科學與技術學院講師,碩士.
中圖分類號G434
文獻標識碼A文章篇號1008-2441(2016)02-0077-05