数学模型之拟合插值

合集下载

数学建模插值与拟合

数学建模插值与拟合

数学建模插值与拟合数据插值与拟合插值与插值函数:已知由(可能未知或⾮常复杂)产⽣的⼀批离散数据,且个互异插值节点,在插值区间内寻找⼀个相对简单的函数,使其满⾜下列插值条件:再利⽤已求得的计算任⼀⾮插值节点的近似值,这就是插值。

其中称为插值函数,称为被插函数。

最⼩⼆乘拟合:已知⼀批离散的数据,互不相同,寻求⼀个拟合函数,使与的误差平⽅和在最⼩⼆乘意义下最⼩。

在最⼩⼆乘意义下确定的称为最⼩⼆乘拟合函数。

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。

数学建模插值及拟合详解之欧阳地创编

数学建模插值及拟合详解之欧阳地创编

插值和拟合实验目的:了解数值分析建模的方法,掌握用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.用MATLAB作一维插值计算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 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 用程控铣床加工机翼断面的下轮廓线时每一刀只能沿x方向和y方向走非常小的一步。

表3-1给出了下轮廓线上的部分数据但工艺要求铣床沿x方向每次只能移动0.1单位.这时需求出当x坐标每改变0.1单位时的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.01.6 ];x=0:0.1:15;y=interp1(x0,y0,x,'spline');plot(x0,y0,'k+',x,y,'r')grid on3.用MATLAB作网格节点数据的插值(二维)z=interp2(x0,y0,z0,x,y,’method’)注:z—被插点值的函数值;x0,y0,z0—插值节点;x,y—被插值点;method—插值方法(‘nearest’:最邻近插值;‘linear’:双线性插值;‘cubic’:双三次插值;缺省时:双线性插值)。

数学建模讲座(五)插值和拟合46页PPT

数学建模讲座(五)插值和拟合46页PPT
数学建模讲座(五)插值和拟合
36、“不可能”这个字(法语是一个字 ),只 在愚人 的字典 中找得 到。--拿 破仑。 37、不要生气要争气,不要看破要突 破,不 要嫉妒 要欣赏 ,不要 托延要 积极, 不要心 动要行 动。 38、勤奋,机会,乐观是成功的三要 素。(注 意:传 统观念 认为勤 奋和机 会是成 功的要 素,但 是经过 统计学 和成功 人士的 分析得 出,乐 观是成 功的第 三要素 。
39、没有不老的誓言,没有不变的承 诺,踏 上旅途 ,义无 反顾。 40、对时间的价值没有没有深切认识 的人, 决不会 坚韧勤 勉。

26、要使整个人生都过得舒适、愉快,这是不可能的,因为人类必须具备一种能应付逆境的态度。——卢梭

27、只有把抱怨环境的心情,化为上进的力量,才是成功的保证。——罗曼·罗兰

28、知之者不如好之者,好之者不如乐之者。——孔子

29、勇猛、大胆和坚定的决心能够倚靠在明眼的跛子肩上。——叔本华
谢谢!
46

数学模型第十章插值与拟合方法建模--101数据插值方法及应用

数学模型第十章插值与拟合方法建模--101数据插值方法及应用

13.12.2020
课件
6
根据地图的比例,18 mm 相当于 40 km。
根据测量数据,利用 MATLAB 软件对上下边界
进行线性多项式插值,分别求出上边界函数 f2 (x) ,
下边界函数 f1(x) ,利用求平面图形面积的数值积分 方法—将该面积近似分成若干个小长方形,分别求
出这些长方形的面积后相加即为该面积的近似解。
5 188.6
11 191.6
17 458.3
13.12.2020
课件
12
我们将园周展开,借助 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]);
次样条插值。
13.12.2020
课件
17
例 3、某居民区的自来水是由一个园柱形的水塔提供。 水塔高 12.2 米,直径 17.4 米。水塔由水泵根据塔中水 位高低自动加水,一般每天水泵工作两次。按照设计, 当水塔内的水位降至约 8.2 米时,水泵自动启动加水; 当水位升至约 10.8 米时,水泵停止工作。现在需要了 解该居民区用水规律,这可以通过用水率(单位时间 的用水量)来反映。通过间隔一段时间测量水塔中的 水位来估算用水率。
可以证明当 m n 且 x0 x1 xn 时,这样的多项式 存在且唯一。若要求得到函数表达式,可直接解上 面方程组。

