处理物理实验数据的方法

尽管事实上,在俄罗斯的大多数教育机构中,实验室工作都是按旧格式进行的(当一个贫穷的学生从史前设备中收集数据,用计时器手动测量振荡周期,为找到不切实际的数据而苦苦寻找解释),一些大学还是购买了传感器,电路板和(最重要的)计算机,方便学生使用。 当然,好的设备可以提高实验的准确性。 但是,您谦卑的仆人却多次遇到同学的na:“嗯,是什么使我们有了这些感应器? “用笔画图形和测量时间要比在计算机上编程容易受折磨。” 我承认-我也经历了类似的适应期,但是很快就过去了。 所以,我分享我的经验。
图片

GNUplot


也许这是他们首先可以向我们展示的最简单的内容(可能是Word或Excel的例外)。 使用gluplot处理数据非常简单,并且不需要编程方面的专门知识,该语言接近于算法。 是开始进行图形数据处理的理想选择。

使用方法


假设我们有一个包含数据的文件-一栏包含某些参数的测量值。 我们将此文件命名为data.dat。 我们知道数据是正态分布,因此它是一批螺钉的质量分布。 我们的任务是确定螺钉质量的平均值。 我的解决方案是根据数据绘制直方图,然后用曲线近似 fx=ae fracxc2b。 下面是用于这种构造的代码示例:

bin_width=0.1 set boxwidth 0.9*bin_width absolute bin_num(x)=floor(x/bin_width) rounded(x)=bin_width*(bin_number(x)+0.5) plot 'data.dat' using (rounded($1)):(1) smooth frequency with boxes set table 'table.dat' replot #   ,       unset table f(x)=a*exp(-(xc)**2/b) a=6#    ""    b=0.01 c=2 fit f(x) 'table.dat' using 1:2 via a, b, c plot f(x), 'data.dat' using (rounded($1)):(1) smooth frequency with boxes 

近似地,将以相当好的精度确定a,b和c的值。 在我们的问题中,很容易猜出参数c是被测物体质量的平均值。 因此,使用简单的代码和一些注意事项,您可以快速分析收集的数据。

关于使用GNUplot的结论


如果您需要对大量数据进行快速图形处理(在实验室工作范围内较大),则GNUplot是理想的选择。 但是,有时会出现错误,您必须考虑其性质。 我建议初学者使用它进行一些基础工作,例如统计研究。

朗景


这个怪物是为真正的实验室所有者设计的! 用于模拟实验室工作的纯可视平台。 它本身从ComPorts收集数据,对其本身进行处理,并自身构建动态图。 机会-很多。 大多数工程师专门为Labview工作。 但是! 要弄清楚它需要花费很多精力。

图片

关于使用LabVIEW的结论


绝对不适合初学者! 如果您愿意,您可以坐几天,然后解决问题,然后可以大大减少实验室工作的处理时间,在该工作中您可以使用带有传感器的微控制器(在我的情况下是带有各种摆锤的实验室)。
图片

巨蟒


这种语言对于物理学家是一个很好的发现。 我最经常使用它来解决计算物理问题,例如微分方程的数值解。 与guplot一样,该语言也适用于图形数据处理,它的bug更少,语法更简单(尽管我不抱怨guplot)。 就个人而言,我更喜欢Python,但每个人都有自己的。

作为使用Python的示例,我给出了用Lagrange多项式进行点插值的方法, 因为手头没有再明显的数据分析示例了 。 通常使用插值来获得两个量的相关性的近似公式。

 import numpy as np import matplotlib.pyplot as plt def f(x, y, t): lag = 0 for j in range(len(y)): n = 1 dn = 1 for i in range(len(x)): #  if i == j:#      n = n * 1 dn = dn * 1 else: n = n * (t - x[i]) dn = dn * (x[j] - x[i]) lag = lag + y[j] * n / dn return lag xk = np.linspace(-1, 1, 11) yk = 1/(1+xk**2) xnew = np.linspace(-1, 1, 200) ynew = [f(xk, yk, i) for i in xnew] plt.title(u'  ') plt.xlabel(u'x') plt.ylabel(u'y') plt.plot(xk, yk, '.', xnew, ynew) plt.grid() plt.show() 

我关于使用Python的结论


对我而言,Python是优先事项。 与GNUplot相比,它具有更多的功能,不需要花太多精力去理解。 当然,Labview的使用更加专业,但是由于我懒于掌握它需要花费大量的时间,因此我更喜欢学习Python的所有魅力。

而不是结论


在这篇简短的评论中,我决定分享我在使用某些数据处理软件方面的经验。 希望他能帮助您进行研究活动。

祝你好运!

Source: https://habr.com/ru/post/zh-CN444090/


All Articles