数学建模Matlab数据拟合详解PPT文档格式.ppt
《数学建模Matlab数据拟合详解PPT文档格式.ppt》由会员分享,可在线阅读,更多相关《数学建模Matlab数据拟合详解PPT文档格式.ppt(44页珍藏版)》请在冰豆网上搜索。
![数学建模Matlab数据拟合详解PPT文档格式.ppt](https://file1.bdocx.com/fileroot1/2022-10/22/555826b4-8053-466c-bee5-4b5d44d9ddea/555826b4-8053-466c-bee5-4b5d44d9ddea1.gif)
t=0:
1.2s=polyval(p3,t)s1=polyval(p6,t)holdonplot(t,s,r-,linewidth,2)plot(t,s,b-,linewidth,2)gridx=0:
1y=-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.3,11.2plot(x,y,k.,markersize,25)axis(01.3-216)p3=polyfit(x,y,3)p6=polyfit(x,y,6)例例2用切削机床进行金属品加工时用切削机床进行金属品加工时,为了适当地调整为了适当地调整机床机床,需要测定刀具的磨损速度需要测定刀具的磨损速度.在一定的时间测量在一定的时间测量刀具的厚度刀具的厚度,得数据如表所示得数据如表所示:
切削时间切削时间t/h030.0129.1228.4328.1428.0527.7627.5727.2827.0刀具厚度刀具厚度y/cm切削时间切削时间t/h926.81026.51126.31226.11325.71425.31524.81624.0刀具厚度刀具厚度y/cm解解:
描出散点图描出散点图,在命令窗口输入在命令窗口输入:
1:
16y=30.029.128.428.128.027.727.527.227.026.826.526.326.125.725.324.824.0plot(t,y,*)解解:
16y=30.029.128.428.128.027.727.527.227.026.826.526.326.125.725.324.824.0plot(t,y,*)a=-0.301229.3804holdonplot(t,y1),holdoffa=polyfit(t,y,1)y1=-0.3012*t+29.3804例例2用切削机床进行金属品加工时用切削机床进行金属品加工时,为了适当地调整为了适当地调整机床机床,需要测定刀具的磨损速度需要测定刀具的磨损速度.在一定的时间测量在一定的时间测量刀具的厚度刀具的厚度,得数据如表所示得数据如表所示:
切削时间切削时间t/h030.0129.1228.4328.1428.0527.7627.5727.2827.0刀具厚度刀具厚度y/cm切削时间切削时间t/h926.81026.51126.31226.11325.71425.31524.81624.0刀具厚度刀具厚度y/cm拟合曲线为拟合曲线为:
y=-0.3012t+29.3804例例3一个一个15.4cm30.48cm的混凝土柱在加压实验中的应的混凝土柱在加压实验中的应力力-应变关系测试点的数据如表所示应变关系测试点的数据如表所示1.552.472.933.03已知应力已知应力-应变关系可以用一条指数曲线来描述应变关系可以用一条指数曲线来描述,即假设即假设式中式中,表示应力表示应力,单位是单位是N/m2;
表示应表示应变变.2.89已知应力已知应力-应变关系可以用一条指数曲线来描述应变关系可以用一条指数曲线来描述,即假设即假设式中式中,表示应力表示应力,单位是单位是N/m2;
表示应表示应变变.解解选取选取指数函数指数函数作拟合时作拟合时,在拟合前需作变量代换在拟合前需作变量代换,化为化为k1,k2的线性函的线性函数数.于是于是,令令即即在命令窗口输入在命令窗口输入:
x=500*1.0e-61000*1.0e-61500*1.0e-62000*1.0e-62375*1.0e-6y=3.103*1.0e+32.465*1.0e+31.953*1.0e+31.517*1.0e+31.219*1.0e+3z=log(y)a=polyfit(x,z,1)k1=exp(8.3009)w=1.552.472.933.032.89plot(x,w,*)y1=exp(8.3009)*x.*exp(-494.5209*x)plot(x,w,*,x,y1,r-)已知应力已知应力-应变关系可以用一条指数曲线来描述应变关系可以用一条指数曲线来描述,即假设即假设式中式中,表示应力表示应力,单位是单位是N/m2;
表示应表示应变变.拟合曲线为拟合曲线为:
令令则则求得求得于是于是在实际应用中常见的拟合曲线有在实际应用中常见的拟合曲线有:
直线直线多项式多项式一般一般n=2,3,不宜过高不宜过高.双曲线双曲线(一支一支)指数曲线指数曲线2.非线性曲线拟合非线性曲线拟合:
lsqcurvefit.功能功能:
x=lsqcurvefit(fun,x0,xdata,ydata)x,resnorm=lsqcurvefit(fun,x0,xdata,ydata)根据给定的数据根据给定的数据xdata,ydata(对应点的横对应点的横,纵坐标纵坐标),按函数文件按函数文件fun给定的函数给定的函数,以以x0为初值作为初值作最小二乘拟合最小二乘拟合,返回函数返回函数fun中中的系数向量的系数向量x和残差的平方和和残差的平方和resnorm.例例4已知观测数据点如表所示已知观测数据点如表所示xy03.10.13.270.23.810.34.50.45.180.560.67.050.78.560.89.690.911.25113.17求三个参数求三个参数a,b,c的值的值,使得曲线使得曲线f(x)=aex+bx2+cx3与与已知数据点在最小二乘意义上充分接近已知数据点在最小二乘意义上充分接近.首先编写存储拟合函数的函数文件首先编写存储拟合函数的函数文件.functionf=nihehanshu(x,xdata)f=x
(1)*exp(xdata)+x
(2)*xdata.2+x(3)*xdata.3保存为文件保存为文件nihehanshu.m例例4已知观测数据点如表所示已知观测数据点如表所示xy03.10.13.270.23.810.34.50.45.180.560.67.050.78.560.89.690.911.25113.17求三个参数求三个参数a,b,c的值的值,使得曲线使得曲线f(x)=aex+bx2+cx3与与已知数据点在最小二乘意义上充分接近已知数据点在最小二乘意义上充分接近.编写下面的程序调用拟合函数编写下面的程序调用拟合函数.xdata=0:
1;
ydata=3.1,3.27,3.81,4.5,5.18,6,7.05,8.56,9.69,11.25,13.17;
x0=0,0,0;
x,resnorm=lsqcurvefit(nihehanshu,x0,xdata,ydata)编写下面的程序调用拟合函数编写下面的程序调用拟合函数.xdata=0:
x,resnorm=lsqcurvefit(nihehanshu,x0,xdata,ydata)程序运行后显示程序运行后显示x=3.00224.03040.9404resnorm=0.0912例例4已知观测数据点如表所示已知观测数据点如表所示xy03.10.13.270.23.810.34.50.45.180.560.67.050.78.560.89.690.911.25113.17求三个参数求三个参数a,b,c的值的值,使得曲线使得曲线f(x)=aex+bx2+cx3与与已知数据点在最小二乘意义上充分接近已知数据点在最小二乘意义上充分接近.说明说明:
最小二乘意义上的最佳拟合函数为最小二乘意义上的最佳拟合函数为f(x)=3ex+4.03x2+0.94x3.此时的残差是此时的残差是:
0.0912.f(x)=3ex+4.03x2+0.94x3.拟合函数为拟合函数为:
练习练习:
1.已知观测数据点如表所示已知观测数据点如表所示xy03.10.13.270.23.810.34.50.45.180.560.67.050.78.560.89.690.911.25113.17求用三次多项式进行拟合的曲线方程求用三次多项式进行拟合的曲线方程.2.已知观测数据点如表所示已知观测数据点如表所示xy1.617.72.7491.313.14.1189.43.6110.82.334.50.644.9409.13652.436.9求求a,b,c的值的值,使得曲线使得曲线f(x)=aex+bsinx+clnx与已知数与已知数据点在最小二乘意义上充分接近据点在最小二乘意义上充分接近.插值问题插值问题已知已知n+1+1个节点个节点其中其中互不相同互不相同,不妨不妨设设求任一插值点求任一插值点处的插值处的插值节点可视为由节点可视为由产生产生,g表达式复杂表达式复杂,甚至无表达式甚至无表达式1.1.分段线性插值分段线性插值xjxj-1xj+1x0xn实用插实用插值方法值方法机翼下轮廓机翼下轮廓线线2.三次样条插值三次样条插值细木条细木条:
样条样条输入输入:
节点节点x0,y0,插值点插值点x(均为均为数组数组,长度自定义长度自定义);
输出输出:
插值插值y(与与x同长度数组同长度数组).1.分段线性插值分段线性插值:
已有程序已有程序y=interp1(x0,y0,x)y=interp1(x0,y0,x,linear)2.三次样条插值三次样条插值:
已有程序已有程序y=interp1(x0,y0,x,spline)或或y=spline(x0,y0,x)用用Matlab作插值计算作插值计算例例5对对在在-1,1上上,用用n=20的等距分点的等距分点进行分段线性插值进行分段线性插值,绘制绘制f(x)及插值函数的图形及插值函数的图形.解解在命令窗口输入在命令窗口输入:
x=-1:
1y=1./(1+9*x.2)xi=-1:
1yi=interp1(x,y,xi)plot(x,y,r-,xi,yi,*)例例6对对在在-5,5上上,用用n=11个等距分点作分段线性个等距分点作分段线性插值和三次样条插值插值和三次样条插值,用用m=21个插值点作图个插值点作图,比较结果比较结果.解解在命令窗口输入在命令窗口输入:
n=11,m=21x=-5:
10/(m-1):
5y=1./(1+x.2)z=0*xx0=-5:
10/(n-1):
5y0=1./(1+x0.2)y1=interp1(x0,y0,x)y2=interp1(x0,y0,x,spline)xyy1y2plot(x,z,r,x,y,k:
x,y1,b,x,y2,g)gtext