数学建模常见的一些方法【04拟合算法】

数学建模常见的一些方法【04拟合算法】

数学建模常见的⼀些⽅法【04拟合算法】@⽬录数学建模常见的⼀些⽅法1. 拟合算法与插值问题不同,在拟合问题中不需要曲线⼀定经过给定的点。

拟合问题的⽬标是寻求⼀个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最⼩化损失函数)。

1.1 插值和拟合的区别 插值算法中,得到的多项式f(x)要经过所有样本点。

但是如果样本点太多,那么这个多项式次数过⾼,会造成。

尽管我们可以选择分段的⽅法避免这种现象,但是更多时候我们更倾向于得到⼀个确定的曲线,尽管这条曲线不能经过每⼀个样本点,但只要保证误差⾜够⼩即可,这就是拟合的思想。

(拟合的结果是得到⼀个确定的曲线)1.2 求解最⼩⼆乘法1.3 Matlab求解最⼩⼆乘测试数据:x =4.20005.90002.70003.80003.80005.60006.90003.50003.60002.90004.20006.10005.50006.60002.90003.30005.90006.00005.6000>> yy =8.400011.70004.20006.10007.900010.200013.20006.60006.00004.60008.400012.000010.300013.30004.60006.700010.800011.50009.9000计算代码:>> plot(x,y,'o')>> % 给x和y轴加上标签>> xlabel('x的值')>> ylabel('y的值')>> n = size(x,1);>> k = (n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x))>> b = (sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x))>> hold on % 继续在之前的图形上来画图形>> grid on % 显⽰⽹格线>> f=@(x) k*x+b; % 函数线>> fplot(f,[2.5,7]); % 设置显⽰范围>> legend('样本数据','拟合函数','location','SouthEast')计算过程:>> plot(x,y,'o')>> % 给x和y轴加上标签>> xlabel('x的值')>> ylabel('y的值')>> n = size(x,1);>> n*sum(x.*y)-sum(x)*sum(y)ans = 1.3710e+03>> n*sum(x.*x)-sum(x)*sum(x)ans = 654.4600>> k = (n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x))k = 2.0948>> b = (sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x))b = -1.0548>> hold on>> grid on>> f=@(x) k*x+b;>> fplot(f,[2.5,7]);>> legend('样本数据','拟合函数','location','SouthEast')1.4 如何评价拟合的好坏线性函数是指对参数为线性(线性于参数)在函数中,参数仅以⼀次⽅出现,且不能乘以或除以其他任何的参数,并不能出现参数的复合函数形式。

插值与拟合算法分析

插值与拟合算法分析在数学与计算机科学领域,插值与拟合算法是两种常用的数据处理技术。

插值算法通过已知数据点之间的内插来估算未知数据点的值,而拟合算法则通过求取最佳拟合曲线或函数来逼近已知数据点。

本文将对插值与拟合算法进行详细分析,并比较它们在不同应用中的优缺点。

一、插值算法插值算法主要用于通过已知数据点之间的内插来估算未知数据点的值。

常用的插值算法包括拉格朗日插值、牛顿插值、样条插值等。

这些算法根据插值函数的不同特点,适用于不同类型的数据处理。

1. 拉格朗日插值拉格朗日插值是一种基于代数多项式的插值方法。

它通过构造一个全局多项式函数来拟合已知数据点,并推导出未知数据点的估算值。

拉格朗日插值算法具有简单易懂、计算效率高等优点,但在处理大量数据点时可能会出现龙格现象,导致插值结果有一定误差。

2. 牛顿插值牛顿插值是一种基于差商的插值方法。

它通过计算差商的递推关系,构造一个分段多项式函数来拟合已知数据点。

相比于拉格朗日插值,牛顿插值算法具有更高的数值稳定性和精度,并且可以方便地进行动态插值。

3. 样条插值样条插值是一种基于分段函数的插值方法。

它将整个数据区间划分为若干小段,并使用不同的插值函数对每一段进行插值。

样条插值算法通过要求插值函数的高阶导数连续,能够更好地逼近原始数据的曲线特征,因此在光滑性较强的数据处理中常被使用。

二、拟合算法拟合算法主要用于通过最佳拟合曲线或函数来逼近已知数据点。

