借助Python提高迈克尔逊干涉仪测光波波长实验数据的处理精度与图像可视化

2023-10-28 00:15潘乘风牛相宏张红光
大学物理实验 2023年5期
关键词:差法干涉仪迈克尔

潘乘风,牛相宏,张红光,陈 伟

(南京邮电大学 理学院,江苏 南京 210023)

作为一门将理论与实践充分相结合的课程,“大学物理实验”课程要求学生在熟练掌握实验原理的基础上,正确操作相关实验仪器,并记录所得的实验数据,最终完成数据分析和实验报告的撰写。在完成实验后,能否精确地处理所得实验数据直接影响到实验结论的正确性。因此,对于较为繁杂的实验数据,借助计算机编程语言进行处理不失为一种好的选择。Python作为一种开源免费的程序设计语言,不仅具有面向对象编程、支持动态语义等特点,并且内置高级数据结构,使得其在科研领域得到了广泛应用。利用Python扩展库中的numpy、matlotlib、sklearn等方法可以实现数据拟合等功能,进而有效地处理相关复杂的实验数据。以一类经典的光学实验——迈克尔逊干涉仪测量单色光波长为例[1-2],在充分掌握相关理论的基础上,通过对不同方法处理实验数据得到的结果进行对比,发现利用Python语言编程处理后得到的结果比常规的逐差法处理更为精确。在此基础上,实现了干涉圆环明暗条纹的可视化仿真,进一步加深对该实验现象的理解。此外,通过对Python语言的了解,掌握可编程数据拟合,能够更好地加深学生对于大学物理实验中相关知识的理解,进一步培养学生利用科研软件处理实验数据的意识。

1 实验原理

迈克尔逊干涉仪是最初由美国科学家迈克尔逊研究“以太”问题所设计出的一种精密光学仪器。迈克尔逊干涉仪在近代物理中同样有着广泛的应用[3-7]。例如,测量光波的波长、光源的相干长度,以及研究温度、压力对光传播的影响等。其中,迈克尔逊干涉仪测光波波长作为“大学物理实验”课程中十分经典的一项实验,既可以直观地反映出光的干涉,同时又可以实现对单色光(He-Ne激光)的波长测量。

图1 迈克尔逊干涉仪光路图

2 结果与讨论

2.1 实验数据处理与分析

见表1。

表1 《迈克尔逊干涉仪测光波波长》实验数据

表2 逐差法处理《迈克尔逊干涉仪测光波波长》实验数据

通过上述逐差法计算求得最终结果和实际值仍存在一定差距,并且涉及到繁琐的计算,若能借助Python编程语言对已有的实验数据进行线性拟合处理,不失为一种严谨有效的措施,并且很快就能得到结果。相关的实验代码与拟合结果分别如下所示:

import numpy as np

importmatplotlib.pyplotas plt

from scipy import stats

y=[0.0112 2,0.030 85,0.043 41,0.062 98,0.076 76,0.094 35,0.111 54,0.129 96,0.145 79,0.160 42,0.174 49,0.188 12]

x=[50,100,150,200,250,300,350,400,450,500,550,600]

slope,intercept,r,p,std_err=stats.linregress(x,y)

def myfunc(x):

return slope *x+ intercept

Model=list(map(myfunc,x))

coef=np.polyfit(x,y,1)

print(coef)

print(r)

plt.scatter(x,y)

plt.plot(x,Model,linewidth=2.5)

plt.legend()

name_x=plt.xlabel("N",fontsize=13)

name_y=plt.ylabel("d/mm",fontsize=13)

plt.show()

N

相对于传统方法,Python中使用更为方便的语言和强大的库,可以更加快速、精准地完成线性拟合过程。其中,线性拟合(Least Squares Linear Regression)方法是基于最小二乘法(Ordinary Least Squares)实现的。最小二乘法是一种统计学中常用的估计方法,通过寻找数据集中的最佳拟合直线或曲线,使得观察到的数据点到预测数据点的距离之和最小化。相较于逐差法,最小二乘法通过拟合数据寻找一个最优解,使误差平方和最小化。这种方法考虑了所有的数据点而不仅仅是相邻数据点之间的差异,能够更好地反映数据整体的趋势,因此在大多数情况下都比逐差法更加精确。总的来说,利用Python可编程语言不仅可以提高实验数据的处理精度,同时还大大简化了复杂的计算,避免了因计算错误导致的错误实验结论。

2.2 干涉圆环的可视化图像

Python语言自带的扩展库除了可以实现线性拟合功能外,还能够根据实际要求实现各种可视化图像。接下来以拟合后处理得到的光波长为例,利用下面给出的代码实现干涉条纹的可视化:

importmatplotlib.pyplotas plt

import numpy as np

import math

Length=650 * 10 ** (-6)

X_Max=30

F=400

n=1.0

N=600

d=0.3

x,y=np.meshgrid(np.linspace(-X_Max,X_Max,N),np.linspace(-X_Max,X_Max,N))

r=np.sqrt(x*x+y*y)

Ph=np.cos(math.pi* (2 *n* d *np.cos(np.arcsin(n *np.sin(np.arctan(r/F)))))/Length) ** 2

plt.imshow(Ph)

plt.show()

利用上述Python语言实现的干涉圆环的可视化图像如图3所示。代码中的参数F,n,N,d分别表示凸透镜的焦距,介质折射率,图像的分辨率,以及干涉厚度,通过设置一个二维矩阵,将计算得到的干涉强度转换成相应的色块填充到矩阵的每一个元素中去来实现干涉圆环的可视化。通过对各项参数的改变可以模拟不同数目的干涉圆环图样,并从中发现一定的物理规律。在图3中,我们模拟了基于单一变量下不同介质折射率n、干涉厚度d以及凸透镜的焦距F所对应的干涉图样。通过对干涉图像的比较,直观地展现了上述物理参量对于干涉圆环数目的影响。总的来说,随着介质折射率n和干涉厚度d的增大,相同视野范围内的圆环数目均会增多;增大凸透镜的焦距F则会导致相同视野范围内的圆环数目减小,这和实验上观测到的现象一致。

图3 不同参数下模拟形成干涉圆环的可视化图像

3 结 论

以“大学物理实验”课程中非常重要的实验——迈克尔逊干涉仪测光波波长实验为例,通过将逐差法处理数据得到的结果和利用Python可编程语言处理得到的结果进行对比,表明利用Python语言自带的相关扩展库可以有效地完成线性拟合,并且达到很高的处理精度,这不仅省去了处理繁琐数据的时间,同时也保证了实验结果的可靠性。此外,利用Python的相关可视化功能还能够让学生更加切实地感受到计算机编程语言对于“大学物理实验”课程带来的帮助,相关物理实验的图像可视化呈现不仅增强了物理实验的趣味性,同时加深了对理论知识部分的理解,对于激发创新意识也起到一定的积极作用。

猜你喜欢
差法干涉仪迈克尔
点差法的七个作用
Open Basic Science Needed for Significant and Fundamental Discoveries
基于改进的迈克尔逊干涉仪对热变形特性的研究
发现高潜人才:共情与谦卑
蝴蝶
例谈“定比点差法”在解几问题中的应用
用于原子干涉仪的光学锁相环系统
非对称干涉仪技术及工程实现
基于动态差法的交通量监测技术应用
基于最优模糊的均匀圆阵干涉仪测向算法