張潤生 程敏熙 徐永康
(華南師范大學(xué)物理與電信工程學(xué)院 廣東 廣州 510006)
近年來,由于低硬件成本、按需服務(wù)、動態(tài)調(diào)配、安全方便的特點,云計算平臺成為輔助高校物理實驗教學(xué)的重要資源[1].運用云計算方法來輔助高校近代物理實驗數(shù)據(jù)處理,不僅可以提高數(shù)據(jù)處理的速度和質(zhì)量,還可以發(fā)展學(xué)生現(xiàn)代信息技術(shù)運用的能力[2].
本文基于云計算原理,利用Python及Flask設(shè)計了一款輔助G-M計數(shù)器及放射性衰變統(tǒng)計規(guī)律實驗數(shù)據(jù)處理的程序,實現(xiàn)了數(shù)據(jù)表格呈現(xiàn)、數(shù)值計算及繪圖等功能.該程序可使用任意移動終端,通過人機交互輸入實驗數(shù)據(jù),實時進行數(shù)據(jù)處理并輸出數(shù)據(jù)處理結(jié)果.
Python是一種面向?qū)ο蟆⒅С謩討B(tài)語義、內(nèi)置高級數(shù)據(jù)結(jié)構(gòu)、語法簡潔優(yōu)美、易于擴展的解釋型腳本語言[3],其包含的模塊和擴展庫提供了各種問題的解決方法,具有易學(xué)、易讀、易維護等特點[4].本文的編程語法采用Python語言.
Flask是一種使用Python語言編寫的Web開發(fā)框架,可以在短時間內(nèi)實現(xiàn)功能豐富的中小型網(wǎng)站或Web服務(wù),具有靈活、輕便、安全且容易上手等特點[5,6].本文采用Flask-WTF作為表單設(shè)計的第三方庫,調(diào)用Boken庫實現(xiàn)數(shù)據(jù)可視化.
G-M計數(shù)器是蓋革(Geiger,1882-1945)和米勒(Muller,1905-1979)發(fā)明的一種專門探究電離輻射(α粒子、β粒子、γ射線)強度的氣體電離探測器,具有結(jié)構(gòu)簡單、易于加工、輸出信號幅度大、使用方便、成本低等特點[7].如圖1所示,G-M計數(shù)器由G-M計數(shù)管、高壓電源及定標器組成.
圖1 G-M計數(shù)器實驗裝置圖
在強度不變的放射源照射下,G-M計數(shù)管的計數(shù)率n與計數(shù)時間t、計數(shù)N的關(guān)系為
(1)
計數(shù)率n隨外加電壓V變化的坪曲線如圖2所示,其中坪長L為
圖2 G-M計數(shù)管的坪曲線
L=V2-V1
(2)
坪坡度T為
(3)
原子核放射性衰變過程屬于隨機事件,而大量的隨機過程服從統(tǒng)計分布規(guī)律[7,8].
(4)
圖3 泊松分布與高斯分布曲線
(5)
泊松分布和高斯分布的標準差σ滿足
(6)
輸入實驗條件下顯示的電壓示數(shù)及對應(yīng)的計數(shù)值,本程序在線處理繪制出G-M計數(shù)管的坪曲線,以此計算G-M計數(shù)管的坪長度、坪坡度,確定閾電壓和適宜的工作電壓范圍.
(1)以下是程序算法的部分代碼:
V = [] #輸入電壓數(shù)據(jù)
counts = [] #輸入計數(shù)值
count_rates = [] #計算計數(shù)率并形成列表
for count in counts:
count_rate = count * 3 / 5
count_rates.append(′%.3f′ % count_rate)
z1 = np.polyfit(V ,count_rates ,4) #多項式擬合
p1 = np.poly1d(z1)
yvals = p1(V)
此部分為G-M計數(shù)管坪特性曲線的繪制提供數(shù)據(jù)支持,本實例的數(shù)據(jù)處理結(jié)果如表1所示.
表1 測量G-M計數(shù)管坪曲線的數(shù)據(jù)
(2)以下是實現(xiàn)數(shù)據(jù)可視化的部分代碼:
plot1=plt.plot(V,count_rates,′*′,label=′Raw data′)
plot2=plt.plot(V, yvals, ′r′,label=′Curve fitting′)
plt.xlabel(′V/伏′, fontproperties=′SimHei′)
plt.ylabel(′n/min′, fontproperties=′SimHei′)
plt.show()
此部分代碼調(diào)用Bokeh方法,將計算結(jié)果轉(zhuǎn)化成為圖像,實現(xiàn)平臺上數(shù)據(jù)的可視化.由圖4可知,本實例的閾電壓為320 V,適合工作頻率范圍的電壓為340~540 V,坪長度約為200 V,坪坡度為
圖4 系統(tǒng)生成的G-M計數(shù)管坪特性曲線
4.08%/(100 V)
(7)
不需要放射源,選定工作電壓440 V,計數(shù)時間1 s,測量本底計數(shù),每次計數(shù)值均小于10,重復(fù)測量300次以上,輸入實驗測得的計數(shù)值及對應(yīng)次數(shù),本程序在線處理繪制出實驗圖像和理論圖像,實驗結(jié)果基本服從泊松分布.
(1)以下是程序算法的部分代碼:
cnt=[] #計數(shù)值列表
istNs=[] #對應(yīng)次數(shù)列表
theoreticalPNs = []
averN=0
N=np.array(listNs).sum() #總測量次數(shù)
cnts=np.array(cnt)
truePNs = listNs / N #求P(N)的實際值
for i in range (0,len(cnt)): #求計數(shù)值的平均值
averN = averN + listNs[i] * cnts[i] / N
for i in cnts: # 求理論概率
theoreticalPN=((averN)**i)*(np.exp(-averN))/np.math.factorial(i)
theoreticalPNs.append(theoreticalPN)
用戶可通過導(dǎo)入Excel表格或手動輸入兩種方式錄入數(shù)據(jù),此部分對輸入的數(shù)據(jù)進行在線處理并獲得加權(quán)平均值、標準差、概率實驗值和理論值等數(shù)據(jù).本實例的數(shù)據(jù)處理結(jié)果如圖5所示,數(shù)據(jù)處理結(jié)果可以通過Excel形式導(dǎo)出保存.
圖5 驗證泊松分布實驗的數(shù)據(jù)處理結(jié)果
(2)以下是實現(xiàn)數(shù)據(jù)可視化的部分代碼:
P=figure(title="實測分布圖",x_axis_label=
"N", y_axis_label = "P(N)")
p1=figure(title="理論分布圖",x_axis_label=
"N", y_axis_label = "P(N)")
p2 = figure(title = "對比圖",x_axis_label=
"N",
y_axis_label = "P(N)")
r = gridplot(children = [[p, p1], [p2]])
show(r)
當(dāng)用戶點擊“繪圖”按鈕后,程序會呈現(xiàn)該實驗值的實測分布圖、理論分布圖以及以上兩幅圖的對比圖,以便用戶驗證實驗結(jié)果是否服從泊松分布.本實例處理得到圖像如圖6所示.
圖6 實測曲線與泊松分布理論曲線的對比
選擇工作電壓440 V,放置放射源,計數(shù)時間1 s,每次計數(shù)大于20,本實驗每次的計數(shù)值約300/s,重復(fù)測量500次以上,輸入實驗條件下測得的所有計數(shù)值,本程序在線處理繪制出實驗圖像和理論圖像,實驗結(jié)果基本服從高斯分布.
(1)以下是程序算法的部分代碼:
def large (list,big) : #分組函數(shù)
list1 = list a=[] b=[]
for i in range (0,len(list1)):
if list1[i] >= big :
for j in range (i,len(list1)):
b.append(list1[j])
break
else:
a.append(list[i])
return a,b
def fung(avg,Q=[]): #高斯分布計算
N=np.array(Q)
tpn=np.exp((-(N-avg)**2)/(2*avg))/
((avg*(2*np.pi))**0.5)
return tpn
如圖7所示,實驗數(shù)據(jù)提交后,程序在網(wǎng)頁上以表格的形式呈現(xiàn)數(shù)據(jù)處理結(jié)果.在本實例中,avg±W、avg±2W、avg±3W三個區(qū)間的概率分別為0.6980,0.9451,0.9980,與高斯分布的理論概率68.5%,95.4%,99.7%相近.
圖7 驗證高斯分布實驗的數(shù)據(jù)處理結(jié)果
(2)以下是實現(xiàn)數(shù)據(jù)可視化的部分代碼:
p=figure(title=′頻率分布直方圖′,x_axis_label
=′計數(shù)率N′, y_axis_label = ′頻率/組距′ )
p1=figure(title="理論正態(tài)分布圖", x_axis_label
="計數(shù)率N", y_axis_label="P(N)",)
p2 = figure(title="對比圖", x_axis_label="計數(shù)率N", y_axis_label="P(N)")
r = gridplot(children=[[p, p1], [p2]])
show(r)
當(dāng)用戶點擊“繪圖”按鈕后,如圖8所示,程序會生成該實驗的實驗值分布圖、理論分布圖以及對比圖,直觀顯示實驗結(jié)果是否服從高斯分布.
圖8 實測曲線與高斯分布理論曲線的對比
本文基于云計算平臺,用Python及Flask設(shè)計了一個輔助蓋革-米勒計數(shù)器及放射性衰變統(tǒng)計規(guī)律實驗數(shù)據(jù)處理的程序,不同類型終端都可以使用該平臺輔助實驗教學(xué),極大提高了師生教學(xué)實踐和學(xué)習(xí)的效率和質(zhì)量,實現(xiàn)了基于云平臺的大學(xué)物理實驗教學(xué)資源的功能拓展.