常用的拟合算法包括最小二乘拟合、多项式拟合、非线性拟合等。

这些算法可以使拟合曲线与已知数据点尽可能地接近,从而进行更精确的数据分析和预测。

1. 最小二乘拟合最小二乘拟合是一种通过最小化残差平方和来求取最佳拟合曲线的方法。

它利用数据点与拟合曲线的差异来评估拟合效果,并通过求取最小残差平方和的参数值来确定拟合曲线的形状。

最小二乘拟合算法广泛应用于线性回归和曲线拟合等领域。

2. 多项式拟合多项式拟合是一种通过多项式函数来逼近已知数据点的方法。

c++三次多项式拟合_数学建模_003_插值和拟合_2020_9_3

c++三次多项式拟合_数学建模_003_插值和拟合_2020_9_3插值问题:有限个已知数据点,构造⼀个解析表达式,由此计算数据点之间的函数值,称之为插值。

当数据量不够,需要补充,且认定已有数据可信时,通常利⽤函数插值⽅法。

常见插值⽅法:拉格朗⽇插值(lagrange插值)分段线性插值Hermite三次样条插值克⾥⾦插值(地理学)反距离权重插值算法(地理学)拉格朗⽇插值(⾼次多项式插值):(次数太⾼有Runge现象)1. 曲线光滑;误差估计有表达式2. 收敛性不能保证(振荡现象)3. ⽤于理论分析,实际意义不⼤matlab中没有分段线性插值:1. 收敛性良好2. 只⽤两个节点,且线性,简单实⽤3. 曲线不光滑三次样条插值:1. 曲线2阶光滑,收敛性有保证2. 实际中应⽤⼴泛3. 误差估计较难拟合:已知有限个数据点,求近似函数,可不过已知数据点,只要求在某种意义下它在这些点上的总偏差最⼩。

曲线拟合要解决的两个问题:1. 线型的选择(关键点,⼀般根据散点图)2. 线型中参数的计算参数的求解:1. 线性拟合----最⼩⼆乘法2. ⾮线性拟合----Gauss-Newton迭代法最⼩⼆乘法:函数表达式: 其中 , k=[1,n],是线性⽆关的函数, 是待定系数,⽬的找⼀组适当的,使得 与的距离平⽅和最⼩。

这种准则称为最⼩⼆乘准则,求系数的⽅法称为最⼩⼆乘拟合法。

MATLAB拟合:线性拟合:polyfit(x,y,n)函数x,y被拟合数据的⾃变量和应变量,n为拟合多项式的次数polyval()函数多项式在 x 处的值 y 可⽤polyval函数计算⾮线性拟合:[b,r] = polyfit(x ,y ,fun,bo, option)fun: 拟合函数 b0:拟合参数初始化迭值option: 拟合选项 b:拟合参数 r:拟合残差MATLAB拟合⼯具箱: cftool(⾹)插值和拟合的异同联系都是根据实际中⼀-组已知数据来构造⼀个能够反映数据变化规律的近似函数的⽅法。

数学建模插值及拟合详解

插值和拟合实验目的:了解数值分析建模的方法,掌握用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方向和y方向走非常小的一步。

表3-1给出了下轮廓线上的部分数据但工艺要求铣床沿x方向每次只能移动0.1单位.这时需求出当x坐标每改变0.1单位时的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 on3.用MA TLAB作网格节点数据的插值(二维) z=inte rp2(x0,y0,z0,x,y,’method’)注:z—被插点值的函数值;x0,y0,z0—插值节点;x,y—被插值点;method—插值方法(‘nearest’:最邻近插值;‘linear’:双线性插值;‘cubic’:双三次插值;缺省时:双线性插值)。

数学建模 插值与拟合


