赵昆涛
(华北理工大学冀唐学院,河北唐山 063300)
Python语言在牛顿环实验数据处理中的应用
赵昆涛
(华北理工大学冀唐学院,河北唐山 063300)
牛顿环实验是大学物理中非常重要的一个实验,但是在实验中需要读取的数据比较多,数据处理的过程很费时间而且容易出错.为此使用Python语言编写了一个图形界面的数据处理程序,分别使用逐差法和绘图法处理实验数据,可以方便地获得最终的计算结果,节省处理数据的时间.并可对结果可视化,帮助理解实验结果.本文采用了一次实验课中对读数显微镜读取的数据作为例子,演示了本程序的使用方法,介绍了数据处理的过程,并且对两种数据处理的方法进行比较.
Python;牛顿环;数据处理
牛顿环最早被牛顿所发现,是一种典型的光的等厚干涉现象.将一块曲率半径很大的平凸透镜凸面放在一块玻璃平板上,用单色光照射,就可以观察到一些明暗相间的同心圆环,并且距离圆心越远圆环越窄,这些圆环就是牛顿环.
牛顿环实验是大学物理必做的光学实验,通过测量牛顿环的直径,利用逐差法可以计算平凸透镜的曲率半径R[1-3]:
该实验需要测量几十个读数,还需要计算出相应环的直径,并代入式(1)计算,面对如此大的计算量,无论是手算还是使用计算器都很繁琐,难免会出错,进而影响物理实验的学习效果.为此设计了一个基于Python的图形界面数据处理程序,只要将读出的数据填入对应表格,点击按钮即可快速计算出所需结果.
在众多编程语言中,之所以使用Python编写,是因为Python作为一种跨平台的高级编程语言,既具备了传统编程语言功能强大的特点又不失脚本语言的简单易用,使它一直稳居编程语言排行榜前列.同时Python提供了丰富的标准库(模块)来实现各种功能[4-7].本文中主要是以Py Qt模块设计图形用户界面,用NumPy模块和SciPy模块进行相关计算,用matplotlib模块可视化处理结果.
Py Qt是一组与Python绑定的Qt应用程序框架,包含六百多个类,广泛用于图形用户界面的开发,可以运行在包括Windows、MacOS和Linux等多种操作系统平台下[8].
NumPy是Python中用于科学计算的基本模块,它可以提供强大的N维数组对象,继承C/C++和Fortran代码工具,具有线性代数,傅里叶变换,以及随机数等多种工具包,能保证足够快的计算速度.
SciPy包含线性代数、积分、插值、特殊函数、统计、常微分方程求解等工具包,可以进行高效的科学计算.
Matplotlib是Python最常用的二维绘图库,可以生成多种格式的高质量图表.
参照文献[2]中的表格,设计出图形界面,其中n环取第8至17环,m环取第18~27环,界面设计效果如图1.用户可以直接在空格处填写相应的读数,也可以点击导入数据按钮导入特定格式的数据文件.然后点击计算按钮即可计算牛顿环直径和透镜的曲率半径.
图1 图形界面
数据处理的流程为,首先计算牛顿环的直径D,即X右X左,再计算直径平方差,然后按式(1)计算平凸透镜凸面的曲率半径R,最后计算不确定度.
由不确定度的定义可得
其中A类不确定度为
因为B类不确定度Uj无法用统计的方法确定,需要其他信息来估计,所以本程序中只计算了A类不确定度Uj.最终的计算结果如图2.
图2 计算结果
计算曲率半径除了可以用逐差法,还可以用绘图法:以环数j为横轴,直径平方D2为纵轴建立坐标系,将实验数据描点,然后对数据点做线性拟合,计算直线的斜率k.由公式D2j=4Rλk,根据线性拟合出的斜率k即可求出凸透镜凸面的曲率半径R[9-11].
本文中使用最小二乘法进行数据拟合,Python的科学计算库SciPy中的leastsq模块可以实现最小二乘法的拟合[12].选取拟合函数为直线y=a+bx,根据已知的自变量x数列和因变量y数列的值,就可以求出a和b的值,代码如下:
使用Matlablib将数据点和拟合结果绘制出来如图3.由图3和图2可以看出,两种方法的结果完全吻合,在这次实验中最小二乘法计算结果的A类不确定度比逐差法要大,但是与逐差法相比绘图法的结果更直观更容易理解.
图3 绘图法结果
本文设计了一个图形界面的实验数据处理程序,能快速、高效、准确地获得结果,可以避免手算出现错误,使学生将主要精力放在实验的操作和牛顿环本身物理意义的理解上,不需要耗费大量时间进行计算,能显著提高学生学习兴趣,充分调动学生实验的积极性和主动性.
[1]王文福,税正伟.大学物理学[M].北京:科学出版社,2011.
[2]张志东,魏怀鹏,展永.大学物理实验[M].北京:科学出版社,2011.
[3]李平.牛顿环实验数据处理方法的回顾与讨论[J].物理与工程,2002,12(02):31-33.
[4]沈殊璇,薄亚明.适合于科学计算的脚本语言Python[J].微计算机应用,2002,23(05):289-291.
[5]丘恩.Python核心编程[M].北京:人民邮电出版社,2008.
[6]吴迪,张星海.Python在热敏电阻测量实验数据处理中的应用[J].大学物理实验,2013,26(05):97-100.
[7]张若愚.Python科学计算[M].北京:清华大学出版社,2012.
[8]Summerfield,M.Rapid GUI Programming with Python and Qt[M].New Jersey:Prentice Hall,2007.
[9]徐红,宋蓓,王海军,等.牛顿环曲率半径测量的多种数据处理方法[J].延安大学学报:自然科学版,2014,33(04):26-30.
[10]周新亮,刘应开.用数值计算的方法研究面光源的牛顿环干涉及干涉条纹的可视化[J].大学物理实验,2013,26(01): 65-69.
[11]徐海英,唐曙光,阚彩侠,等.逐差法和Origin7.0软件在牛顿环实验数据处理中的比较[J].大学物理实验,2015,28(01):99-100.
[12]Mc Kinney,W.Python for Data Analysis[M].California: OReilly Media,2012.
APPLICATION OF PYTHON IN DATA PROCESSING IN NEWTON’S RINGS EXPERIMENT
Zhao Kuntao
(Jitang College,North China University of Science and Technology,Tangshan,Hebei 063300)
Newton’s rings experiment occupies an important position in college physics course. But there are a large number of experimental data to be processed,which is time-consuming and very prone to error.Therefore,a user-friendly graphical user interface(GUI)data processing program based on Python is developed using the successive minus method and the mapping method to get the final results easily and save the time for data processing.Furthermore,the results can be visualized to help understand the experimental results.In this paper,using the real data from the reading microscope in an experiment course as an example,we demonstrate the use of the program,introduce the process of data processing,and compare the two kinds of data processing methods.
Python;Newton’s rings;data processing
2015-09-03
赵昆涛,男,助教,主要从事大学物理实验教学和科研工作.kt.zhao@gmail.com
赵昆涛.Python语言在牛顿环实验数据处理中的应用[J].物理与工程,2016,26(4):83-85,91.