资源描述:
《数模培训(MATLAB基础)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数模培训一、曲线插值与拟合二、数值微分与积分三、微分方程数值解四、优化问题五、回归分析1.一维插值对表格给出的函数,求出没有给出的函数值。在实际工作中,经常会遇到插值问题。例1:表1是待加工零件下轮廓线的一组数据,现需要得到x坐标每改变0.1时所对应的y的坐标.x035791112131415y01.21.72.02.12.01.81.21.01.6下面是关于插值的两条命令(专门用来解决这类问题):y=interp1(x0,y0,x)分段线性插值y=spline(x0,y0,x)三次样条插值其中x0,y0是已知的
2、节点坐标,是同维向量。y对应于x处的插值。y与x是同维向量。解决上述问题,我们可分两步:一用原始数据绘图作为选用插值方法的参考.二确定插值方法进行插值计算对于上述问题,可键入以下的命令:x0=[0,3,5,7,9,11,12,13,14,15]';y0=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6]'plot(x0,y0)%完成第一步工作x=0:0.1:15;y=interp1(x0,y0,x');%用分段线性插值完成第二步工作plot(x,y)y=spline(x0,y0,x')
3、;plot(x,y)%用三次样条插值完成第二步工作练习:对y=1/(1+x2),-5≤x≤5,用n(=11)个节点(等分)作上述两种插值,用m(=21)个插值点(等分)作图,比较结果。解:键入并运行如下命令n=11;m=21;x=-5:10/(m-1):5;y=1./(1+x.^2);xo=-5:10/(n-1):5;yo=1./(1+xo.^2);y1=interp1(xo,yo,x);y2=spline(xo,yo,x);plot(x,y,'r',x,y1,'b',x,y2,'k')15练习:在某处测得海洋不
4、同深度处水温如下:深度44671495014221634水温7.044.283.402.542.13求深度为500、1000、1500米处的水温。解:输入程序:D=[446,714,950,1422,1634];T=[7.04,4.28,3.40,2.54,2.13];Di=[500,1000,1500];Ti=interp1(D,T,Di)MATLAB的命令interp1(X,Y,Xi,’method’)用于一元插值.其中Method可选’nearest’(最近邻插值),’linear’(线性插值),’spli
5、ne’(三次样条插值),’cubic’(三次多项式插值)1.二维插值MATLAB中二维插值的命令是:z=interp2(x0,y0,z0,x,y,'meth')例2:在一个长为5个单位,宽为3个单位的金属薄片上测得15个点的温度值,试求出此薄片的温度分布,并绘出等温线图。(数据如下表)yx12345182818082842796361658738484828586程序:temps=[82,81,80,82,84;79,63,61,65,87;84,84,82,85,86];mesh(temps)%根据原始数据绘出
6、温度分布图,可看到此图的粗造度。%下面开始进行二维函数的三阶插值。width=1:5;depth=1:3;di=1:0.2:3;wi=1:0.2:5;[WI,DI]=meshgrid(wi,di);%增加了节点数目ZI=interp2(width,depth,temps,WI,DI,'cubic');%对数据(width,depth,temps)进%行三阶插值拟合。15surfc(WI,DI,ZI)contour(WI,DI,ZI)3.曲线拟合假设一函数g(x)是以表格形式给出的,现要求一函数f(x),使f(x)
7、在某一准则下与表格函数(数据)最为接近。由于与插值的提法不同,所以在数学上理论根据不同,解决问题的方法也不同。此处,我们总假设f(x)是多项式。例3:弹簧在力F的作用下伸长x厘米。F和x在一定的范围内服从虎克定律。试根据下列数据确定弹性系数k,并给出不服从虎克定律时的近似公式。x1247912131517F1.53.96.611.715.618.819.620.621.1解题思路:可以用一阶多项式拟合求出k,以及近似公式。在MATLAB中,用以下命令拟合多项式。polyfit(x0,y0,n)一般,也需先观察原始
8、数据的图像,然后再确定拟和成什么曲线。对于上述问题,可键入以下的命令:x=[1,2,4,7,9,12,13,15,17]';F=[1.5,3.9,6.6,11.7,15.6,18.8,19.6,20.6,21.1]';plot(x,F,'.')从图像上我们发现:前5个数据应与直线拟合,后5个数据应与二次曲线拟合。于是键入a=polyfit(x(1:5),F(1:5),1)