%作图
2020/8/19
例 已知飞机下轮廓线上数据如下,Байду номын сангаасx每改变0.1时的y值。
X0 3
5
7
9 11 12 13 14 15
Y 0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6
机翼下轮 廓线
y
x
自己思考,10分钟小组讨论!
2020/8/19
二维插值
(1)二维插值的定义
用MATLAB作网格节点数据的插值
z=interp2(x0,y0,z0,x,y,’method’)
被插值点 的函数值
插值 节点
被插值点 插值方法
‘nearest’ 最邻近插值 ‘linear’ 双线性插 值 ‘cubic’ 双三次插 值 要求x0,y0单调;x,y可取为缺矩省阵时,, 或x取双行线向性量插,值y 取为列向量,x,y的值分别不能超出x0,y0的范围。
一、函数插值 二、曲线拟合
一维插值 二维插值
2020/8/19
在工程中,常有这样的问题:给定 一批数据点(它可以是设计师给定,也 可能是从测量与采样中得到),需确定 满足特定要求的曲线(面)通过所给所 有数据点,这就是插值问题。
2020/8/19
一维插值
(1)插值的定义 (2)插值的方法
拉格朗日插值 分段线性插值 三次样条插值
x x2 x0 x2
y0
x x1
x0 x0
x x2 x1 x2
y1
x x2
x0 x0
x x1 x2 x1
y2
直接验证可知,Ln x满足插值条件.
Notice:拉格朗日多项式插值次数越高,越易产生振荡,这 种振荡称为龙格(Runge)现象 。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1)输入以下命令: x=0:0.1:1; y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; R=[(x.^2)' x' ones(11,1)];
MATLAB(zxec1)
A=R\y'
2)计算结果: A = -9.8108 20.1293 -0.0317
8
10
12
14
16
18
25
ÒÑÖªÊý¾Ýµã 20
15 spline
10 Èý´Î¶àÏîʽ²åÖµ 5
0
0
2
4
6
8
10
12
14
16
18
8
曲线拟合问题最常用的解法——线性最小二乘法的基本思路
第一步:先选定一组函数 r1(x), r2(x), …rm(x), m<n, 令 f(x)=a1r1(x)+a2r2(x)+ …+amrm(x) 其中 a1,a2, …am 为待定系数。 第二步: 确定a1,a2, …am 的准则(最小二乘准则): (1)
min F (a, b, k ) [a be
j 1 10 0.02 kt j
c j ]2
22
解法1. 用命令lsqcurvefit
F(x,tdata)= (a be0.02kt1 ,, a be0.02kt10 )T ,x=(a,b,k) 1)编写M-文件 curvefun1.m function f=curvefun1(x,tdata) f=x(1)+x(2)*exp(-0.02*x(3)*tdata) %其中 x(1)=a; x(2)=b;x(3)=k; 2)输入命令 tdata=100:100:1000 cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39, 6.50,6.59]; x0=[0.2,0.05,0.05]; x=lsqcurvefit ('curvefun1',x0,tdata,cdata) f= curvefun1(x,tdata)
i 1
则a为上述超定方程的最小二乘解。
10
线性最小二乘法的求解 所以,曲线拟合的最小二乘法要解决的问题,实际上就是 求以下超定方程组的最小二乘解的问题。 Ra=y (3) r1 ( x1 ) rm ( x1 ) a1 y1 , a , y R r1 ( xn ) rm ( xn ) am yn
函数插值与曲线拟合都是要根据一组数据构造一个函数作 为近似,由于近似的要求不同,二者的数学方法上是完全不同 的。
实例:下面数据是某次实验所得,希望得到X和 f之间的关系?
x f 1 1.5 2 3.9 4 6.6 7 11.7 9 15.6 12 13 18.8 19.6 15 20.6 17 21.1
1100 1000 900 800 700 20
826
873
942 1032
设 R=at+b a,b为待定系数
40
60
80
100
4
拟 合 问 题 引 例 2 已知一室模型快速静脉注射下的血药浓度数据(t=0注射300mg) t (h) 0.25 0.5 1 1.5 2 3 4 6 8
c (g/ml) 19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01
2
f ( x) f ( x) f1 ( x) f 2 ( x) f n ( x)
最小。 其中 fi(x)=f(x,xdatai,ydatai) =F(x,xdatai)-ydatai
20
输入格式为: 1) x=lsqnonlin(‘fun’,x0); 2) x= lsqnonlin (‘fun’,x0,options); 3) x= lsqnonlin (‘fun’,x0,options,‘grad’); 4) [x,options]= lsqnonlin (‘fun’,x0,…); 5) [x,options,funval]= lsqnonlin (‘fun’, 说明:x= x0,…); lsqnonlin (‘fun’,x0,options); fun是一个事先建立的 定义函数f(x)的M-文件, 自变量为x 选项见无 迭代初值 约束优化
f=a1+a2/x + + +
f=aebx +
+
f=ae-bx + + +
+ +
+ + +
+ +
12
用MATLAB解拟合问题
1、线性最小二乘拟合
2、非线性最小二乘拟合
13
用MATLAB作线性最小二乘拟合
1. 作多项式f(x)=a1xm+ …+amx+am+1拟合,可利用已有程序: a=polyfit(x,y,m) 输出拟合多项式系数 a=[a1, …am , am+1] (数组)) 输入同长度 的数组X,Y 拟合多项 式次数
n
即 Ra=y

