吳世寶,馬佳,馬瀚龍
Python語言在PN結(jié)特性和玻爾茲曼常數(shù)測定實驗數(shù)據(jù)處理中的應用
吳世寶,馬佳2,馬瀚龍3
(沈陽航空航天大學 1. 航空宇航學院,2. 理學院,3. 創(chuàng)新創(chuàng)業(yè)學院,遼寧 沈陽 110136)
PN結(jié)特性和玻爾茲曼常數(shù)測定實驗對理解PN結(jié)的物理特性具有十分重要的意義,但在實驗的過程中要記錄大量的數(shù)據(jù),且數(shù)據(jù)處理過程較為繁瑣.為此使用Python語言編程設計了一個Python GUI數(shù)據(jù)處理系統(tǒng),利用圖解法處理實驗數(shù)據(jù).結(jié)果表明,利用此系統(tǒng)處理實驗數(shù)據(jù)能夠有效節(jié)約時間,且其計算結(jié)果與理論值更為相近,有利于得出準確的結(jié)論.
PN結(jié)特性;玻爾茲曼常數(shù);Python GUI;圖解法
在進行本實驗時,需要測量至少20組數(shù)據(jù),并繪制相關(guān)的圖像,進而獲得玻爾茲曼常數(shù)的測量值.顯然,面對如此龐大的工作量,利用手工作圖和計算不僅費時費力,而且或多或少會出現(xiàn)一些錯誤,進而對理解PN結(jié)的物理特性產(chǎn)生不好的影響.為解決此問題,本文利用Python語言編程,結(jié)合相關(guān)的第三方庫,設計了一種用于處理本實驗相關(guān)數(shù)據(jù)的GUI界面.在使用時,用戶只需按提示導入實驗數(shù)據(jù)并點擊對應的按鈕,就可以獲得所需的圖像以及計算結(jié)果.
隨著計算機技術(shù)日新月異地發(fā)展,目前已有多種計算機編程語言可以對GUI界面進行設計,如MATLAB,VB等[2-4].之所以選擇Python語言作為編程的載體,主要是因為在代碼編寫以及程序調(diào)用等方面,Python具有更為突出的優(yōu)勢.首先,與VB一類的傳統(tǒng)語言相比,Python作為一種腳本語言,實現(xiàn)物理實驗中所需的各種科學計算(如繪制圖像、曲線擬合等)的代碼更為簡潔,且大多有已經(jīng)封裝好的函數(shù)可以調(diào)用[5];而若想利用VB一類的編程語言進行科學計算,相關(guān)的代碼則需要重新編寫.其次,與MATLAB等專業(yè)的科學計算語言相比,Python的使用范圍更廣,可以利用PyInstaller庫打包封裝好之后跨平臺調(diào)用[6],甚至可以在手機端運行,這一點是MATLAB無法解決的.
事實上,Python在多年的發(fā)展過程中,已經(jīng)衍生出多種可以設計GUI界面的第三方庫以及進行配套的科學計算的第三方庫[7-8].為了最大程度地減少編程所需的代碼量,在設計本實驗所需的GUI界面時,本文主要應用了tkinter模塊、numpy模塊以及matplotlib模塊,其中tkinter模塊用于設計用戶圖形界面,numpy模塊用于進行相關(guān)的科學計算,matplotlib模塊用于對相關(guān)的計算結(jié)果進行可視化處理.
圖1 用戶圖形界面
在使用前,用戶可以將實驗數(shù)據(jù)依次保存在Excel表格中,然后點擊區(qū)域②中的“導入數(shù)據(jù)”按鈕,即可將實驗數(shù)據(jù)導入此系統(tǒng)中(見圖2),此時某次實驗的數(shù)據(jù)會顯示在區(qū)域①中.在此系統(tǒng)中,用戶每進行一步操作,都可以通過左下方的“歷史命令”窗口來查看之前的操作中是否有誤,如在圖2中,“歷史命令”窗口顯示了之前用戶導入數(shù)據(jù)成功的命令.
圖2 導入實驗數(shù)據(jù)
圖3 散點圖
def ploy_fit(x,y,n):
z1 = np.polyfit(x,y,n) # x為自變量列表,y為因變量列表,n為擬合多項式的階數(shù)
p1 = np.poly1d(z1) #擬合表達式
yvals = p1(x)
plt.plot(x,yvals) #繪制擬合圖像
#調(diào)用函數(shù)
x = VF
y = ln_IF
ploy_fit(x,y,1) # n取1時為直線擬合
依次點擊區(qū)域②中的“擬合直線”和“數(shù)據(jù)處理”按鈕,就可以得到擬合結(jié)果(見圖4)和相關(guān)計算結(jié)果(見圖5).
圖4 擬合結(jié)果
圖5 計算結(jié)果
本文通過整合Python中的相關(guān)第三方庫,設計了一種用于快速、準確地處理PN結(jié)特性和玻爾茲曼常數(shù)測定實驗數(shù)據(jù)的Python GUI數(shù)據(jù)處理系統(tǒng),在驗證了PN結(jié)的物理特性的同時獲得了玻爾茲曼常數(shù)的測量值.Python GUI數(shù)據(jù)處理系統(tǒng)的應用,可以最大程度地避免由手工計算和作圖所引起的錯誤,在節(jié)約時間的同時也提高了計算的準確度.同時,利用Python GUI數(shù)據(jù)處理系統(tǒng)進行數(shù)據(jù)處理將極大地方便學生處理實驗數(shù)據(jù)的過程,這樣也能使得學生更加注重物理實驗的本質(zhì).因而,Python語言在其他大學物理實驗數(shù)據(jù)處理中具有推廣價值.
[1] 唐貴平,何興,范志強.大學物理實驗[M].北京:科學出版社,2016
[2] 李立,張皓晶,張雄.基于MATLAB編程的剛體轉(zhuǎn)動慣量實驗數(shù)據(jù)處理方法探討[J].物理通報,2019(6):98-101
[3] 李立,張皓晶,張雄.基于MATLAB編程的弗蘭克-赫茲實驗數(shù)據(jù)處理方法探討[J].物理通報,2020(1):75-79
[4] 馬寶麗.基于VB的平面連桿機構(gòu)的運動分析與運動仿真[J].杭州師范大學學報:自然科學版, 2011, 10(3): 275-280, 284
[5] 吳迪,張星海.Python在熱敏電阻測量實驗數(shù)據(jù)處理中的應用[J].大學物理實驗,2013,26(5):97-100
[6] 趙昆濤.Python語言在牛頓環(huán)實驗數(shù)據(jù)處理中的應用[J].物理與工程,2016,26(4):83-85,91
[7] 沈殊璇,薄亞明.適合于科學計算的腳本語言Python[J].微計算機應用,2002,23(5):289-291
[8] 程麗玲.淺談Python在科學計算中的應用[J].信息系統(tǒng)工程,2018(10):55
[9] 黃昆,韓汝琦.半導體物理基礎[M].北京:科學出版社,2010
[10] 李慶揚,王能超,易大義.數(shù)值分析[M].5版.北京:清華大學出版社,2008
Application of Python language in data processing in the physical property of P-N junction and the Boltzmann constant measurement experiment
WU Shibao1,MA Jia2,MA Hanlong3
(1. School of Aeronautics and Astronautics,2. School of Science,3. School of Innovation and Entrepreneurship,Shenyang Aerospace University,Shenyang 110136,China)
It was of great significance to understand the physical property of P-N junction in the physical property of P-N junction and the Boltzmann constant measurement experiment.However,a host of data needed to be recorded during the experiment and the data processing process was complicated.Thus,using Python language to program the codes,a Python GUI data processing system was designed to deal with experimental data by graphic method.The results demonstrated that utilizing this system to deal with experimental data could save the time effectively and the results were more similar to the theoretical values,which was beneficial to draw more accurate conclusions.
physical property of P-N junction;Boltzmann constant;Python GUI;graphic method
1007-9831(2020)07-0037-05
O4-39
A
10.3969/j.issn.1007-9831.2020.07.009
2020-01-19
吳世寶(1999-),男,遼寧撫順人,在讀本科生,從事飛行器制造工程研究.E-mail:wushibao990410@126.com
馬佳(1984-),女,遼寧沈陽人,副教授,博士,從事計算物理研究.E-mail:majia@sau.edu.cn