插值与数据拟合模型.docx
- 文档编号:1081640
- 上传时间:2022-10-16
- 格式:DOCX
- 页数:22
- 大小:352.18KB
插值与数据拟合模型.docx
《插值与数据拟合模型.docx》由会员分享,可在线阅读,更多相关《插值与数据拟合模型.docx(22页珍藏版)》请在冰豆网上搜索。
插值与数据拟合模型
第二讲插值与数据拟合模型
函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同的。
而面对一个实际问题,究竟用插值还是拟合,有时容易确定,有时则并不明显。
在数学建模过程中,常常需要确定一个变量依存于另一个或更多的变量的关系,即函数。
但实际上确定函数的形式(线性形式、乘法形式、幂指形式或其它形式)时往往没有先验的依据。
只能在收集的实际数据的基础上对若干合乎理论的形式进行试验,从中选择一个最能拟合有关数据,即最有可能反映实际问题的函数形式,这就是数据拟合问题。
一、插值方法简介
插值问题的提法是,已知个节点,其中互不相同,不妨设,求任一插值点处的插值。
可以看成是由某个函数产生的,的解析表达式可能十分复杂,或不存在封闭形式。
也可以未知。
求解的基本思路是,构造一个相对简单的函数,使通过全部节点,即,再由计算插值,即。
1.拉格朗日多项式插值
插值多项式
从理论和计算的角度看,多项式是最简单的函数,设是n次多项式,记作
(1)
对于节点应有
(2)
为了确定插值多项式中的系数,将
(1)代入
(2),有
(3)
记
方程组(3)简写成
(4)
注意是Vandermonde行列式,利用行列式性质可得
因互不相同,故,于是方程(4)中A有唯一解,即根据个节点可以确定唯一的n次插值多项式。
拉格朗日插值多项式
实际上比较方便的做法不是解方程(4)求A,而是先构造一组基函数:
(5)
是n次多项式,满足
(6)
令
(7)
显然是满足
(2)的n次多项式,由方程(4)解的唯一性,(7)式表示的的解与
(1)式相同。
(5)、(7)称拉格朗日插值多项式,用计算插值称拉格朗日多项式插值。
误差估计
插值的误差通过插值多项式与产生节点的之差来估计,记作。
虽然我们可能不知道的解析表达式,但不妨设充分光滑,具有阶导数。
利用泰勒展开可以推出,对于任意。
(8)
若可以估计
(9)
则
(10)
实际上因为常难以确定,所以(10)式并不能给出精确的误差估计。
但是可能看出,n增加,减少;越光滑,越小,越小;x越接近,越小。
例将区间n等分,用产生个节点,然后作拉格朗日插值多项式。
用计算(取4位有效数字)。
估计(取)。
解若,则,。
由(5)、(7)式
若,则,,由(5)、(7)式。
。
估计:
对于可设,记节点间隔。
当时
于是(10)式给出
可以算出
n
1
2
3
4
0.3
0.04
的精确值是0.8660(4位有效数字)的误差在范围内。
插值多项式的振荡
用拉格朗日插值多项式近似虽然随着节点个数的增加,的次数变大,多数情况下误差会变小,但n增加时,的光滑性变坏,有时会出现很大的振荡。
理论上,当时,在内并不能保证处处收敛于。
Runge给出了一个有名的例子:
取。
对于作,会得到如下图所示的结果。
可以看出,对于较大的,随着n的增加,的振荡越来越大,事实上可以证明,仅当时,才有,而在此区间外,是发散的。
高次插值多项式的这些缺陷,促使人们转而寻求简单的低次数多项式插值。
2.分段线性插值
简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插值函数,记作,它满足,且在每个小区间上是线性函数。
可以表示为
(12)
(13)
有良好的收敛性,即对于有,。
用计算点的插值时,只用到左右的两个节点,计算量与节点个数无关。
但越大,分段越多,插值误差越小。
实际上用函数表作插值计算时,分段线性插值就足够了,如数学、物理中用的特殊函数表,数理统计中用的概率分布表等。
3.三次样条插值
样条函数的由来
分段线性插值虽然简单,足够大时精度也相当高。
但是折线在节点处显然不光滑,即在节点处导数不连续。
这影响了它在诸如机械加工等领域(希望插值曲线光滑)中的应用。
所谓样条(Spline),来源于船舶、飞机等设计中描绘光滑外形曲线用的绘图工具。
一根有弹性的细长木条用压铁固定在节点上,其它地方让它自然弯曲,如此画出的曲线称为样条曲线。
因为这种曲线的曲率是处处连续的,所以要求样条函数的二阶导数连续。
人们普遍使用的样条函数是分段三次多项式。
三次样条函数
三次样条函数记作。
要求它满足以下条件:
a)在每个小区间上是3次多项式;
b)在上二阶导数连续;
c)。
(14)
由条件a,不妨将记为
(15)
其中为待定系数,共4个。
由条件b,
(16)
容易看出,(14)、(16)式共含有4-2个方程,为确定的4个待定参数,尚需再给出2个条件。
最常用的是所谓自然边界条件:
(17)
可以证明,4阶线性方程组(14)、(16)、(17)有唯一解,即被唯一确定。
但是,这种解法的工作量太大,方程组又常呈病态,所以实际上要设计简便的解法。
另外,像分段线性函数一样,三次样条函数也有良好的收敛性,即在相当一般的条件下,。
4.用MATLAB作插值计算
拉格朗日插值需先按照(5)、(7)式编写一个程序。
设个节点以数组x0,y0输入(注意:
程序中用个节点,而不是(5)、(7)式中的+1个节点),m个插值点以数组x输入。
输出数组y为m个插值。
比如可以写一个名为lagr1.m的M文件。
分段线性插值有现成的程序
y=interp1(x0,y0,x)
其中输入x0,y0,x和输出y的意义同上,数组长度自定义(x0,y0同长度,x,y同长度)。
三次样条插值也有现成的程序
y=interp1(x0,y0,x,'spline')
或
y=spline(x0,y0,x)
其中输入x0,y0,x和输出y的意义同上,数组长度自定义(x0,y0同长度,x,y同长度)。
例对,用(=11)个节点(等分)作上述三种插值,用m(=21)个插值点(等分)作图,比较结果。
插值方法小结
拉格朗日插值是高次多项式插值(+1个节点上用不超过次的多项式),插值曲线光滑,误差估计有表达式。
但有振荡现象,收敛性不能保证。
这种插值主要用于理论分析,实际意义不大。
分段线性和三次样条插值是低次多项式插值,简单实用,收敛性有保证,但不光滑,三次样条插值的整体光滑性已大有提高,应用广泛,唯误差估计较困难。
二、最小二乘法简介
下面先看一个例子。
例1“人口问题”是我国最大社会问题之一,估计人口数量和发展趋势是我们制定一系列相关政策的基础。
有人口统计年鉴,可查的我国从1949年至1994年人口数据智料如下:
年份
1949
1954
1959
1964
1969
1974
1979
1984
1989
1994
人口数(百万)
541.67
602.66
672.09
704.99
806.71
908.59
975.42
1034.75
1106.76
1176.74
分析:
(1)在直角坐标系上作出人口数的图象。
(2)估计出这图象近似地可看做一条直线。
(3)用以下几种方法(之一)确定直线方程,并算出1999年人口数。
方法一:
先选择能反映直线变化的两个点,如(1949,541.67),(1984,1034.75)二点确定一条直线,方程为:
N=14.088t–26915.842,代入t=1999,得N12.46亿。
方法二:
可以多取几组点对,确定几条直线方程,将t=1999代入,分别求出人口数,再取其算数平值。
方法三:
可采用“最小二乘法”求出直线方程。
最小二乘法简介
设是直角平面坐标系下给出的一组数据,设,我们可以把这组数据看作是一个离散的函数。
根据观察,如果这组数据图象“很象”一条直线(不是直线),我们的问题是确定一条直线,使得它能"最好"的反映出这组数据的变化。
对个别观察值来说,用直线的值来近似代替其观察值时,所产生的误差可能是正的,也可能是负的。
为了不使它们相加彼此抵消,可用
来表示用直线来近似代原来实验数据时所产生的误差。
为了在数学上处理方便,又把上式改成
也就是说,我们选取常数,使得总误差达到最小。
这就是所谓的最小二乘法。
用微分法不难求出上面最小值问题的驻点,这里不列出其结果。
事实上,在MATLAB中已有现成的求最小二乘问题的函数polyfit,称为多项式拟合函数,并且这个函数允许多项式的次数可以是任意次的。
除外,还可以用解线性方程组中的除法运算(矩阵除法)来求解。
这两个方法的区别在于:
用polyfit函数求拟合问题时,多项式的次数必须从0次到最高次数之间每个次数都要出现。
而如果需要选择一些次数进行拟合时,就可用矩阵除法运算来进行。
矩阵除法还可以求一般的线性拟合问题,例如拟合函数不是多项式的线性拟合问题。
上面例1中的问题就可以用polyfit来求解。
例2用最小二乘法求一个形如的经验公式,数据如下:
x
19
25
31
38
44
y
19.0
32.3
49.0
73.3
98.8
解用求矩阵除法(因为要拟合的多项式缺了1次幂项,所以不能用polyfit函数)。
代码如下。
x=[1925313844];
y=[19.032.349.073.398.8];
x1=x.^2;
x1=[ones(5,1),x1’];
ab=x1\y’
x0=[19:
0.2:
44];
y0=ab
(1)+ab
(2)*x0.^2;
clf
plot(x,y,’o’,x0,y0,’-r’);
多项式拟合是线性拟合问题(注意:
无论拟合的多项式次是多少,多项式拟合都是线性拟合!
)。
但在实际应用中,有时还需要作非线性拟合问题。
所谓线性拟合问题是指:
需要拟合的函数中的未知常数都线性的。
如函数中,常数是线性的。
但、中的常数都是非线性。
这种函数的拟合问题称为非线性拟合问题。
有的非线性拟合问题可以化为线性拟合问题。
例如在函数中,两边取对数,得,再令,,则要拟合的函数就成,这样就变成线性拟合问题了。
但也有不能化成线性拟合问题的情况,如函数就是这样。
在MATLAB5.3中求非线性拟合问题的函数是lsqcurvefit。
例3在区间内拟合函数。
解用非线性拟合函数lsqcurvefit来拟合。
先建立拟合函数。
%建立拟合函数,文件名是nxxyhhx.m,必须与函数名相同。
%要拟合的函数中参数用x表示,即x
(1)=ax
(2)=b;
%而拟合函数中x的值则用xdata表示。
functionv=nxxyhhx(x,xdata)
v=x
(1)*xdata+exp(x
(2)*xdata);
以下指令在命令窗中进行。
clf;
x=linspace(-1,3,10);
y1=2*x+exp(-0.1*x);%原型函数
plot(x,y1,'-k')
holdon
y=y1+1.2*(rand(size(x))-0.5);%将原型函数加一些扰动
plot(x,y,'*g')
x0=[2.5,-0.5];
a=lsqcurvefit('nxxyhhx',x0,x,y)%用原始实验数据拟合函数nxxyhhx(x),
vpa([a
(1),a
(2)],8)%nxxyhhx(t)表达式中各项的系数。
y2=nxxyhhx(a,x);
plot(x,y2,'-r')
legend('原型函数','原始数据','用原始数据拟合的结果',4);
三、血液流量问题
小哺乳动物与小鸟的心跳速度比大哺乳动物与大鸟的快。
如果动物的进化为每种动物确定了最佳心跳速度,为什么各种动物的最佳心跳速度不一样呢?
由于热血动物的热量通过身体表面散失,所以它们要用大量的能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 拟合 模型