您好,欢迎访问三七文档
1.插值2.拟合及线性回归一、一元数据处理方法在解决实际问题的生产(或工程)实践和科学实验过程中,通常需要通过研究某些变量之间的函数关系来帮助我们认识事物的内在规律和本质属性,而这些变量之间的未知函数关系又常常隐含在从试验、观测得到的一组数据之中。因此,能否根据一组试验观测数据找到变量之间相对准确的函数关系就成为解决实际问题的关键例如在工程实践和科学实验中,常常需要从一组试验观测数据(xi,yi),i=0,1,....,n之中找到自变量x与因变量y之间的函数关系,一般可用一个近似函数y=f(x)来表示。函数y=f(x)的产生办法因观测数据和要求不同而异,通常可采用数据拟合与函数插值两种办法来实现。数据拟合主要是考虑到观测数据受随机观测误差的影响,进而寻求整体误差最小、能较好反映观测数据的近似函数y=f(x),此时并不要求所得到的近似函数y=f(x)满足yi=f(xi),i=0,1,…,n。数据插值则要求近似函数y=f(x)在每一个观测点xi处一定要满足yi=f(xi),i=0,1,…,n,在这种情况下,通常要求观测数据相对比较准确,即不考虑观测误差的影响。在实际问题中,通过观测数据能否正确揭示某些变量之间的关系,进而正确认识事物的内在规律与本质属性,往往取决于两方面因素。其一是观测数据的准确性或准确程度,这是因为在获取观测数据的过程中一般存在随机测量误差,导致所讨论的变量成为随机变量。其二是对观测数据处理方法的选择,即到底是采用插值方法还是用拟合方法,插值方法之中、拟合方法之中又选用哪一种插值或拟合技巧来处理观测数据。插值问题忽略了观测误差的影响,而拟合问题则考虑了观测误差的影响。但由于观测数据客观上总是存在观测误差,而拟合函数大多数情况下是通过经验公式获得的,因此要正确揭示事物的内在规律,往往需要对大量的观测数据进行分析,尤为重要的是进行统计分析。统计分析的方法有许多,如方差分析、回归分析等。数据拟合虽然较有效地克服了随机观测误差的影响,但从数理统计的角度看,根据一个样本计算出来的拟合函数(系数),只是拟合问题的一个点估计,还不能完全说明其整体性质。因此,还应该对拟合函数作区间估计或假设检验,如果置信区间太大或包含零点,则由计算得到的拟合函数系数的估计值就毫无意义。这里所采用的统计分析方法就是所谓的回归分析。另外还可用方差分析的方法对模型的误差作定量分析。对于插值方法,本文简单介绍最常用的插值法的基本结论及其Matlab实现问题。由于数据拟合问题必须作区间估计或假设检验,所以除了介绍最基本的数据拟合方法——最小二乘法的基本结论及其Matlab实现问题外,我们专门介绍了对数值拟合问题进行区间估计或假设检验的统计方法。即介绍回归分析方法及其Matlab实现。数据处理问题通常情况下只是某个复杂实际问题的一个方面或部分内容,因而这里所介绍的数据处理方法——函数插值和数据拟合的方法(包括回归分析)通常只能解决实际问题中的部分问题——计算问题。一般来说,对实际问题进行数学建模需要用到多方面知识,只有很少的情况下可以单独使用本章所介绍的内容,故我们最后以修改后的美国91年数学建模A题为例说明如何使用数值计算知识建立数学模型,从而解决实际问题的方法。1、插值法在生产和实验中,常常需要根据一张表格表示的函数推算该表中没有的函数值.解决此类问题的简单途径之一利用插值法。插值在数学发展史上是一个老问题,它是和Gauss,Lagrange,Newton等在著名数学家连在一起的。它最初来源于天体计算——由若干观测值计算人一时刻星球的位置。现在,插值法在工程技术和数据处理有许多直接应用,而且也是数值积分、数值微分的基础。插值概念与基础理论插值问题的提法对于给定的函数表xx0x1…….xnY=f(x)y0y1……..yn(其中在[a,b]上连续,x0,x1,…,xn是[a,b]上的n+1个互异的点),在某函数类{(x)}中求一个函数(x),使()yfx(xi)=yi,(i=0,1,2,…,n)(2)(1)并用函数(x)作为函数y=f(x)的近似函数,即y=f(x)(x),(x∈[a,b])这类问题称为插值问题。[a,b]称为插值区间,x0,x1,...,xn称为插值节点,(2)称为插值条件,插值条件是选择近似函数的标准,满足此条件的近似函数(x)称为插值函数,f(x)称为被插值函数。函数类{(x)}有多种取法,常用的有代数多项式、三角函数和有理函数。最简单的插值函数是代数多项式,相应的插值问题称为多项式插值。最简单的插值函数是代数多项式,相应的插值问题称为多项式插值。求)(xf的n次插值多项式()nypx的几何意义,就是)(xfy上的若干个节点,作一条代数曲线()nypx来近似代替曲线)(xfy。如图所示。通过曲线1.1拉格朗日插值多项式%lagrange插值法的程序functiony=lagrange(x0,y0,x);n=length(x0);m=length(x);fori=1:mz=x(i);s=0.0;fork=1:np=1.0;forj=1:nifj~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;end分段线性插值的构造:设f(x)是定义在[a,b]上的函数,在[a,b]上节点a=x0x1x2…xn-1xn=b,的函数值为y0,y1,y2,…yn-1,yn。(x)在每个子区间[xi,xi+1](i=0,1,2,,n-1)上是一次插值多项式;11111iiiiiiiiiixxxxxxxyxxxxyx,)(这种分段低次插值称为分段线性插值.在几何上就是用折线段带代替曲线,故分段线性插值又称为折线插值.(,),0,1,,kkxyin实际上是连接点的一条折线1.2分段线性插值分段线性插值:matalb调用格式:yi=interp1(x,y,xi,’linear’)x,y为插值节点,xi为待求节点分段二次插值即:选取跟节点x最近的三个节点xi-1,xi,xi+1进行二次插值,即在区间[xi-1,xi+1],取:这种分段的低次插值叫分段二次插值,在几何上就是用分段抛物线代替y=f(x),故分段二次插值又和分段抛物插值。11112iikikjijikjikxxxxyxLxf)()()()(matlab调用格式yi=interp1(x,y,xi,’cubic’)%二次多项式插值分段线性插值曲线图:-4-3-2-101234-1-0.8-0.6-0.4-0.200.20.40.60.81曲线的光滑性较差在节点处有尖点但如果增加节点的数量减小步长,会改善插值效果插值方法matlab实现1、拉格朗日插值法2、分段线性插值法分段线性插值的Matlab实现用Matlab实现分段线性插值不需要编制函数程序,Matlab中有现成的一维插值函数interp1。y=interp1(x0,y0,x,'method')method指定插值的方法,默认为线性插值。其值可为:'nearest'最近项插值'linear'线性插值'spline'立方样条插值'cubic'立方插值。xyln例1已知的函数表x1011121314y2.30262.39792.48492.56492.6391ln(11.5)并估计误差。分别用分段线性和抛物线插值求的近似值,clearx0=[1011121314];y0=[2.30262.3979,2.48492.56492.6391];x=10:0.1:15;y1=interp1(x0,y0,x,’linear’);%分段线性插值yy1=interp1(x0,y0,11.5,’linear’);%计算x=11.5处的值y2=interp1(x0,y0,x,‘cubic');%抛物线插值yy2=interp1(x0,y0,11.5,‘cubic');subplot(1,2,1)%画图比较plot(x0,y0,'+',x,y1,11.5,yy1,’rO’)title(‘分段linear')subplot(1,2,2)plot(x0,y0,'+',x,y2,11.5,yy2,’rO’)title(‘分段抛物cubic')1901年龙格(Runge)给出一个例子:定义在区间[-1,1]上,这是一个光滑函数,它的任意阶导数都存在,对它在[-1,1]上作等距节点插值时,插值多项式情况,见图:从图中,可见,在靠近-1或1时,余项会随n值增大而增大,如P12(0.96)=3×6!但f(0.96)=0.2521()1fxx-5-4-3-2-1012345-1.5-1-0.500.511.52n=2n=4n=6n=8n=10f(x)=1/(1+x2)从图中,还可发现,在0附近插值效果是好的,即余项较小,另一种现象是插值多项式随节点增多而振动更多。这种插值多项式当节点增加时反而不能更好地接近被插之数的现象,称为龙格现象。上述现象和定理,告诉我们用高次插值多项式是不妥当的,从数值计算上可解释为高次插值多项式的计算会带来舍入误差的增大,从而引起计算失真。那么如何提高插值精度呢?采用分段插值是一种办法。实践上作插值时一般只用一次、二次最多用三次插值多项式。什么是样条:是指飞机或轮船等的制造过程中为描绘出光滑的外形曲线(放样)所用的工具样条本质上是一段一段的三次多项式拼合而成的曲线在拼接处,不仅函数是连续的,且一阶和二阶导数也是连续的1946年,Schoenberg将样条引入数学,即所谓的样条函数1.3三次样条插值],[)(,],[)(),(),()1(2baCxSbaxSxSxS即上连续都在区间上都是三次多项式在每个小区间],[)()2(1kkxxxS处的函数值为在节点如果函数nxxxxf,,,)()3(10njyxfjj,,1,0,)(()Sx而满足njyxSjj,,1,0,)(上的三次样条插值函数在为则称],[)()(baxfxS------(1)定义1.的一个分割为区间],[,,,10babxxxan:],[)(上满足条件在区间如果函数baxS三次样条插值函数2()sx由条件(),不妨将记为1[,],1,2,...,iiisxsxxxxin()={(),}32()(1)iiiixaxbxcxdisiiiiabcd其中,,,为待定系数,共4n个。1由条件(),有()()()()(1,2,...,1)(2)()()iiiiiixxxxinxxii+1ii+1ii+1ssssss3由条件(),有()(0,1,2,...,)(3)iiisxyin2342n容易看出,()和()共有个方程,为确定s(x)的4n个待定参数,尚需再给出两个条件,即所谓边界条件。通常使用的边界条件有以下三类:000,nnnxfxfff第一类边界条件是s()=s()=为给定的值。00000()nnnnnfxx-xsxx-xsxsxsxsxsxsx第三类边界条件是周期条件。设()是周期函数,不妨设以为一个周期,这时也应以为周期的周期函数,于是s(x)在端点处满足条件:(+0)=(-0);(+0)=(-0);(+0)=(-0).000nnnxfxfff第二类边界条件是s()=s()=,为给定的值。0=0nxx当s()=s()时,样条函数在两端点不受力,呈自然状态,故称之为自然边界条件。4()4().nsxnsx利用个条件求出三次样条函数的个待定常数,直接求解计算量很大,通常利用Matlab软件求3、三次样条插值法Matlab中三次样条插值也有现成的函数:①y=interp1(x0,y0,x,'spline');②y=spline(x0,y0,x);pp=csape(x0,y0,conds),pp=csape(x0,y0,conds,valconds),y=ppv
本文标题:数据处理3
链接地址:https://www.777doc.com/doc-5118182 .html