r1m a1 y1 , a , y am yn rnm
超定方程一般是不存在解的矛盾方程组。
(ri1a1 ri 2 a2 rim am yi ) 2 达到最小, 如果有向量a使得
9.30 11.2
即要求 出二次多项式:
f ( x) a1x 2 a2 x a3
中 的 A (a1 , a2 , a3 ) 使得:
[ f ( xi ) yi ]2
i 1
11
最小
15
解法1.用解超定方程的方法
此时 x12 R x2 11 1 x11 1 x1
求血药浓度随时间的变化规律c(t). 作半对数坐标系(semilogy)下的图形
10
2
MATLAB(aa1)
c(t ) c0 e
10
1 0
kt
c, k为待定系数
0 2 4 6 8
5
10
曲 线 拟 合 问 题 的 提 法
已知一组(二维)数据,即平面上 n个点(xi,yi) i=1,…n, 寻求一个函数(曲线)y=f(x), 使 f(x) 在某种准则下与所 有数据点最为接近,即曲线拟合得最好。 y + + +
其中
定理:当RTR可逆时,超定方程组(3)存在最小二乘解, 且即为方程组
RTRa=RTy
的解:a=(RTR)-1RTy
11
线性最小二乘拟合 f(x)=a1r1(x)+ …+amrm(x)中 函数{r1(x), …rm(x)}的选取 1. 通过机理分析建立数学模型来确定 f(x); 2. 将数据 (xi,yi) i=1, …n 作图,通过直观判断确定 f(x): f=a1+a2x + + + + + f=a1+a2x+a3x2 + + + + + f=a1+a2x+a3x2 + + + + +
MATLAB(cn)
7
最临近插值、线性插值、样条插值与曲线拟合结果:
25
0 0 2 4 6 8 10 12 14 16 18
ÒÑÖªÊý¾Ýµã 20
5
15
10 ÒÑÖªÊý¾Ýµã
linest Èý´Î¶àÏîʽ²åÖµ
10
15 nearest Èý´Î¶àÏîʽ²åÖµ
5
20
0
25
0
2
4
6
19
2. lsqnonlin
已知数据点: xdata=(xdata1,xdata2,…,xdatan) ydata=(ydata1,ydata2,…,ydatan) lsqnonlin用以求含参量x(向量)的向量值函数 f(x)=(f1(x),f2(x),…,fn(x))T
T 2 2
中的参量x,使得
MATLAB(zxec2)
%作出数据点和拟合曲线的图形 20.1293 -0.0317
2)计算结果: A = -9.8108
f ( x) 9.8108x 2 20.1293x 0.0317
17
用MATLAB作非线性最小二乘拟合
Matlab的提供了两个求非线性最小二乘拟合的函数: lsqcurvefit和lsqnonlin。两个命令都要先建立M-文件fun.m, 在其中定义函数f(x),但两者定义f(x)的方式是不同的,可参 考例题. 1. lsqcurvefit 已知数据点: xdata=(xdata1,xdata2,…,xdatan), ydata=(ydata1,ydata2,…,ydatan) lsqcurvefit用以求含参量x(向量)的向量值函数
21
c(t ) a be0.0.2 kt 例2 用下面一组数据拟合
中的参数a,b,k
tj
100 200 300 400 500 600 700 800 900 1000
c j 10 3 4.54 4.99 5.35 5.65 5.90 6.10 6.26 6.39 6.50 6.59
该问题即解最优化问题:
2. 对超定方程组 Rnm am1 yn1 (m n) ,用 a R \ y 可得最小二乘意义下的解。 3.多项式在x处的值y可用以下命令计算:
y=polyval(a,x)
14
相关文档
最新文档