数据拟合方法_第1页
数据拟合方法_第2页
数据拟合方法_第3页
数据拟合方法_第4页
数据拟合方法_第5页
已阅读5页,还剩5页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据拟合方法-CAL-FENGHAI.-(YICAI)-CompanyOnel

第二讲数据拟合方法在实验中,实验和戡测常常会产生大量的数据。为了解释这些数据或者根据这些数据做出预测、判断,给决策者提供重要的依据。需要对测量数据进行拟合,寻找一个反映数据变化规律的函数。数据拟合方法与数据插值方法不同,它所处理的数据量大而且不能保证每一个数据没有误差,所以要求一个函数严格通过每一个数据点是不合理的。数据拟合方法求拟合函数,插值方法求插值函数。这两类函数最大的不同之处是,对拟合函数不要求它通过所给的数据点,而插值函数则必须通过每一个数据点。例如,在某化学反应中,测得生成物的质量浓度y(10-3g/cm3)与时间t(min)的关系如表所示t12346810121416y显然,连续函数关系y(t)是客观存在的。但是通过表中的数据不可能确切地得到这种关系。何况,由于仪器和环境的影响,测量数据难免有误差。因此只能寻求一个近拟表达式y=①(t)寻求合理的近拟表达式,以反映数据变化的规律,这种方法就是数据拟合方法。数据拟合需要解决两个问题:第一,选择什么类型的函数①Q)作为拟合函数(数学模型);第二,对于选定的拟合函数,如何确定拟合函数中的参数。数学模型应建立在合理假设的基础上,假设的合理性首先体现在选择某种类型的拟合函数使之符合数据变化的趋势(总体的变化规律)。拟合函数的选择比较灵活,可以选择线性函数、多项式函数、指数函数、三角函数或其它函数,这应根据数据分布的趋势作出选择。为了问题叙述的方便,将例1的数据表写成一般的形式tx1x2X3X4X5X6X7X8X9X10yy1y2y3y4y5y6y7y8y9y10一.线性拟合(线性模型)假设拟合函数是线性函数,即拟合函数的图形是一条平面上的直线。而表中的数据点未能精确地落在一条直线上的原因是实验数据的误差。则下一步是确定函数y=a+bx中系数Q和b各等于多少从几何背景来考虑,就是要以Q和b作为待定系数,确定一条平面直线使得表中数据所对应的10个点尽可能地靠近这条直线。一般来讲,数据点将不会全部落在这条直线上,如果第k个点的数据恰好落在这条直线上,则这个点的坐标满足直线的方程,即a+bxk=yk如果这个点不在直线上,则它的坐标不满足直线方程,有一个绝对值为|〃+bx「y|的差异(残差)。于是全部点处的总误差是£|a+bx-y|k=1F(a,b)=#(a+bx一y)2F(a,b)=#(a+bx一y)2k=1£2(a+bx-£2(a+bx-y)=0k=i这是关于未知数a和b的线性方程组。£2(a+bx一y)x=0k=1它们被称为法方程,又可以写成£xa+

k10a+£xkb=£yk

k£xa+

k£x2b=£xyk kkk=1 k=1求解这个二元线性方程组便得待定系数a和b,从而得线性拟合函数y=a+bx。下图中直线是数据的线性拟合的结果。3

3二.二次函数拟合(二次多项式模型)假设拟合函数不是线性函数,而是一个二次多项式函数。即拟合函数的图形是一条平面上的抛物线,而表中的数据点未能精确地落在这条抛物线上的原因是实验数据的误差。则下一步是确定函数y=a0+a1x+a2x2中系数a0、a1和a2各等于多少从几何背景来考虑,就是要以a0、a1和a2为待定系数,确定二次曲线使得表中数据所对应的10个点尽可能地靠近这条曲线。一般来讲,数据点将不会全部落在这条曲线上,如果第k个点的数据恰好落在曲线上,则这个点的坐标满足二次曲线的方程,即a0+a1xk+a2xk2=yk如果这个点不在曲线上,则它的坐标不满足曲线方程,有一个误差(残差)。于是全部点处的总误差用残差平方和表示F(a,a,a)=#[(a+ax+ax2)-y]2

