资源描述:
《数学建模中matlab数据拟合应用.》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、用Matlab进行数据拟合1.多项式曲线拟合:polyfit.y0=polyval(p,x0)p=polyfit(x,y,m)其中,x,y为已知数据点向量,分别表示横,纵坐标,m为拟合多项式的次数,结果返回m次拟合多项式系数,从高次到低次存放在向量p中.可求得多项式在x0处的值y0.例1已知观测数据点如表所示xy0-0.4470.11.9780.23.280.36.160.47.080.57.340.67.660.79.560.89.480.99.3111.2分别用3次和6次多项式曲线拟合这些数据点.x=0:0.1:1
2、y=[-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.3,11.2]plot(x,y,'k.','markersize',25)axis([01.3-216])p3=polyfit(x,y,3)p6=polyfit(x,y,6)编写Matlab程序如下:t=0:0.1:1.2s=polyval(p3,t)s1=polyval(p6,t)holdonplot(t,s,'r-','linewidth',2)plot(t,s,'b--','linewidth',2)grid
3、x=0:0.1:1y=[-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.3,11.2]plot(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刀
4、具厚度y/cm切削时间t/h926.81026.51126.31226.11325.71425.31524.81624.0刀具厚度y/cm解:描出散点图,在命令窗口输入:t=[0:1:16]y=[30.029.128.428.128.027.727.527.227.026.826.526.326.125.725.324.824.0]plot(t,y,'*')解:描出散点图,在命令窗口输入:t=[0:1:16]y=[30.029.128.428.128.027.727.527.227.026.826.526.326.12
5、5.725.324.824.0]plot(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.71
6、425.31524.81624.0刀具厚度y/cm拟合曲线为:y=-0.3012t+29.3804例3一个15.4cm×30.48cm的混凝土柱在加压实验中的应力-应变关系测试点的数据如表所示1.552.472.933.03已知应力-应变关系可以用一条指数曲线来描述,即假设式中,表示应力,单位是N/m2;表示应变.2.89已知应力-应变关系可以用一条指数曲线来描述,即假设式中,表示应力,单位是N/m2;表示应变.解选取指数函数作拟合时,在拟合前需作变量代换,化为k1,k2的线性函数.于是,令即在命令窗口输入:x=[50
7、0*1.0e-61000*1.0e-61500*1.0e-62000*1.0e-62375*1.0e-6]y=[3.103*1.0e+32.465*1.0e+31.953*1.0e+31.517*1.0e+31.219*1.0e+3]z=log(y)a=polyfit(x,z,1)k1=exp(8.3009)w=[1.552.472.933.032.89]plot(x,w,'*')y1=exp(8.3009)*x.*exp(-494.5209*x)plot(x,w,'*',x,y1,'r-')已知应力-应变关系可以用一
8、条指数曲线来描述,即假设式中,表示应力,单位是N/m2;表示应变.拟合曲线为:令则求得于是在实际应用中常见的拟合曲线有:直线多项式一般n=2,3,不宜过高.双曲线(一支)指数曲线2.非线性曲线拟合:lsqcurvefit.功能:x=lsqcurvefit(fun,x0,xdata,ydata)[x,resnorm]=lsqcurv