推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

基于Python的牛顿环实验数据拟合及分析方法

更新时间:2019-12-23 11:28:41 大小:1M 上传用户:songhuahua查看TA发布的资源 标签:python 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

牛顿环实验是经典的大学物理实验,其实验数据量大,手工计算非常容易出错。基于Python的第三方库对牛顿环实验数据进行拟合分析,利用numpy进行数据的预处理和不确定度的计算,利用scikit-learn建立线性回归模型拟合数据并求解,最后利用matplotlib绘制图像实现数据的可视化。本方法能快速处理实验数据,绘制拟合曲线并输出相对不确定度,形象而又直观,对牛顿环实验数据的分析和处理有很好的辅助作用。


部分文件列表

文件名 大小
基于Python的牛顿环实验数据拟合及分析方法.pdf 1M

部分页面预览

(完整内容请下载后查看)
32  
3
Vol.32 No.3  
Jun.2019  
第
卷
第
期
大
学
物
理
实
验
PHYSICAL EXPERIMENT OF COLLEGE  
2019  
6
月
年
: 1007-2934( 2019) 03-0112-04  
文章编号  
Python  
基于  
的牛顿环实验数据拟合及分析方法  
*
,
马天成 李全彬  
(
,
江苏师范大学 物理与电子工程学院 江苏 徐州  
221116)  
:
, , 。  
牛顿环实验是经典的大学物理实验 其实验数据量大 手工计算非常容易出错 基于  
摘
要
Python  
,
的第三方库对牛顿环实验数据进行拟合分析 利用  
numpy ,  
进行数据的预处理和不确定度的计算  
matplotlib 。  
绘制图像实现数据的可视化  
scikit-learn  
,
建立线性回归模型拟合数据并求解 最后利用  
利用  
, , ,  
本方法能快速处理实验数据 绘制拟合曲线并输出相对不确定度 形象而又直观 对牛顿环实验数据的  
。
分析和处理有很好的辅助作用  
: python; ; ; ;  
牛顿环 拟合 一元线性回归 不确定度  
关
键
词
: O 4-39  
: A  
文献标志码  
DOI: 10.14139/j.cnki.cn22-1228.2019.03.028  
中图分类号  
。
, ,  
对象的高级程序设计语言 其设计风格优雅 功能  
牛顿环是牛顿发现的一种薄膜干涉现象  
当
一个曲率很大的凸透镜的凸面紧贴平滑的玻璃  
, 。 ,  
丰富 使得初学者也很容易入门 此外 该软件采  
,
时 凸透镜和玻璃之间形成两边厚而中间薄的空  
,
用开源设计 具有丰富的专用第三方库和众多开  
, ,  
气薄膜 经单色光垂直入射凸透镜平表面 便会产  
,
源科学计算软件包的接口 已经成为应用于科学  
、
生明暗相间 间距随中心点的距离而逐渐变窄的  
、 、 、GUI  
计算 数据库 网络工程 设计等多领域的高  
。 ,  
同心牛顿环 作为经典的光学实验 牛顿环实验  
。
级语言  
,
被广泛收录于各大学物理实验 但是其数据量大  
、
Python  
numpy,scikit-learn  
matplotlib  
和
采用  
三个第三方库  
,
的
数据计算复杂等问题也影响着此实验的数据处理  
。numpy  
、
是一个开源的 高性能的  
。 ,  
效率 因此 使用计算机处理实验数据进而达到  
。
数值计算库 提供快速高效的数组矩阵运算  
将
、
,
。
模块设计了  
,
化难为易 缩减时间的目的 显得尤为重要  
牛顿环的实验数据全部通过该库转化为数组格  
[1]  
Python  
PyqQt  
的
赵昆涛 利用  
, ,  
式 避免了循环语句的使用 简化了处理的难度  
。
图形用户界面让实验数据录入更加直观 但是在  
scikit-learn Python  
是
,
的机器学习库 是用于数据  
, A  
分析数据不确定度时 仅考虑了 类不确定度而  
[2]  
、 , ,  
挖掘 数据分析的工具 通过数据训练 可以轻松实  
B
;
类 不 确 定 度 的 影 响 徐 海 英 使 用  
忽略 了  
、 、  
现数据的拟合回归预测 聚类 模型选取等复杂算  
Origin 7.0  
,
得到了相关性很强的拟合结果 但是代  
[3]  
。
法
采用其中的一元线性回归模型来完成牛顿环  
, 。  
码可读性不高 不易让人准确理解 徐少刚  
利
。matplotlib  
实验数据的拟合  
Python  
经典的二维  
是
Matlab  
, Matlab  
对牛顿环数据进行处理 但  
用
在物  
,
理教育学生中并不十分普及 软件门槛相对较高  
。
, , ,  
画图库 可以简单地画出折线图 柱状图 散点图等  
[4]  
Excel  
,
实现了对数据的线性拟合  
郭晓春 使用  
但还需手动计算不确定度 没有明显减轻计算量  
Python scikit-learn  
,
各类二维图像 应用该库实现数据的可视化  
。
,
。
利用  
的第三方机器学习库  
2
实验原理及不确定度分析  
,
来处理牛顿环实验的数据 并通过  
matplotlib  
库实  
。
现数据及其分析结果的可视化  
2.1  
实验原理  
。
牛顿环是光等厚干涉的典型实验 当一束单  
,
色平行光垂直入射时 形成明暗相间的干涉条纹  
。
1
工具介绍  
,
实验中是对暗纹进行测量 根据波动光学的知识  
,
[5]  
Python  
Guido van Rossum  
创造的面向  
产生暗纹的条件和平凸透镜曲率半径的几何关系  
是由  
: 2019-12-10  
收稿日期  
:
基金项目 江苏高校优势学科建设工程资助项目  
( PAPD) ; 2016  
“
”
( C-a/2016/01/09) ;  
江苏省  
年江苏省教育科学 十三五 规划课题  
( 2015JSJG157)  
年江苏省高等教育教改研究课题  
( BK20171166) ; 2015  
高校自然科学基金项目  
通讯联系人  
*
Python  
113  
基于  
的牛顿环实验数据拟合及分析方法  
[6]  
:
1
可知  
=
U
e
( 7)  
B2  
2
3
D
k
=
R
( 1)  
1
4k  
λ
=
+
E
e
( E  
) ,E 、E  
max  
其中  
为测量范围  
min  
max  
min  
2
:
即
2
中最大环与最小环的条纹宽度  
( 3) U , :  
=
D
4 Rk  
λ
( 2)  
k
2
合成不确定度为  
即
y
= +  
= =  
a bx, x k,y D ,  
设
y
一元线性回归模型  
k
2
2
=
b 4 R, :  
λ
=
+
U
有
则
U
U
( 8)  
y
B1  
B2  
槡
b
( 4)  
U :  
b
设拟合出的斜率的不确定度为  
=
R
( 3)  
4
λ
U
y
=
U
( 9)  
b
=
,
589.3  
实验中采用钠光灯作为光源 波长 λ  
nm。 x 、 k  
轴 以第 环直径  
2
( X -x)  
i
槡
k
只要拟合出以环数  
为
( 5)  
U :  
R
曲率半径的不确定度为  
2
D
y
为
b,  
轴的数据的斜率 即可求出凸透  
的平方  
k
U
b
R。  
镜的曲率半径  
2.2  
=
U
( 10)  
R
4
λ
不确定度分析  
=
: R R±U ,  
R
:
最后结果为  
相对不确定度为  
A
牛顿环实验数据的不确定度包括 类不确  
U
R
B
定度和 类不确定度  
。
=
×
100%  
E
( 11)  
R
R
( 1)  
A
不确定度的 类分量由实验标准差表  
, [7]  
征 参考文献 给出了一元线性回归的方差估  
3
实现过程  
:
计公式  
1
2
n
2
=
e
( y -y )  
i i  
( 4)  
∑
=
i
1
3.1  
软件环境配置  
n-2  
Win10  
,
操作系统上实现 基于  
Py-  
本方法在  
2
=
U
e
槡
( 5)  
A
thon3.6  
,
版本 并利用  
Python  
自带的安装第三方库  
-
n 2  
。
为自由度  
式子中  
pip numpy,matplotlib  
安装  
scikit-learn  
工具  
个库  
3.2  
和
三
( 2)  
B
不确定度的 类分量大体上认为由两个  
。
,
因素导致 分别为单次测量而引入的仪器误差限  
实现框图  
首先录入牛顿环实验数据 再用  
scikit-learn  
U
Δ 所导致的不确定度  
仪
和测量过程中条纹的定  
B1  
,
numpy  
进行  
U 。  
B2  
[8]  
由参考文献  
位精度所引入的不确定度  
,
数据的预处理 然后调用  
建立线性回  
:
可知  
,
归模型并求解 最后用  
numpy  
分析不确定度并用  
Δ
仪
matplotlib  
。 1  
画出图像 实现框图如图 所示  
。
=
U
( 6)  
B1  
3
槡
1
图
实现框图  
=
d_right np.array( [])  
3.3  
#
从第一环开始  
实现代码  
( 1)  
:
,
输入数据 数据用逗号隔开  
导入第三方库  
import numpy as np  
import matplotlib.pyplot as plt  
from sklearn import linear_model  
( 2) numpy array( )  
=
y ( d_left-d_right)  
2
**  
= -  
x np.arange( 3,22) .reshape( 1,1)  
= -  
y np.array( y) .reshape( 1,1)  
,
( 3) scikit-learn  
输入数据 使用  
的
函数把  
函数把行向量  
sklearn  
中线性回归模型  
定义  
库的线性回归模型  
lrmodel linear_model.LinearRegression( )  
( 4) fit( )  
函数进行数据  
=
,
数据转化成行向量 再用  
reshape( )  
,
转化为列向量 从而满足  
利用线性回归模型的  
。
:
训练  
只接收列向量的要求  
=
d_left np.array( [])  
lrmodel.fit( x,y)  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单
  • 21下载积分 打赏60.00元   3天前

    用户:gsy幸运

  • 21下载积分 打赏70.00元   3天前

    用户:铁蛋锅

  • 21下载积分 打赏65.00元   3天前

    用户:xzxbybd

  • 21下载积分 打赏60.00元   3天前

    用户:jh0355

  • 21下载积分 打赏60.00元   3天前

    用户:w178191520

  • 21下载积分 打赏20.00元   3天前

    用户:jh03551

  • 21下载积分 打赏20.00元   3天前

    用户:sun2152

  • 21下载积分 打赏20.00元   3天前

    用户:kk1957135547

  • 21下载积分 打赏25.00元   3天前

    用户:w1966891335

  • 21下载积分 打赏20.00元   3天前

    用户:xuzhen1

  • 21下载积分 打赏15.00元   3天前

    用户:x15580286248

  • 21下载积分 打赏25.00元   3天前

    用户:pcb

  • 21下载积分 打赏20.00元   3天前

    用户:bhacker

  • 21下载积分 打赏15.00元   3天前

    用户:liqiang9090

  • 21下载积分 打赏25.00元   3天前

    用户:有理想666

  • 21下载积分 打赏15.00元   3天前

    用户:godbox

  • 21下载积分 打赏15.00元   3天前

    用户:aetek

  • 21下载积分 打赏5.00元   3天前

    用户:mulanhk

  • 21下载积分 打赏5.00元   3天前

    用户:JuneLin61

推荐下载