金华
【摘 要】非线性曲线拟合是大学物理实验数据处理中的一个重要环节。本文以钨丝灯泡伏安特性的研究为例,具体说明了Matlab函数nlinfit在大学物理实验非线性曲线拟合中的应用。
【关键词】钨丝灯泡;伏安特性;非线性拟合;大学物理实验
中图分类号: J905 文献标识码: A 文章编号: 2095-2457(2017)20-0081-001
Application of Matlab Nonlinear Fitting in College Physics Experiment
JIN hua
(Department of Arts and Science, Shanghai Institute of Electrical Engineering,Shanghai 201306,China)
【Abstract】Nonlinear curve fitting is an important part of university physics experiment data processing. In this paper, the study of the volt-ampere characteristics of tungsten filament lamp is taken as an example to illustrate the application of the Matlab function nlinfit in the nonlinear curve fitting of university physics experiment.
【Key words】Tungsten wire bulb;Volt-ampere characteristics;Nonlinear fitting;University physics experiment
0 引言
在大學物理实验中,对实验数据进行非线性拟合是培养学生科学实验能力的重要体现。传统教学要求学生将物理量之间的非线性关系,通过变量代换转化成线性关系,在毫米方格纸上进行线性拟合,确定直线的斜率和截距,从而求出拟合参数[1]。近年来,借助软件的辅助计算,对实验曲线进行拟合,受到实验教学的重视[2,3]。科学计算软件Matlab在其统计工具箱中,基于高斯—牛顿法,使用nlinfit函数,可对数据进行最小二乘的非线性拟合[4]。该方法若应用于大学物理实验非线性曲线的拟合,可避免传统方法曲线改直的中间处理过程,直接得到拟合参数,显著提高数据处理的效率,且具有精度高的特点。本文在介绍nlinfit函数的使用方法的基础上,利用nlinfit函数对非线性电学元件钨丝灯泡的伏安特性曲线进行拟合,以此体现Matlab非线性拟合在大学物理实验数据处理中所具有的优势。
1 Matlab函数nlinfit简介
Matlab统计工具箱中非线性拟合函数nlinfit基本的使用语法如下:
[para,r,J]=nlinfit(x,y,fun,para0,option)
这里,x和y代表需要拟合的自变量和应变量;fun为自定义的含有拟合参数的函数;para0为拟合参数的初值;option为高斯—牛顿法迭代拟合的相关选项;返回值para、r和J分别表示计算得到的拟合参数、残差和雅可比矩阵。有了para、r和J之后,可以通过函数nlpredci和nlparci进一步计算y拟合值和相应拟合参数的置信区间及误差。也可以利用mse和mae等函数通过残差r来评估拟合的精度和误差。nlinfit及其相关函数的具体使用可参见文献[4]和Matlab软件的帮助文件。
2 大学物理实验教学中的一个实例
非线性电学元件的电阻会随着电流I和两端电压U的变化而变化。若以I为自变量,U为应变量作出伏安特性曲线,通过拟合U和I的非线性函数关系,电阻便可以利用求导R=dU/dI求得。以大学物理实验中钨丝灯泡伏安特性的研究为例[1],某次实验测得一钨丝灯泡两端的电压U为{1,2,3,4,5,6, 7,8,9,10}(V)时,通过的电流I分别为{19.18,26.72, 33.15,39.02,44.31,48.51,53.39,57.73,61.71,65.4}(mA)。在一定的电流范围内,其电压和电流的关系可表示成二参数的单项式形式[1],即U=KIn,其中K和n为与灯泡有关的拟合参数。下面给出nlinfit拟合该非线性函数的过程:
先建立需要拟合的函数的m文件fun.m:
function y=fun(para,x)
K=para(1);n=para(2);%K,n为拟合参数
y=K*x.^n;%拟合函数的表达式
函数nlinfit拟合过程和误差评估存入m文件test.m,代码如下:
U=[1 2 3 4 5 6 7 8 9 10];%电压值
I=[19.18 26.72 33.15 39.02 44.31 48.51 53.39
57.73 61.71 65.4]*1e-3;%电流值
para0=[1 1];%高斯—牛顿法迭代时拟合参数的初始值
option=statset('MaxIter',1000);%设置迭代的最大次数为1000
[para,r,J]=nlinfit(I,U,'fun',para0,option);% nlinfit函数拟合
II=0.015:0.001:0.07;%电流II从0.015A变化到0.07A
UU=fun(para,II);%计算拟合参数下电流II对应的电压值UUendprint
plot(I,U,'r+',II,UU,'b-');%实验值与拟合曲线比较
title('钨丝灯泡伏安特性曲线拟合');
legend('实验值','拟合',2);
xlabel('I(A)');
ylabel('U(V)');
E1=mse(r);%计算拟合数据的均方误差;
E2=mae(r);%计算拟合数据的平均绝(下转第20页)(上接第81页)对误差;
图1 钨丝灯泡伏安特性曲线拟合
执行test.m的代码后,拟合效果见图1中的拟合1曲线。查看Matlab的变量输出,拟合参数K和n的数值分别为1293.4、1.7822,拟合数据的均方误差E1和平均绝对误差E2的数值分别为0.0033、0.0402。
考虑到n的数值接近2,可采用二次多项式对上述伏安特性曲线进行拟合比较。拟合的函数的m文件fun.m可改写成:
function y=fun(para,x)
c0=para(1); c1=para(2); c2=para(3);
y=c0+c1*x+c2*x.^2 %c0、c1和c2为二次多项式的拟合参数
将代码test.m中的para0的值设为[1 1 1],plot命令中的线型设为b--,并执行代码,拟合效果见图1中的拟合2曲线。计算得到的拟合参数c0、c1和c2分别为-0.74191、60.144、1588.6,E1和E2的数值为0.0011、0.0219。显然二次多项式拟合的误差要小于二参数的单项式拟合,拟合效果更佳。
3 结语
利用Matlab拟合函数nlinfit对大学物理实验中的非线性曲线进行拟合可以直接给出拟合参数,比毫米方格纸上曲线改直进行拟合的传统方法更为简单精准,具有效率高的优势。本文的数值研究还发现,对于钨丝灯泡的伏安特性曲线用二次多项式拟合要比二参数的单项式拟合精度更高,可在实际的实验数据处理时加以考虑。
【参考文献】
[1]杨党强,吴纲,金亚平.大学物理实验[M].北京:中国电力出版社,2009.
[2]段越莹,董雁飞.利用Origin8.0软件简化大学物理实验数据的处理[J].大学物理实验,2013,26(3):91-95.
[3]田亚兰.MATLAB拟合函数在大学物理实验数据处理中的应用[J].甘肃科技,2015,31(7):64-66.
[4]蘇金明,阮沈勇.MATLAB6.1实用指南(下册)[M].北京:电子工业出版社,2002.endprint