数学建模案例分析插值与拟合方法建模1数据插值方法及应用
数学建模数学实验插值及案例
数学建模数学实验插值及案例在科学研究和工程实践中,数学建模扮演着至关重要的角色。
通过建立数学模型,我们可以对现实世界的现象进行模拟和预测。
其中,插值方法是一种重要的数学建模工具,用于估计在给定数据点之间的未知值。
本文将探讨插值方法的基础理论以及一个具体的数学实验案例。
插值方法是一种数学技术,通过在给定的数据点之间估计未知的值。
最常用的插值方法包括线性插值、多项式插值和样条插值等。
线性插值是最简单的插值方法,它将数据点之间的变化视为线性的,即变化率保持恒定。
多项式插值方法则通过构建一个多项式函数来逼近数据点的变化趋势。
样条插值则通过将数据点连接成平滑的曲线来进行插值。
本案例将利用多项式插值方法对房价进行预测。
我们收集了一组房屋价格数据,包括房屋的面积、房龄、位置等信息。
然后,我们使用多项式插值方法构建一个函数来描述房价与这些因素之间的关系。
通过调整多项式的阶数,我们可以控制模型的复杂性。
我们使用该模型来预测新的房价。
在本案例中,我们使用了200个样本数据进行训练,并使用另外100个数据点进行测试。
我们发现,通过增加多项式的阶数,模型的预测精度可以得到提高。
然而,当阶数增加到一定程度后,模型的性能改善不再明显。
我们还发现模型的预测结果对训练数据的分布非常敏感,对于分布偏离较大的新数据点,预测结果可能会出现较大误差。
通过本次数学实验,我们深入了解了插值方法在数学建模中的应用。
在实际问题中,插值方法可以帮助我们更好地理解数据的变化趋势和预测未知的值。
然而,插值方法也存在一定的局限性,如本实验中模型对训练数据分布的敏感性。
未来工作中,我们可以尝试采用其他更加复杂的模型,如神经网络、支持向量机等来提高预测精度。
我们还应充分考虑数据的分布特性,以提高模型的泛化能力。
插值方法是数学建模中的重要工具之一,它可以让我们更好地理解和预测数据的趋势。
通过本次数学实验,我们深入了解了多项式插值方法的工作原理和实现过程,并成功地将其应用于房价预测问题中。
数学建模插值与拟合
数学建模插值与拟合数据插值与拟合插值与插值函数:已知由(可能未知或⾮常复杂)产⽣的⼀批离散数据,且个互异插值节点,在插值区间内寻找⼀个相对简单的函数,使其满⾜下列插值条件:再利⽤已求得的计算任⼀⾮插值节点的近似值,这就是插值。
其中称为插值函数,称为被插函数。
最⼩⼆乘拟合:已知⼀批离散的数据,互不相同,寻求⼀个拟合函数,使与的误差平⽅和在最⼩⼆乘意义下最⼩。
在最⼩⼆乘意义下确定的称为最⼩⼆乘拟合函数。
1)Lagrange插值法a.待定系数法:假设插值多项式,利⽤待定系数法即可求得满⾜插值条件的插值函数。
关键在于确定待定系数。
b.利⽤基函数的构造⽅法⾸先构造个满⾜条件:的次插值基函数,再将其线性组合即可得如下的Lagrange插值多项式:其中c.Lagrange插值余项注:上述两种构造⽅法所得的Lagrange插值多项式是⼀样的,即满⾜插值条件的Lagrange插值多项式是唯⼀的。
2)分段线性插值作分段线性插值的⽬的在于克服Lagrange插值⽅法可能发⽣的不收敛性缺点。
所谓分段线性插值就是利⽤每两个相邻插值节点作线性插值,即可得如下分段线性插值函数:其中特点:插值函数序列具有⼀致收敛性,克服了⾼次Lagrange插值⽅法的缺点,故可通过增加插值节点的⽅法提⾼其插值精度。
但存在于节点处不光滑、插值精度低的缺点。
3)三次样条插值三次样条插值的⽬的在于克服Lagrange插值的不收敛性和提⾼分段线性插值函数在节点处的光滑性。
所谓三次样条插值⽅法就是在满⾜下列条件:a.b.在每个⼦区间上是三次多项式的三次样条函数中寻找满⾜如下插值条件:以及形如等边界条件的插值函数的⽅法。
特点:三次样条插值函数序列⼀致收敛于被插函数,因此可通过增加节点的⽅法提⾼插值的精度。
4)插值⽅法的Matlab实现⼀维数据插值MATLAB中⽤函数interp1来拟合⼀维数据,语法是YI = INTERP1(X,Y,XI,⽅法)其中(X,Y)是已给的数据点,XI 是插值点,其中⽅法主要有'linear' -线性插值,默认'pchip' -逐段三次Hermite插值'spline' -逐段三次样条函数插值其中最后⼀种插值的曲线⽐较平滑例:x=0:.12:1; x1=0:.02:1;y=(x.^2-3*x+5).*exp(-5*x).*sin(x);plot(x,y,'o'); hold on;y1=interp1(x,y,x1,'spline');plot(x1,y1,':')如果要根据样本点求函数的定积分,⽽函数⼜是⽐较光滑的,则可以⽤样条函数进⾏插值后再积分,在MATLAB 中可以编写如下程序:function y=quadspln(x0,y0,a,b)f=inline(‘interp1(x0,y0,x,’’spline’’)’,’x’,’x0’,’y0’);y=quadl(f,a,b,1e-8,[],x0,y0);现求six(x)在区间[0,pi]上的定积分,只取5点x0=[0,0.4,1,2,pi];y0=sin(x0);I=quadspln(x0,y0,0,pi)结果得到的值为 2.01905,精确值为2⼆元函数插值:MATLAB中⽤函数interp2来拟合⼆维⽹格(X,Y)上的数据Z,语法是YI = INTERP2(X,Y, Z,XI, YI,⽅法)其中(X,Y,Z)是已给的数据点,(XI,YI)是插值点坐标,其中⽅法主要有'linear' -线性插值,默认'pchip' -逐段三次Hermite插值'spline' -逐段三次样条函数插值其中最后⼀种插值的曲⾯⽐较平滑例:[x,y]=meshgrid(-3:.6:3,-2:.4:2);z=(x.^2-2*x).*exp(-x.^2-y.^2-x..*y);[x1,y1]=meshgrid(-3:.2:3,-2:.2:2);%⽣成⽹格,x1和y1均为同样size的矩阵z1=interp2(x,y,z,x1,y1,’spline’); %z1是矩阵,size 和x1,y1相同surf(x1,y1,z1);axis([-3,3,-2,2,-0.7,1.5]);-33如果数据不是在⽹格上取的,则可⽤函数griddata 来解决语法是YI = griddata(X,Y, Z ,XI, YI ,‘v4’)其中(X , Y ,Z )是已给的数据点,(XI ,YI )是插值点坐标,其中除了⽅法‘v4’外还有 'linear' -线性插值,默认 'cublc' -逐段三次Hermite 插值 'nearest' 其中‘v4’⽅法⽐较好例x=-3+6*rand(200,1); %⽣成随机点的x坐标向量xy=-2+4*rand(200,1); %⽣成随机点的y坐标向量yz=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); % 上述点的样本值向量z[x1,y1]=meshgrid(-3:.2:3,-2:.2:2); %⽣成⽹格,x1和y1均为同样size的矩阵z1=griddata(x,y,z,x1,y1,’v4’);surf(x1,y1,z1);axis([-3,3,-2,2,-0.7,1.5]);⽣成的图类似上图。
数学建模插值及拟合详解
插值和拟合【1 】试验目标:懂得数值剖析建模的办法,控制用Matlab进行曲线拟合的办法,懂得用插值法建模的思惟,应用Matlab一些敕令及编程实现插值建模.试验请求:懂得曲线拟合和插值办法的思惟,熟习Matlab相干的敕令,完成响应的演习,并将操纵进程.程序及成果记载下来.试验内容:一.插值1.插值的根本思惟·已知有n +1个节点(xj,yj),j = 0,1,…, n,个中xj互不雷同,节点(xj, yj)可算作由某个函数 y= f(x)产生;·结构一个相对简略的函数y=P(x);·使P经由过程全体节点,即 P (xk) = yk,k=0,1,…, n ;·用P (x)作为函数f ( x )的近似.2.用MA TLAB作一维插值盘算yi=interp1(x,y,xi,'method')注:yi—xi处的插值成果;x,y—插值节点;xi—被插值点;method—插值办法(‘nearest’:最临近插值;‘linear’:线性插值;‘spline’:三次样条插值;‘cubic’:立方插值;缺省时:线性插值).留意:所有的插值办法都请求x是单调的,并且xi不克不及够超出x的规模.演习1:机床加工问题机翼断面下的轮廓线上的数据如下表:x 0 3 5 7 9 11 12 13 14 15y 0用程控铣床加工机翼断面的下轮廓线时每一刀只能沿x偏向和y偏向走异常小的一步.表3-1给出了下轮廓线上的部分数据但工艺请求铣床沿x偏向每次只能移动单位.这时需求出当x 坐标每转变单位时的y 坐标. 试完成加工所需的数据,画出曲线. 步调1:用x0,y0两向量暗示插值节点;步调2:被插值点x=0:0.1:15; y=y=interp1(x0,y0,x,'spline'); 步调3:plot(x0,y0,'k+',x,y,'r')grid on答: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 ]; x=0:0.1:15;y=interp1(x0,y0,x,'spline'); plot(x0,y0,'k+',x,y,'r') grid on0510150.511.522.53.用MA TLAB 作网格节点数据的插值(二维)z=interp2(x0,y0,z0,x,y,’method’)注:z—被插点值的函数值;x0,y0,z0—插值节点;x,y—被插值点;method—插值办法(‘nearest’:最临近插值;‘linear’:双线性插值; ‘cubic’:双三次插值;缺省时:双线性插值).留意:请求x0,y0单调;x,y可取为矩阵,或x取行向量,y取为列向量,x,y的值分离不克不及超出x0,y0的规模.4.用MA TLAB作散点数据的插值盘算cz =griddata(x,y,z,cx,cy,‘method’)注:cz—被插点值的函数值;x,y,z—插值节点;cx,cy—被插值点;method—插值办法(‘nearest’:最临近插值;‘linear’:双线性插值; ‘cubic’:双三次插值;'v4‘:Matlab供给的插值办法;缺省时:双线性插值).演习2:航行区域的警示线某海域上频仍地有各类吨位的船只经由.为包管船只的航行安然,有关机构在低潮时对水深进行了测量,下表是他们供给的测量数据:水道水深的测量数据x 129.0140.0 103.5 88.0 185.5 195.0 105.5y 7.5 141.5 23.0 147.0 22.5 137.5 85.5z 4 8 6 8 6 8 8x157.5 107.5 77.0 81.0 162.0 162.0 117.5y -6.5 -81.0 3.0 56.5 -66.5 84.0 -33.5z 9 9 8 8 9 4 9个中(x, y)为测量点,z为(x, y)处的水深(英尺),水深z是区域坐标(x, y)的函数z= z (x, y),船的吨位可以用其吃水深度来反应,分为4英尺.英尺.5英尺和英尺 4 档.航运部分要在矩形海域(75,200)×(-50,150)上为不合吨位的航船设置警示标识表记标帜.请依据测量的数据描写该海域的地貌,并绘制不合吨位的警示线,供航运部分应用. x=[129 140 103.5 88 185.5 195 105.5 157.5 107.5 77 81 162 162 117.5];y=[7.5 141.5 23 147 22.5 137.5 85.5 -6.5 -81 3 56.5 -66.5 84 -33.5];z=[-4 -8 -6 -8 -6 -8 -8 -9 -9 -8 -8 -9 -4 -9];cx=75:0.5:200;cy=-70:0.5:150;cz=griddata(x,y,z,cx,cy','cubic');meshz(cx,cy,cz),rotate3dxlabel('X'),ylabel('Y'),zlabel('Z')%pausefigure(2),contour(cx,cy,cz,[-5 -5]);grid on,hold onplot(x,y,'+')xlabel('X'),ylabel('Y')200XYZXY80100120140160180200-60-40-20020406080100120140演习3:估量水塔的水流量—93,请绘出三次样条插值曲线,并盘算一天的总的用水量. 解:t0=[0.46,1.38,2.4,3.41,4.43,5.44,6.45,7.47,8.45,11.49,12.49,13.42,14.43,15.44,16.37,17.38,18.49,19.50,20.40,24.43,25.32];v0=[11.2,9.7,8.6,8.1,9.3,7.2,7.9,7.4,8.4,15.6,16.4,15.5,13.4,13.8,12.9,12.2,12.2,12.9,12.6,11.2,3.5]; t=0:0.1:26; y=interp1(t0,v0,t,'spline'); plot(t0,v0,'k+',t,y,'r') grid on0510********-10-55101520二.曲线拟合已知一组(二维)数据,即平面上 n 个点(xi,yi) i=1,…n, 追求一个函数(曲线)y=f(x), 使 f(x) 在某种准则下与所稀有据点最为接近,即曲线拟合得最好.最经常应用的办法是线性最小二乘拟合 1.多项式拟合⏹对给定的数据(xj,yj),j = 0,1,…, n;⏹拔取恰当阶数的多项式,如二次多项式g(x)=ax^2+bx+c;⏹使g(x)尽可能逼近(拟合)这些数据,但是不请求经由给定的数据(xj,yj); 2.多项式拟合指令1)多项式f(x)=a1xm+ …+amx+am+1拟合指令:a=polyfit(x,y,m)a:输出多项式拟合系数a[a1,a2,…,am];x,y:输出长度雷同的数组;m:多项式的次数. 2)多项式在x处的值y的盘算敕令:y=polyval(a,x)演习4:对下面一组数据作二次多项式拟合写出拟合敕令:plot(x,y,'k+',x,z,'r')作出数据点和拟合曲线:0.10.20.30.40.50.60.70.80.91写出拟合的二次多项式:0317.01293.208108.9)(2-+-=x x x f3.可化为多项式的非线性拟和曲线改直是工程中又一经常应用的断定曲线情势的办法,很多罕有的函数都可以经由过程恰当的变换转化为线性函数.(1)幂函数 by ax c =+ln ln ln y c a b x -=+(2)指数函数 xy ab c =+ln ln ln y c a x b -==(3)抛物函数 2,(0)y ax bx c x =++≠b ax xcy +=- 演习5:完成教材P93页的习题5的第一小题. x0=[0,300,600,1000,1500,2000];x=0:100:2000;y0=[0.9689,0.9322,0.8969,0.8519,0.7989,0.7491];y=interp1(x0,y0,x,'spline');plot(x0,y0,'k+',x,y,'r')grid on0200400600800100012001400160018002000。
插值算法的介绍及其在数学建模中的应用
插值算法的介绍及其在数学建模中的应⽤⽬录插值算法的介绍及其在数学建模中的应⽤%本⽂根据清风数学建模课程插值算法及相关资料总结⽽成,仅供学习使⽤%本⽂参考了(),对介绍的顺序及内容进⾏了改进%由于本⽂仅仅是简要介绍插值算法在建模中的应⽤,因此样条插值的可微性证明等各种复杂繁琐的部分在本⽂中不再引⼊%本⽂仅介绍⼀维数据的插值,多维数据的插值⽅法与⼀维插值类似⼀、插值的介绍及其作⽤数模⽐赛中,常常需要根据已知的样本点进⾏数据的处理和分析,⽽有时候现有数据较少或数据不全,不⾜以⽀撑分析的进⾏,这时就需要使⽤插值法“模拟产⽣”⼀些新的但⼜⽐较靠谱的值来满⾜需求,这就是插值的作⽤。
%在直观上,插值就是找到⼀个连续函数使其经过每个样本点%插值法还可⽤于短期的预测问题(插值与拟合经常会被弄混,为了区分,这⾥简要介绍⼀下拟合:即找到⼀个函数,使得该函数在最⼩⼆乘的意义下与已知样本点的总体差别最⼩,该函数不⼀定要经过样本点。
通常情况下,拟合要求已知样本点的数据较多,当数据较少时不适⽤)⼆、插值法原理三、插值法的分类%注:下⾯的1、2、3、4 并⾮是并列关系,⼏个部分之间也有交叉,⽬的在于逐渐引出数学建模中最常⽤的两种插值⽅法:三次样条插值与三次埃尔⽶特插值。
1、普通多项式插值多项式插值中,拉格朗⽇插值与⽜顿插值是经典的插值⽅法,但它们存在明显的龙格现象(下⾯会解释龙格现象),且不能全⾯反映插值函数的特性(仅仅保证了插值多项式在插值节点处与被插函数有相等的函数值)。
然⽽在许多实际问题中,不仅要求插值函数与被插值函数在所有节点处有相同的函数值,它也需要在⼀个或全部节点上插值多项式与被插函数有相同的低阶甚⾄⾼阶的导数值。
对于这些情况,拉格朗⽇插值和⽜顿插值都不能满⾜。
因此,数学建模中⼀般不使⽤这两种⽅法进⾏插值,这⾥也不再介绍这两种⽅法。
龙格现象(Runge phenomenon): 1901年,Carl Runge 在他的关于⾼次多项式插值风险的研究中,发现⾼次插值函数可能会在两端处波动极⼤,产⽣明显的震荡,这种现象因此被称为龙格现象。
数学建模案例分析插值与拟合方法建模1数据插值方法及应用
第十章 插值与拟合方法建模在生产实际中,常常要处理由实验或测量所得到的一批离散数据,插值与拟合方法就是要通过这些数据去确定某一类已经函数的参数,或寻求某个近似函数使之与已知数据有较高的拟合精度.插值与拟合的方法很多,这里主要介绍线性插值方法、多项式插值方法和样条插值方法,以及最小二乘拟合方法在实际问题中的应用。
相应的理论和算法是数值分析的内容,这里不作详细介绍,请参阅有关的书籍.§1 数据插值方法及应用在生产实践和科学研究中,常常有这样的问题:由实验或测量得到变量间的一批离散样点,要求由此建立变量之间的函数关系或得到样点之外的数据。
与此有关的一类问题是当原始数据),(,),,(),,(1100n n y x y x y x 精度较高,要求确定一个初等函数)(x P y =(一般用多项式或分段多项式函数)通过已知各数据点(节点),即n i x P y i i ,,1,0,)( ==,或要求得函数在另外一些点(插值点)处的数值,这便是插值问题。
1、分段线性插值这是最通俗的一种方法,直观上就是将各数据点用折线连接起来.如果b x x x a n =<<<= 10那么分段线性插值公式为n i x x x y x x x x y x x x x x P i i i i i i i i i i ,,2,1,,)(11111 =≤<--+--=----- 可以证明,当分点足够细时,分段线性插值是收敛的。
其缺点是不能形成一条光滑曲线。
例1、已知欧洲一个国家的地图,为了算出它的国土面积,对地图作了如下测量:以由西向东方向为x 轴,由南向北方向为y 轴,选择方便的原点,并将从最西边界点到最东边界点在x 轴上的区间适当的分为若干段,在每个分mm ).根据地图的比例,18 mm 相当于40 km 。
根据测量数据,利用MATLAB 软件对上下边界进行线性多项式插值,分别求出上边界函数)(2x f ,下边界函数)(1x f ,利用求平面图形面积的数值积分方法—将该面积近似分成若干个小长方形,分别求出这些长方形的面积后相加即为该面积的近似解。
数学建模之插值与拟合
matlab中拟合的函数
非线性曲线拟合 Matlab中对于多项式拟合,有现成的函数
c = lsqcurvefit ( ′fun′, x0, xdata, ydata)
matlab中拟合的函数
非线性曲线拟合例题
对下面的x、y进行数据拟合
x=[3.6,7.7,9.3,4.1,8.6,2.8,1.3,7.9,10,5.4]; y=[16.5,150.6,263.1,24.7,208.5,9.9,2.7,163.9,325,54.3];
最小二乘法
线性最小二乘法是解决曲线拟合最常用的方法,基本 思路是,令
f (x) a1r1(x) a2r2 (x) amrm (x) • 其中,rk(x)是事先选定的一组线性无关的函数,ak是待定系
数(k=1,2,...,m,m<n)。拟a合准则是使yi,i=1,2,3...,n,与f (xi )
• 求:利用最小二乘法求得上述拟合函数
求解方法
(1)做散点图,通过散点图判断函数为:y=ax+b
(2)根据最小二乘法原理可知,即使下式中M最小
10
M yi axi b2
i 1
(3)把M看作是自变量为a和b的函数,由多元函数取最值
的条件可知:
M M
a b
a, a,
b b
0 0
M
a
M
b
目录
1
插值法与拟合法
2 matlab中插值的函数
3 matlab中拟合的函数 4 插值与拟合的运用
插值法与拟合法的基本介绍
插值法:求过已知有限个数据点的近似函数。
拟合法:已知有限个数据点,求近似函数,不要求
过已知数据点,只要求在某种意义下它在这些点上 的总偏差最小。
插值与拟合算法分析
插值与拟合算法分析在数学与计算机科学领域,插值与拟合算法是两种常用的数据处理技术。
插值算法通过已知数据点之间的内插来估算未知数据点的值,而拟合算法则通过求取最佳拟合曲线或函数来逼近已知数据点。
本文将对插值与拟合算法进行详细分析,并比较它们在不同应用中的优缺点。
一、插值算法插值算法主要用于通过已知数据点之间的内插来估算未知数据点的值。
常用的插值算法包括拉格朗日插值、牛顿插值、样条插值等。
这些算法根据插值函数的不同特点,适用于不同类型的数据处理。
1. 拉格朗日插值拉格朗日插值是一种基于代数多项式的插值方法。
它通过构造一个全局多项式函数来拟合已知数据点,并推导出未知数据点的估算值。
拉格朗日插值算法具有简单易懂、计算效率高等优点,但在处理大量数据点时可能会出现龙格现象,导致插值结果有一定误差。
2. 牛顿插值牛顿插值是一种基于差商的插值方法。
它通过计算差商的递推关系,构造一个分段多项式函数来拟合已知数据点。
相比于拉格朗日插值,牛顿插值算法具有更高的数值稳定性和精度,并且可以方便地进行动态插值。
3. 样条插值样条插值是一种基于分段函数的插值方法。
它将整个数据区间划分为若干小段,并使用不同的插值函数对每一段进行插值。
样条插值算法通过要求插值函数的高阶导数连续,能够更好地逼近原始数据的曲线特征,因此在光滑性较强的数据处理中常被使用。
二、拟合算法拟合算法主要用于通过最佳拟合曲线或函数来逼近已知数据点。
常用的拟合算法包括最小二乘拟合、多项式拟合、非线性拟合等。
这些算法可以使拟合曲线与已知数据点尽可能地接近,从而进行更精确的数据分析和预测。
1. 最小二乘拟合最小二乘拟合是一种通过最小化残差平方和来求取最佳拟合曲线的方法。
它利用数据点与拟合曲线的差异来评估拟合效果,并通过求取最小残差平方和的参数值来确定拟合曲线的形状。
最小二乘拟合算法广泛应用于线性回归和曲线拟合等领域。
2. 多项式拟合多项式拟合是一种通过多项式函数来逼近已知数据点的方法。
数学建模案例与方法教学课件第5章插值法与拟合方法
5.1 城市供水量的预测问题
图5-3 三种插值函数曲线
5.1 城市供水量的预测问题
3. 用2000—2006年每年1月份城市的总用水量预测
由表5-2可得到7个 插值节点(x i,y i), 其中,xi=i,i=1,2,…,7, 其散点图如图5-4所示。 用三次样条插值法求得 的f(8)=4 378.139 0×104 t即为所求的 2007年1月份总用水量 的估计值,表5-3
5.1 城市供水量的预测问题
5.1.2 用插值法预测2007年1月份城市的总用水量
预测2007年1月份城市的用水量有三种 办法:一是用2006年的日用水量进行预测, 二是用2000—2006年每年1月份的日用水量 进行预测,三是用2000—2006年每年1月份
5.1 城市供水量的预测问题
1. 用2006年的日用水量进行预测
图5-4 2000—2006年每年1月份 城市的总用水量散点图
5.1 城市供水量的预测问题
5.1 城市供水量的预测问题
5.1.3 用数据拟合方法预测2007年1月份城市的总用水量 1. 用2006年每天的日用水量进行预测
由图5-1可知,这些点并不是简单地成线性或二次关系, 而是具有很强的聚集性。我们试图用几个多项式进行拟合。 用 MATLAB工具箱得到的拟合结果见表5-4。
5.2.1 曲线拟合
【实例】 气象部门观测到一天中某些时刻t的温度T变化数据见 表5-6。试描绘出温度变化曲线。
5.2 MATLAB与拟合、插值
曲线拟合就是计算出两组数据之间的一 种函数关系,由此可描绘其变化曲线及估计
曲线拟合有多种方式,下面是一元函数 采用最小二乘法对给定数据进行多项式曲线
5.2 MATLAB与拟合、插值
数学建模插值和拟合问题的总结
插值和数据拟合一、 插值方法问题:已知n+1个节点(x j ,y j )(j=0,1,…,n),a=x 0<x 1<…< x n =b ,求任一插值点x*处的插值y*方法:构造一个相对简单的函数y=f(x),使得f 通过所有节点,即f(x j )= y j ,再用y=f(x)计算x*的值。
1. 拉格朗日多项式插值设f(x)是n 次多项式,记作1110()n n n n n L x a x a x a x a --=++++要求对于节点(,)j j x y 有(),0,1,,n j j L x y j n ==将n+1个条件带入多项式,就可以解出多项式的n+1个系数。
实际上,我们有n 次多项式011011()()()()()()()()()i i n i i i i i i i n x x x x x x x x l x x x x x x x x x -+-+----=----满足1,()0,,,0,1,,i j i jl x i j i j n =⎧=⎨≠=⎩则0()()nn i i i L x y l x ==∑就是所要的n 次多项式,称为拉格朗日多项式。
由拉格朗日多项式计算的插值称为拉格朗日插值。
一般来讲,并不是多项式的阶数越高就越精确,一般采用三阶、二阶或一阶(线性)多项式,对相邻点进行分段插值。
2. 样条插值在分段插值时,会造成分段点处不光滑,如果要求在分段点处光滑,即不仅函数值相同,还要一阶导数和二阶导数相同,则构成三阶样条插值。
一般用于曲线绘制,数据估计等。
例 对21,[5,5](1)y x x =∈-+,用n=11个等分节点做插值运算,用m=21个等分插值点作图比较结果。
见inter.m 程序二、 曲线拟合 三、 给药方案 1. 问题一种新药用于临床必须设计给药方案,在快速静脉注射的给药方式下,就是要确定每次注射剂量多大,间隔时间多长.我们考虑最简单的一室模型,即整个机体看作一个房室,称为中心室,室内血液浓度是均匀的.注射后浓度上升,然后逐渐下降,要求有一个最小浓度1c 和一个最大浓度2c .设计给药浓度时,要使血药浓度保持在1c ~2c 之间.2. 假设(1)药物排向体外的速度与中心室的血药浓度成正比,比例系数是k(>0),称为排出速度.(2)中心室血液容积为常数V ,t=0的瞬间注入药物的剂量为d ,血药浓度立即为dV. 3. 建模设中心室血药浓度为c(t),满足微分方程(0)dckc dtd c V=-=用分离变量法解微分方程,有()ktd c te V-=(*) 4. 方案设计每隔一段时间τ,重复注入固定剂量D ,使血药浓度c(t)呈周期变化,并保持在1c ~2c 之间.如图:设初次剂量加大到D 0,易知0221,D Vc D Vc Vc ==-,2121()11ln[],()()ln c Vc t t t c t c k d k c τ=-=-= 那么,当12,c c 确定后,要确定给药方案0{,,}D D τ,就要知道参数V 和k .5. 由实验数据做曲线拟合确定参数值已知1210,25(/)c c g ml μ==,一次注入300mg 药物后,间隔一定ln lndc kt V=- 记12ln ,,lndy c a k a V==-=,则有 12y a t a =+求解过程见medicine_1.m得120.2347, 2.9943a a =-=,由d=300(mg)代入算出k=0.2347,V=15.02(L) 从而有0375.5(),225.3(), 3.9()D mg D mg τ===小时四、 口服给药方案 1. 问题口服给药相当于先有一个将药物从肠胃吸收入血液的过程,可简化为一个吸收室,一个中心室,记t 时刻,中心室和吸收室的血液浓度分别是1()()c t c t 和,容积分别是V ,V1,中心室的排除速度为k ,吸收速度为k1,且k,k1分别是中心室和吸收室血液浓度变化率与浓度的比例系数,t=0口服药物的剂量为d ,则有11111,(0)dc dk c c dt V =-= (1) 111,(0)0V dckc k c c dt V=-+= (2) 解方程(1)有111()k td c te V -=代入方程(2)有111()()k t kt k d c t e e V k k--=--其中三个参数1,,dk k b V=,可由下列数据拟合得到:(非线性拟合)。
数学建模讲座 插值和拟合
Method的4种情况:
‘nearest’ 最临近点插值
‘linear’ 线性插值(默认)
‘spline’ 三次样条插值
‘cubic’ 三次插值
说明:这里x和y是两个独立的向量,它们必须是单调的。 z是矩阵,是由x和y确定的点上的值。z和x,y之间的关系是 z(i,:)=f(x,y(i)) z(:,j)=f(x(j),y) 即:当x变化时,z的第i行与y的 第i个元素相关,当y变化时z的第j列与x的第j个元素相关。如 果没有对x,y赋值,则默认x=1:n, y=1:m。n和m分别是矩阵z 的行数和列数。
n=9; x0=-1:1/(n-1):1;y0=1./(1+25*x0.^2);y1=lagr(x0,y0,x); subplot(2,2,4), plot(x,z,'r-',x,y,'m-'),hold on, %原曲线 plot(x,y1,'b'),gtext('L16(x)','FontSize',12) %Lagrange曲线
加工时需要x每改变0.05时的y值
模型 将图1逆时针方向转90度, 轮廓线上下对称,只需对上半部 计算一个函数在插值点的值。
v
5
4.5
4
3.5
数学建模——拟合与插值
即要求 出二次多项式: f(x)a1x2a2xa3
11
中 的 A(a1,a2,a3) 使得:
[f (xi)yi]2 最小
i1
fun是一个事先建立的 定义函数F(x,xdata) 的 M-文件, 自变量为x和 xdata
选项见无 迭代初值 已知数据点 约束优化
18
25.03.2020
2. lsqnonlin
已知数据点: xdata=(xdata1,xdata2,…,xdatan) ydata=(ydata1,ydata2,…,ydatan)
+
+
y=f(x) +
x i 为点(xi,yi) 与曲线 y=f(x) 的距离
6
25.03.2020
线性最小二乘拟合 f(x)=a1r1(x)+ …+amrm(x)中 函数{r1(x), …rm(x)}的选取 1. 通过机理分析建立数学模型来确定 f(x);
2. 将数据 (xi,yi) i=1, …n 作图,通过直观判断确定 f(x):
2)计算结果:A = [-9.8108, 20.1293, -0.0317]
f(x) 9.81x0 2 8 2.1 02x9 0 3 .0317
16
25.03.2020
用MATLAB作非线性最小二乘拟合
两个求非线性最小二乘拟合的函数:
lsqcurvefit、lsqnonlin。
相同点和不同点:两个命令都要先建立M-文件fun.m,定义函 数f(x),但定义f(x)的方式不同。
(完整版)数学建模 插值和拟合
x
xn
x
4.2 MATLAB实现插值
Matlab 实现:实现插值不需要编制函 数程序,它自身提供了内部的功能函数 interp1(一维分段插值) interp2(二维) interp3(三维) intern(n维)
4.3.1一维插值
用MATLAB作插值计算
一维插值函数: yi=interp1(x,y,xi,'method')
h=1:0.1:12;
t=interp1(hours,temps,h,'spline');
plot(hours,temps,'+',h,t,'r:')
xlabel('Hour'),ylabel('Degrees Celsius’)
例1:从1点12点的11小时内,每隔1小时测量一次温度, 测得的温度的数值依次为:5,8,9,15,25,29, 31,30,22,25,27,24.试估计(1)每隔1/10小时 的温度值;(2)估计1点30分和13的温度值。
例1:从1点到12点的11小时内,每隔1小时测量一次温 度,测得的温度的数值依次为:5,8,9,15,25, 29,31,30,22,25,27,24.试估计(1)每隔 1/10小时的温度值;(2)估计1点30分和13的温度值。
hours=1:12;
temps=[5 8 9 15 25 29 31 30 22 25 27 24];
x x0 y y0
x1 … xn y1 … yn
其中x0,x1, …xn是n+1个互不相同的点,求一个 近似函数 (x) ,使得
( xi ) f ( xi ) i 0,1 …n
数学建模讲稿插值拟合方程求根
根据直线的点斜式方程变形得到 q(x)在第 i 段 ?xi?1, xi ?上的表达式
为
q(x) ?
x ? xi xi?1 ? xi
yi ?1
?
x ? xi?1 xi ? xi?1
yi , xi?1
?
x?
xi ,i
? 1,2,?
,n
可以证明,分段线性插值具有良好的收敛性,即 lim q(x) ? f (x), 其 n? ?
[xi,yi]=meshgrid(1:0.1:12,5:85);
zi=interp2(x, y, z, xi, yi,); mesh(xi, yi, zi) xlabel(‘月份' ) ylabel(‘纬度' ) zlabel(‘气旋' )
axis([0 12 0 90 0 50])
title(‘南半球气旋可视化图形' )
j?0
可知
m
mn
? ? ? ?
2 2
? (S ( xi ) ? yi )2? ( a j? j ( xi ) ? yi )2
i? 0
i?0 j?0
为拟合系数 a j ( j ? 0,1, L , n )的函数
因此可假设
mn
? ? ? (a0 , a1 ,L , an ) ? ( a j? j ( xi ) ? yi )2
y=
5 5 5 5 5 5 5 5 5 5 55 15 15 15 15 15 15 15 15 15 15 15 15 25 25 25 25 25 25 25 25 25 25 25 25 35 35 35 35 35 35 35 35 35 35 35 35 45 45 45 45 45 45 45 45 45 45 45 45 55 55 55 55 55 55 55 55 55 55 55 55 65 65 65 65 65 65 65 65 65 65 65 65 75 75 75 75 75 75 75 75 75 75 75 75 85 85 85 85 85 85 85 85 85 85 85 85
(数学建模课件)第八部分插值与拟合
例9 多项式函数拟合 x=[34 36 37 38 39 39 39 40 40 41 42 43 43 45 47 48]; y=[1.30 1.00 0.73 0.90 0.81 0.70 0.60 0.50 0.44 0.56 0.30 0.42 0.35 0.40 0.41 0.60]; close; plot(x,y) p=polyfit(x,y,2) xi=linspace(34,48,1000); %绘图的X轴数据 z=polyval(p,xi); %得到多项式在数据点处 的值 close; plot(x,y,’ko’,xi,z,’r-’)
2020/10/23
2、二维插值
Z1=interp2 (X,Y,Z,X1,Y1,’method’) 其中X和Y为两个向量,分别描述原始数据点的 自变量取值,Z是对应于X和Y的函数值;X1和 Y1是两个向量,描述欲插值的点。Method的含 义同一维插值。Z1是根据相应的插值方法得到 的插值结果。
2020/10/23
2020/10/23
使用MATLAB软件中的三次样条插值命 令得到用水率函数如下图所示。 x0=t;y0=r; [l,n]=size (x0); dl=x0(n)-x0(1); x=x0(1):1/3600:x0(n); %被插值点 ys=interp1 (x0,y0,x,’spline’); %样条插值输出 plot (x,ys); title (‘样条插值下的流速图’); xlabel(’时间(小时)’); ylabel(‘流速(立方米/小时)’)
例8 非线性函数化为线性函数拟合 t=[0 1 2 3 4 5 6 7 8 9 10]; u=[100 75 55 40 30 20 15 10 10 5 5]; close; plot(t,u) T=t; U=log(u); p=polyfit(T, U,1) b=p(1) a=exp(p(2))
插值与数据拟合建模
因此,在时段[t,t+Δt],从B侧渗透至A侧的该物质的质量为:
于是有:
两边除以Δt,并令Δt→0取极限再稍加整理即得:
(1)
2) 注意到整个容器的溶液中含有该物质的质量不变,与初始时刻该物质的含量相同,因此
思考
最小二乘拟合函数 f(x,a1, …am)的选取
1. 通过机理分析建立数学模型来确定 f;
2. 将数据 (xi,yi) i=1, …n 作图,通过直观判断确定 f:
2. 作一般的最小二乘曲线拟合,可利用已有程序curvefit,其调用格式为: a=curvefit(‘f’, a0, x, y)
这本四位数学用表给出sin =0.576,sin =0.5783。小华认为在sin 到sin 这样小的范围内,正弦可以近似为线性函数,于是很容易地得到Sin =0.576+(0.5783-0.5760)×0.6=0.5774
聪明的小华用的这个办法是一种插值方法——分段线性插值。实际上,插值可以理解为,要根据一个用表格表示的函数,计算表中没有的函数值。 表中有的,如(sin ,0.5760)(sin ,0.5783)称为节点;要计算的,如sin ,称为插值点,结果(0.5774)即为插值。小华作的线性函数为插值函数,插值函数所表示的直线当然要通过节点。
1. 作多项式f(x)=a1xm+ …+amx+am+1函数拟合,可利用已有程序polyfit,其调用格式为:
a=polyfit(x,y,m)
用MATLAB作最小二乘拟合
注:f为拟合函数y=f(a,x)的函数M—文件,f(a,x)为拟合函数。
数学建模 数学实验---插值及案例
四、插值方法及MATLAB求解
插值方法 选用不同类型的插值函数,逼近的效 果就不同,一般有: 拉格朗日插值(lagrange插值) 分段线性插值 Hermite 三次样条插值。
MATLAB实现插值 MATLAB自身提供了如下内部的功能函数:
一维插值函数:interp1()
例 在某海域测得一些点(x,y)处的水深z由下表 给出,船的吃水深度为5英尺,在矩形区域(75,200) ×(-50,150)里的哪些地方船要避免进入.
x y z x y z 129 140 103.5 88 185.5 195 7.5 141.5 23 147 22.5 137.5 4 8 6 8 6 8 157.5 -6.5 9 107.5 -81 9 77 3 8 105 85.5 8
被插值点 的函数值
插值节点 被插值点
插值方法
注:要求x0,y0单调;x, ‘nearest’ 最邻近插值; ‘linear’ 双线性插值; y可取为矩阵,或x取行向 双三次插值; 量,y取为列向量,x,y的 ‘cubic’ 缺省时 双线性插值. 值分别不能超出x0,y0的范 围.
例 用以上4种方法对 z xe 式插值效果进行比较。 t=-2:0.5:2
%作图
练习 已知飞机下轮廓线上数据如下,求x每改变0.1时的y 值.
X Y
0 0
3 1.2
5 1.7
7 2.0
9 2.1
11 2.0
12 1.8ห้องสมุดไป่ตู้
13 1.2
14 1.0
15 1.6
y
机翼下 轮廓线
x
用MATLAB作二维插值计算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十章 插值与拟合方法建模在生产实际中,常常要处理由实验或测量所得到的一批离散数据,插值与拟合方法就是要通过这些数据去确定某一类已经函数的参数,或寻求某个近似函数使之与已知数据有较高的拟合精度。
插值与拟合的方法很多,这里主要介绍线性插值方法、多项式插值方法和样条插值方法,以及最小二乘拟合方法在实际问题中的应用。
相应的理论和算法是数值分析的内容,这里不作详细介绍,请参阅有关的书籍。
§1 数据插值方法及应用在生产实践和科学研究中,常常有这样的问题:由实验或测量得到变量间的一批离散样点,要求由此建立变量之间的函数关系或得到样点之外的数据。
与此有关的一类问题是当原始数据),(,),,(),,(1100n n y x y x y x 精度较高,要求确定一个初等函数)(x P y =(一般用多项式或分段多项式函数)通过已知各数据点(节点),即n i x P y i i ,,1,0,)( ==,或要求得函数在另外一些点(插值点)处的数值,这便是插值问题。
1、分段线性插值这是最通俗的一种方法,直观上就是将各数据点用折线连接起来。
如果b x x x a n =<<<= 10那么分段线性插值公式为n i x x x y x x x x y x x x x x P i i i i i i i i i i ,,2,1,,)(11111 =≤<--+--=-----可以证明,当分点足够细时,分段线性插值是收敛的。
其缺点是不能形成一条光滑曲线。
例1、已知欧洲一个国家的地图,为了算出它的国土面积,对地图作了如下测量:以由西向东方向为x 轴,由南向北方向为y 轴,选择方便的原点,并将从最西边界点到最东边界点在x 轴上的区间适当的分为若干段,在每个分点的y 方向测出南边界点和北边界点的y 坐标y1和y2,这样就得到下表的数据(单位:mm )。
根据地图的比例,18 mm 相当于40 km 。
根据测量数据,利用MA TLAB 软件对上下边界进行线性多项式插值,分别求出上边界函数)(2x f ,下边界函数)(1x f ,利用求平面图形面积的数值积分方法—将该面积近似分成若干个小长方形,分别求出这些长方形的面积后相加即为该面积的近似解。
i i ni i n x f f S ∆-=∑=∞→)]()([lim 112ξξ式中,],[1i i i x x -∈ξ。
这里线性插值和面积计算源程序如下: clear allx=[7.0 10.5 13.0 17.5 34.0 40.5 44.5 48.0 56.0 61.0 68.5 76.5 80.5 91.0 96.0 101.0 104.0 106.5 111.5 118.0 123.5 136.5 142.0 146.0 150.0 157.0 158.0];y1=[44 45 47 50 50 38 30 30 34 36 34 41 45 46 43 37 33 28 32 65 55 54 52 50 66 66 68];y2=[44 59 70 72 93 100 110 110 110 117 118 116 118 118 121 124 121 121 121 122 116 83 81 82 86 85 68];newx=7:0.1:158;newy1=interp1(x,y1,newx,’linear ’); newy2=interp1(x,y2,newx,’linear ’);Area=sum(newy2- newy1)*0.1/18^2*1600 最后计算的面积约为42414平方公里。
2、多项式插值 设有m 次多项式m m m m a x a x a x a x P ++++=--1110)(通过所有1+n 个点),(,),,(),,(1100n n y x y x y x ,那么就有n i y a x a x a x a i m i m m im i ,,1,0,1110 ==++++--可以证明当n m =且n x x x <<< 10时,这样的多项式存在且唯一。
若要求得到函数表达式,可直接解上面方程组。
若只要求得函数在插值点处数值,可用下列Lagrange 插值公式)()(,00∏∑≠==--=nij j ji j ni i n x x x x y x P多项式插值光滑但不具有收敛性,一般不宜采用高次多项式(如7>m )插值。
例2、在万能拉拨机中有一个园柱形凸轮,其底园半径R=300mm ,凸轮的上端面不在同一平面上,而要根据动杆位移变化的需要进行设计制造。
按设计要求,将底园周18等分,旋转一周。
第i 个分点对应柱高)18,,2,1,0( =i y i ,数据见下表。
为了数控加工,需要计算出园周上任一点的柱高。
凸轮高度的数据(单位:mm )分点i 0和18 1 2 3 4 5 柱高 502.8 525.0 514.3 451.0 326.5 188.6 分点i 6 7 8 9 10 11 柱高 92.2 59.6 62.2 102.7 147.1 191.6 分点i 12 13 14 15 16 17 柱高236.0280.5324.9369.4413.8458.3我们将园周展开,借助MATLAB 软件画出对应的柱高曲线散点图(左下图)。
clear;close;x=linspace(0,2*pi*300,19);y=[502.8 ,525.0,514.3,451.0,326.5,188.6,92.2,59.6,62.2,102.7,147.1,191.6,236.0,280.5,324.9,369.4,413.8,458.3,502.8];plot(x,y,’o ’);axis([0,2000,0,550]);可见,可以用三次多项式插值,下面给出借助MA TLAB 软件画出的柱高插值曲线图(右上图)。
xi=0:2*pi*300;yi=interp1(x,y,xi,’cubic ’); plot(xi,yi);3、样条插值这是最常用的插值方法。
数学上所说的样条,实质上是指分段多项式的光滑连接。
设有b x x x a n =<<<= 10称分段函数)(x S 为k 次样条函数,若它满足(1) )(x S 在每个小区间上是次数不超过k 次的多项式; (2) )(x S 在],[b a 上具有直到1-k 阶的连续导数。
用样条函数作出的插值称为样条插值。
工程上广泛采用三次样条插值。
例3、某居民区的自来水是由一个园柱形的水塔提供。
水塔高12.2米,直径17.4米。
水塔由水泵根据塔中水位高低自动加水,一般每天水泵工作两次。
按照设计,当水塔内的水位降至约8.2米时,水泵自动启动加水;当水位升至约10.8米时,水泵停止工作。
现在需要了解该居民区用水规律,这可以通过用水率(单位时间的用水量)来反映。
通过间隔一段时间测量水塔中的水位来估算用水率。
下表是某一天的测量记录数据,测量了28个时刻(单位:小时)的水位(单位:米),但由于其中有3个时刻正遇到水泵在向水塔供水,而无水位记录(表中用符号//表示)。
先通过体积公式h d v 24=,利用上表中的水位高h ,得到不同时刻i t 水塔中水的体积i v 。
为提高精度,采用二阶差商来估算i t 时刻的水流速度,即i i v t f 2)(-∇=。
具体地,因为所有数据被水泵两次工作分割成三组数据,对每组数据的中间数据采用中心差商,前后两个数据不能够采用中心差商,改用向前或向后差商。
中心差商公式 )(1288121122i i i i i i i t t v v v v v -+-+-=∇+--++向前差商公式 )(2341122i i ii i i t t v v v v --+-=∇+++向后差商公式 )(2431212----+-=∇i i i i i i t t v v v vt=[0 0.921 1.843 2.949 3.871 4.978 5.9 7.006 7.982 8.967 10.954 12.032 12.954 13.875 14.982 15.903 16.826 17.931 19.037 19.959 20.839 22.958 23.88 24.986 25.908];r=[54.516 42.320 38.085 41.679 33.297 37.814 30.748 38.455 32.122 41.718 73.686 76.434 71.686 60.19 68.333 59.217 52.011 56.626 63.023 54.859 55.439 57.602 57.766 51.891 36.464]; plot(t,r,’b+’); % (t,r)表示时间和流速title(‘流速散点图’);xlabel (’时间(小时)’); ylabel(‘流速(立方米/小时)’)使用MATLAB 软件中的三次样条插值命令得到用水率函数)(t f 如下图所示。
x0=t;y0=r;[l,n]=size (x0); dl=x0(n)-x0(1);x=x0(1):1/3600:x0(n); %被插值点ys=interp1 (x0,y0,x,’spline ’); %样条插值输出 plot (x,ys);title(‘样条插值下的流速图’);xlabel (’时间(小时)’); ylabel(‘流速(立方米/小时)’)。