云计算用于G-M计数器实验的数据处理
2022-07-04张润生程敏熙徐永康
张润生 程敏熙 徐永康
(华南师范大学物理与电信工程学院 广东 广州 510006)
近年来,由于低硬件成本、按需服务、动态调配、安全方便的特点,云计算平台成为辅助高校物理实验教学的重要资源[1].运用云计算方法来辅助高校近代物理实验数据处理,不仅可以提高数据处理的速度和质量,还可以发展学生现代信息技术运用的能力[2].
本文基于云计算原理,利用Python及Flask设计了一款辅助G-M计数器及放射性衰变统计规律实验数据处理的程序,实现了数据表格呈现、数值计算及绘图等功能.该程序可使用任意移动终端,通过人机交互输入实验数据,实时进行数据处理并输出数据处理结果.
1 实验原理及实现条件
1.1 Python语言及Flask框架
Python是一种面向对象、支持动态语义、内置高级数据结构、语法简洁优美、易于扩展的解释型脚本语言[3],其包含的模块和扩展库提供了各种问题的解决方法,具有易学、易读、易维护等特点[4].本文的编程语法采用Python语言.
Flask是一种使用Python语言编写的Web开发框架,可以在短时间内实现功能丰富的中小型网站或Web服务,具有灵活、轻便、安全且容易上手等特点[5,6].本文采用Flask-WTF作为表单设计的第三方库,调用Boken库实现数据可视化.
1.2 G-M计数器及G-M管的坪曲线
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)
1.3 核衰变的统计规律
原子核放射性衰变过程属于随机事件,而大量的随机过程服从统计分布规律[7,8].
(4)
图3 泊松分布与高斯分布曲线
(5)
泊松分布和高斯分布的标准差σ满足
(6)
2 程序编程与实验数据处理
2.1 测量G-M计数管的坪曲线
输入实验条件下显示的电压示数及对应的计数值,本程序在线处理绘制出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)
2.2 验证泊松分布规律
不需要放射源,选定工作电压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 实测曲线与泊松分布理论曲线的对比
2.3 验证高斯分布规律
选择工作电压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 实测曲线与高斯分布理论曲线的对比
3 结论
本文基于云计算平台,用Python及Flask设计了一个辅助盖革-米勒计数器及放射性衰变统计规律实验数据处理的程序,不同类型终端都可以使用该平台辅助实验教学,极大提高了师生教学实践和学习的效率和质量,实现了基于云平台的大学物理实验教学资源的功能拓展.