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