張潤生 程敏熙 徐永康
(華南師范大學物理與電信工程學院 廣東 廣州 510006)
近年來,由于低硬件成本、按需服務、動態調配、安全方便的特點,云計算平臺成為輔助高校物理實驗教學的重要資源[1].運用云計算方法來輔助高校近代物理實驗數據處理,不僅可以提高數據處理的速度和質量,還可以發展學生現代信息技術運用的能力[2].
本文基于云計算原理,利用Python及Flask設計了一款輔助G-M計數器及放射性衰變統計規律實驗數據處理的程序,實現了數據表格呈現、數值計算及繪圖等功能.該程序可使用任意移動終端,通過人機交互輸入實驗數據,實時進行數據處理并輸出數據處理結果.
Python是一種面向對象、支持動態語義、內置高級數據結構、語法簡潔優美、易于擴展的解釋型腳本語言[3],其包含的模塊和擴展庫提供了各種問題的解決方法,具有易學、易讀、易維護等特點[4].本文的編程語法采用Python語言.
Flask是一種使用Python語言編寫的Web開發框架,可以在短時間內實現功能豐富的中小型網站或Web服務,具有靈活、輕便、安全且容易上手等特點[5,6].本文采用Flask-WTF作為表單設計的第三方庫,調用Boken庫實現數據可視化.
G-M計數器是蓋革(Geiger,1882-1945)和米勒(Muller,1905-1979)發明的一種專門探究電離輻射(α粒子、β粒子、γ射線)強度的氣體電離探測器,具有結構簡單、易于加工、輸出信號幅度大、使用方便、成本低等特點[7].如圖1所示,G-M計數器由G-M計數管、高壓電源及定標器組成.

圖1 G-M計數器實驗裝置圖
在強度不變的放射源照射下,G-M計數管的計數率n與計數時間t、計數N的關系為
(1)
計數率n隨外加電壓V變化的坪曲線如圖2所示,其中坪長L為

圖2 G-M計數管的坪曲線
L=V2-V1
(2)
坪坡度T為
(3)
原子核放射性衰變過程屬于隨機事件,而大量的隨機過程服從統計分布規律[7,8].
(4)

圖3 泊松分布與高斯分布曲線
(5)
泊松分布和高斯分布的標準差σ滿足
(6)
輸入實驗條件下顯示的電壓示數及對應的計數值,本程序在線處理繪制出G-M計數管的坪曲線,以此計算G-M計數管的坪長度、坪坡度,確定閾電壓和適宜的工作電壓范圍.
(1)以下是程序算法的部分代碼:
V = [] #輸入電壓數據
counts = [] #輸入計數值
count_rates = [] #計算計數率并形成列表
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計數管坪特性曲線的繪制提供數據支持,本實例的數據處理結果如表1所示.

表1 測量G-M計數管坪曲線的數據
(2)以下是實現數據可視化的部分代碼:
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()
此部分代碼調用Bokeh方法,將計算結果轉化成為圖像,實現平臺上數據的可視化.由圖4可知,本實例的閾電壓為320 V,適合工作頻率范圍的電壓為340~540 V,坪長度約為200 V,坪坡度為

圖4 系統生成的G-M計數管坪特性曲線

4.08%/(100 V)
(7)
不需要放射源,選定工作電壓440 V,計數時間1 s,測量本底計數,每次計數值均小于10,重復測量300次以上,輸入實驗測得的計數值及對應次數,本程序在線處理繪制出實驗圖像和理論圖像,實驗結果基本服從泊松分布.
(1)以下是程序算法的部分代碼:
cnt=[] #計數值列表
istNs=[] #對應次數列表
theoreticalPNs = []
averN=0
N=np.array(listNs).sum() #總測量次數
cnts=np.array(cnt)
truePNs = listNs / N #求P(N)的實際值
for i in range (0,len(cnt)): #求計數值的平均值
averN = averN + listNs[i] * cnts[i] / N
for i in cnts: # 求理論概率
theoreticalPN=((averN)**i)*(np.exp(-averN))/np.math.factorial(i)
theoreticalPNs.append(theoreticalPN)
用戶可通過導入Excel表格或手動輸入兩種方式錄入數據,此部分對輸入的數據進行在線處理并獲得加權平均值、標準差、概率實驗值和理論值等數據.本實例的數據處理結果如圖5所示,數據處理結果可以通過Excel形式導出保存.

圖5 驗證泊松分布實驗的數據處理結果
(2)以下是實現數據可視化的部分代碼:
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)
當用戶點擊“繪圖”按鈕后,程序會呈現該實驗值的實測分布圖、理論分布圖以及以上兩幅圖的對比圖,以便用戶驗證實驗結果是否服從泊松分布.本實例處理得到圖像如圖6所示.



圖6 實測曲線與泊松分布理論曲線的對比
選擇工作電壓440 V,放置放射源,計數時間1 s,每次計數大于20,本實驗每次的計數值約300/s,重復測量500次以上,輸入實驗條件下測得的所有計數值,本程序在線處理繪制出實驗圖像和理論圖像,實驗結果基本服從高斯分布.
(1)以下是程序算法的部分代碼:
def large (list,big) : #分組函數
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所示,實驗數據提交后,程序在網頁上以表格的形式呈現數據處理結果.在本實例中,avg±W、avg±2W、avg±3W三個區間的概率分別為0.6980,0.9451,0.9980,與高斯分布的理論概率68.5%,95.4%,99.7%相近.

圖7 驗證高斯分布實驗的數據處理結果
(2)以下是實現數據可視化的部分代碼:
p=figure(title=′頻率分布直方圖′,x_axis_label
=′計數率N′, y_axis_label = ′頻率/組距′ )
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)
當用戶點擊“繪圖”按鈕后,如圖8所示,程序會生成該實驗的實驗值分布圖、理論分布圖以及對比圖,直觀顯示實驗結果是否服從高斯分布.



圖8 實測曲線與高斯分布理論曲線的對比
本文基于云計算平臺,用Python及Flask設計了一個輔助蓋革-米勒計數器及放射性衰變統計規律實驗數據處理的程序,不同類型終端都可以使用該平臺輔助實驗教學,極大提高了師生教學實踐和學習的效率和質量,實現了基于云平臺的大學物理實驗教學資源的功能拓展.