0 1 2 0 1k2k kk=1这是关于a0、a1和a2的一个三元函数,合理的做法是选取a0、a1和a2,使得这个函数取极小值。为了求该函数的极小值点,令OF=0, -da宴2[(宴2[(a+ax+ax2)一y]=00 1k2kkk=1£2[(a+ax+ax2)一y]x=00 1k2kkkk=1£2[(a+ax+ax2)-y]x2=00 1k2kkk、k=1这是关于待定系数a0、a1和a2的线性方程组,写成等价的形式为TOC\o"1-5"\h\z10a+宴xa+宴x2a立y0 k1 k2 kk=1 k=1 k=1宴xa+宴x2a+宴x3a立xyk0 k1 k2 kkk=1

宴k=1 k=1 k=1

宴x2a+£x3a+£x4a=£x2yk0 k1 k2 kkk=1 k=1 k=1这就是法方程,求解这一方程组可得二次拟合函数中的三个待定系数。下图反映了例题所给数据的二次曲线拟合的结果三.数据的n次多项式拟合111098765246810121416映了例题所给数据的二次曲线拟合的结果三.数据的n次多项式拟合11109876524681012141640X1已知函数在个离散点处的函数值,假设拟合函数是n次多项式,则需要用所给数据来确定下面的函数y=a0+01X+°2X2+……+0nxn这里要做一个假设,即多项式的阶数n应小于题目所给数据的数目m(例题中可得数据的n次多项式拟合中拟合函数的系数应m=可得数据的n次多项式拟合中拟合函数的系数应巳kk=1fxk£x2k巳kk=1fxk£x2kk=1f1xn+1kk=1巳kk=1kk=1k=1+1k=1£「nk=1巳kk=1〉k从这一方程组可以看出,线性拟合方法和二次拟合方法是多项式拟合的特殊情况。从算法上看,数据最小二乘拟合的多项式方法是解一个超定方程组a+ax+ax2h faxn=yTOC\o"1-5"\h\z01121 n1 1a+ax+ax2h faxn=y/ .<0 12 22 n2 2(m>n)a+ax+ax2h faxn=y0 1m2m nm m的最小二乘解。而多项式拟合所引出的正规方程组恰好是用超定方程组的系数矩阵的转置矩阵去左乘超定方程组左、右两端所得。正规方程组的系数矩阵是一个病态矩阵,这类方程组被称为病态方程组。当系数矩阵或者是右端向量有微小的误差时,可能引起方程组准确解有很大的误差。为了避免求解这样的线性方程组,在做多项式拟合时可以将多项式中的各次幂函数做正交化变换,使得所推出的正规方程的系数矩阵是对角矩阵。四.点集{X1,X2,……,Xm}上的正交多项式系多项式q0(x),q1(x),q2(x),,qn(x)在点集{x1,x2,,xm}上的正交xM(xJi=1正交多项式系可以认为是幂函数系:1,X,X2,……,xn通过正交变换而得到的一组函数。正交多项式系构造的方法如下:q0(X)=1,q0(x)=x-a1,(a1=ExJn),i=1qk(x)=(x-ak)qk-1(x)-bkqk_2(x),(k=2,3,其中,°k=(xqk-1°k=(xqk-1'qk-1)/(qk-1'qk-1)=£xiqk-12i=1bk=(qk-1,qk-1)/(qk-2,qk-2)=Eqi=1(x)/£q2(x)

i k-1 ii=12(x)/£q2(x)k-1i k-2 ii=1五.用正交多项式系组成拟合函数的多项式拟合考虑拟合函数:①(x)=a0q0(x)+a1q〔(x)+…+anqn(x),将数据表XX1X2 ……. Xmf(X)%X2 …4中的数据代入,得超定方程aq(x)+aq(x)+aq(x)h haq(x)=yTOC\o"1-5"\h\zaq(x)+aq(x)+aq(x)h haq(x)=y/ 、<00 2 11 2 22 2 nn2 2 (m>n)aq(x)+aq(x)+aq(x)h haq(x)=y其系数矩阵为°m11m22m m”(弋)q1(" q2("… "»一q(x)q(x)q(x)…q(x)0 2 1 2 2 2 n2q(x)q(x)q(x)…q(x)0m 1m 2m nm

由于多项式q0(x),q1(x),q2(x), , qn(x)在点集{x1,x2, , xm}上的正交,所以超定方程组的系数矩阵中不同列的列向量是相互正交的向量组。于是用这一矩阵的转置矩阵去左乘超定方程组左、右两端得正规方程组筋。,q°)a°=(q。,y)(q,q)a=筋。,q°)a°=(q。,y)(q,q)a=(q,y)4iiii(qn,qjan=(qn,y)a”=(q(qn,qjan=(qn,y)a”=(qn,y)/(qn,qn)其中,(q,q)=Eq2(x),

kk ki其中,(q,q)=Eq2(x),

kk kii=i程都是一元一次方程可以直接写出原超方程组的最小二乘解,所以拟合函数为/、(q,y)/一(q,y) Jq,y),、①(x)=——0q(x)+—iq(x)+F——nq(x)(q,q)0 (q,q)i (q,q)n00 ii nn这一结果与用次多项式拟合所得结果在理论是完全一样的,只是形式上不同、算法实现上避免了解病态方程组。六.指数函数的数据拟合问题1:世界人中预测问题下表给出了本世纪六十年代世界人口的统计数据(单位:亿)年I960 1961 1962 1963 1964 1965 1966 1967 1968人口有人根据表中数据,预测公元2000年世界人口会超过60亿。这一结论在六十年代末令人难以置信,但现在已成为事实。试建立数学模型并根据表中数据推算出2000年世界人口的数量。根据马尔萨斯人口理论,人口数量按指数递增的规律发展。记人口数为N(t),则有指数函数N=ea+bt。现需要根据六十年代的人口数据确定函数表达式中两个常数a、b。为了计算方便,对表达式两边取对数,得lnN=a+bt,令y=lnN。于是y(t)=a+bt。⑴计算出表中人口数据的对数值yk=lnNk(k=1,2,……,9)⑵根据表中数据写出关于两个未知数a、b的9个方程的超定方程组(方程数多于未知数个数的方程组)a+btk=yk(k=1,2, , 9)其中,11=1960,12=1961,13=1962,……,19=1968;y1=,y2=ln, , y9=。⑶利用MATLAB解线性方程组Ax=c的命令A\c计算出a、b的值,并写出人口增长函数。利用人口增长函数计算出2000年世界人口数据:N(2000)七.多元线性函数的数据拟合问题2人的耗氧能力的数据拟合。人的耗氧能力y(ml/min,kg)与下列变量有关x1年龄x2体重x3英里跑步所用时间x4静止时心速x5跑步时最大心速某健身中心对31个自愿者进行测试,得到31组数据(每一组数据有6个数)Yk x1k x2k x3k x4k x5k (k=1,…31)令耗氧能力为因变量,其它的指标为自变量,建立线性模型y=a0+a1x1+a2x2+a3x3+a4x4+a5x5为了确定6个系数,利用已记录的数据得超定方程组a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论