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

下载本文档

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

文档简介

1、第第4 4讲讲 数据的插值拟合法数据的插值拟合法4.1 数据的拟合方法数据的拟合方法4.2 数据的插值方法数据的插值方法4.1 数据的拟合方法数据的拟合方法已知已知n个数据点(个数据点(xi, yi),i=1,2,n,xi互不相互不相同,如何寻求函数同,如何寻求函数 y=f(x) ,使,使f(x)在某种准则下在某种准则下与这与这n个点最接近?个点最接近? 拟合模型通过寻找简单的因果变量之间的数量关拟合模型通过寻找简单的因果变量之间的数量关系,对未知的情形作出预测与预报系,对未知的情形作出预测与预报.Remark :不必要求近似函数的曲线或曲面通过所有的不必要求近似函数的曲线或曲面通过所有的数据

2、点数据点.一、一、拟合原理拟合原理问问题题二、拟合模型的分类与方法二、拟合模型的分类与方法1. 直线拟合:直线拟合:用用一次函数或称线性函数一次函数或称线性函数拟合数据拟合数据.2. 曲线拟合:曲线拟合:若直线拟合效果不佳,可提高拟合精度,若直线拟合效果不佳,可提高拟合精度,用曲线拟合数据用曲线拟合数据. 常用的是常用的是二次函数二次函数、三次函数三次函数等高等高次多项式,有时也会用到次多项式,有时也会用到指数函数指数函数、对数函数对数函数、三三角函数角函数等等.3. 观察数据修匀:观察数据修匀:根据数据分布的总趋势根据数据分布的总趋势去剔除观察数去剔除观察数据中的偶然误差据中的偶然误差,即数

3、据修匀(或称数据光滑)问,即数据修匀(或称数据光滑)问题题.4. 分段拟合:分段拟合:在在不同段不同段上用上用不同的低次多项式不同的低次多项式进行拟合进行拟合.选择何种曲线拟合最好呢?选择何种曲线拟合最好呢? 首先可在坐标轴上画出数据的首先可在坐标轴上画出数据的散点图散点图,通过观察选择,通过观察选择几种合适的曲线分别拟合,通过比较,几种合适的曲线分别拟合,通过比较,哪条曲线的哪条曲线的最小二最小二乘指标乘指标J 最小即为最好的拟合曲线最小即为最好的拟合曲线.2211 ( )nniiiiiJf xy表示第表示第i个点的拟个点的拟合值与实际值的绝合值与实际值的绝对误差对误差第第i个点的个点的拟合

4、值拟合值第第i个点的个点的实际值实际值一、模型假设一、模型假设 假设所测数据均为抽样数据假设所测数据均为抽样数据.二、模型的分析与建立二、模型的分析与建立 先画出散点图,见下图先画出散点图,见下图.问题一问题一 【温度与电阻的关系模型温度与电阻的关系模型】有一个对温度敏感的有一个对温度敏感的电阻,现测得一组温度电阻,现测得一组温度t与电阻与电阻R的数据。见表的数据。见表9.1t20.532.751.07395.7R7658268739421032 试给出温度与电阻间的函数关系,并计算温度为试给出温度与电阻间的函数关系,并计算温度为60度度时的电阻值时的电阻值表表 9.1t=20.5 32.7

5、51 73 95.7;R=765 826 873 942 1032;plot(t,R,*)xlabel(t)ylabel(R)203040506070809010075080085090095010001050tR 观察上图不难发现:散点基本上在一条直线上,因观察上图不难发现:散点基本上在一条直线上,因此可假设电阻与温度满足此可假设电阻与温度满足一次函数(或称线性函数)一次函数(或称线性函数). 设拟合函数为设拟合函数为 y=a1+a2x12yaa x120.5132.7151173195.7A1121112212221331233244412455512511111TTyaa xyxyyaa

6、 xxayyaa xxAxbA AxA baxyyaa xxyyaa x12765826,8739421032axbat=20.5 32.7 51 73 95.7;R=765 826 873 942 1032;A=ones(5,1),t;b=R;a1a2=Aba1a2 = 702.0968 3.3987三、模型求解三、模型求解 可用可用Matlab计算计算.解法一:使用解法一:使用 regress() 函数函数t=20.5 32.7 51 73 95.7;R=765 826 873 942 1032;x=ones(5,1),t;y=R;b=regress(y,x,0.05)b = 702.09

7、68 3.3987解法二:使用解法二:使用 ployfit() 函数函数 cleart=20.5 32.7 51 73 95.7;R=765 826 873 942 1032;x=t;y=R; p=polyfit(x,y,1)p = 3.3987 702.0968即即a1=702.0968, a2=3.3987,因此拟合的函数为,因此拟合的函数为 y=702.0968+3.3987x将将x=60代入计算得代入计算得y=906203040506070809010075080085090095010001050tR shijinihecleart=20.5 32.7 51 73 95.7;R=76

8、5 826 873 942 1032;plot(t,R,*)xlabel(t);ylabel(R)hold ont=20:0.1:100;plot(t,702.0968+3.3987.*t)实际值与拟合图实际值与拟合图 regress() 函数主要用于函数主要用于线性线性拟合,在拟合时进行显著性拟合,在拟合时进行显著性检验,故称为回归函数检验,故称为回归函数. Polyfit() 函数主要是利用函数主要是利用多项式多项式拟合拟合. 它可以是线性或非它可以是线性或非线性线性. Remark: polyfit(x, y, m)表示用表示用m 次多项式拟合数据次多项式拟合数据x, y. regres

9、s() 函数与函数与polyfit() 函数的区别函数的区别问题问题2 【农业生产实验模型农业生产实验模型】在研究农业生产的试验中,在研究农业生产的试验中,为分析某地区土豆产量与化肥的关系,得到了每公顷地为分析某地区土豆产量与化肥的关系,得到了每公顷地的氮肥的施肥量与土豆产量的对应关系,见图的氮肥的施肥量与土豆产量的对应关系,见图9.2氮肥量氮肥量(kg)03467101135202259336404471土豆产土豆产量量(kg)15.18 21.36 25.72 32.29 34.03 39.45 43.15 43.46 40.83 30.75请根据表请根据表9.2的数据,给出土豆产量与氮肥

10、施肥量之间的关系的数据,给出土豆产量与氮肥施肥量之间的关系表表9.2一、模型假设一、模型假设 假设实验数据为抽样数据假设实验数据为抽样数据. 假设其他化肥用量不变假设其他化肥用量不变.二、模型分析与建立二、模型分析与建立 先用先用Matlab画出散点图画出散点图. 05010015020025030035040045050015202530354045x(dan fei liang)y(tu dou chan liang)clearx=0 34 67 101 135 202 259 336 404 471;y=15.18 21.36 25.72 32.29 34.03 39.45 43.15

11、43.46 40.83 30.75;plot(x,y,+)xlabel(x(dan fei liang)ylabel(y(tu dou chan liang)可以看出散点图呈二次曲线图形,可取如下拟合函数可以看出散点图呈二次曲线图形,可取如下拟合函数其中其中x表示氮肥量,表示氮肥量,y表示土豆产量。表示土豆产量。a,b,c为待定系数。为待定系数。2yaxbx c三、模型求解三、模型求解abc = -0.0003 0.1971 14.741620.00030.197114.7416yxxclear x=0 34 67 101 135 202 259 336 404 471;y=15.18 21.

12、36 25.72 32.29 34.03 39.45 43.15 43.46 40.83 30.75;abc=polyfit(x,y,2)x1=0:471;y1=polyval(abc,x1);plot(x,y,*,x1,y1)xlabel(x(dan fei liang)ylabel(y(tu dou chan liang)0501001502002503003504004505001015202530354045x(dan fei liang)y(tu dou chan liang)问题问题3 【血药浓度模型血药浓度模型】通过实验测得一次性快速静脉通过实验测得一次性快速静脉注射注射300m

13、g药物后的血药浓度数据,见表药物后的血药浓度数据,见表9.3t(h)0.250.511.523468y(ug/ml) 19.21 18.15 15.36 14.10 12.899.327.455.243.01 求血药深度随时间的变化规律求血药深度随时间的变化规律y(t)表表 9.3一、模型假设一、模型假设1. 假设假设 t=0 时,时,y=0.2. 假设实验数据为假设实验数据为抽样数据抽样数据,能反映血药浓度与时间,能反映血药浓度与时间的关系的关系二、模型分析与建立二、模型分析与建立 利用利用Matlab画出散点图画出散点图.0123456782468101214161820t(shi jia

14、n)y(nong du) cleart=0.25 0.5 1 1.5 2 3 4 6 8;y=19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01;plot(t,y,o)xlabel(t(shi jian)ylabel(y(nong du)由图可见,散点图大致呈由图可见,散点图大致呈负指数函数负指数函数形态,可令形态,可令 其中其中a, b0 为待定系数为待定系数.btya e三、模型求解三、模型求解解法一:将其线性化处理解法一:将其线性化处理. 将等式将等式 两边同时取对数,得两边同时取对数,得令令 则方程变为则方程变为btya elnln.ya

15、bt12ln,ln,yYabbb 12.Ybb t用用Matlab求解如下求解如下: cleart=0.25 0.5 1 1.5 2 3 4 6 8;y=19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01;Y=log(y);b=polyfit(t,Y,1)b = -0.2347 2.99430.234719.9709.tYe12.994319.9709,0.2347baeeb即即 b1=2.9943 b2=-0.2347则血药浓度与时间的关系为则血药浓度与时间的关系为01234567892468101214161820ty cleart=0.25

16、 0.5 1 1.5 2 3 4 6 8;y=19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01;Y=log(y);b=polyfit(t,Y,1);a=exp(b(2);b=-b(1);plot(t,y,*);hold ont=0:0.01:9;plot(t,a.*exp(-b.*t),r)xlabel(t)ylabel(y)解法解法2 使用非线性拟合函数使用非线性拟合函数nlinfit( ). 首先建立首先建立Fun7_1.m文件如下:文件如下:function y=Fun7_1(a,t)y=a(1)*exp(-a(2)*t);不妨取不妨取a

17、=20, 由由t=1时,时,y=15.36算出算出b=0.264取取 a0=20 0.264;用用Matlab求解如下求解如下 cleart=0.25 0.5 1 1.5 2 3 4 6 8;y=19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01;a0=20,0.264;a=nlinfit(t,y,fun7_1,a0)a =20.2413 0.24200.24220.2413.tYe0123456789246810121416182022ty shijijiefa2jiefa1t=0.25 0.5 1 1.5 2 3 4 6 8;y=19.21

18、18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01;plot(t,y,*);hold ona0=20,0.264;a=nlinfit(t,y,fun7_1,a0);t=0:0.01:9;plot(t,a(1).*exp(-a(2).*t)hold onplot(t,19.9714.*exp(-0.2347.*t),r)xlabel(t);ylabel(y)nlinfit函数的用法函数的用法 nlinfit函数采用的迭代法,其中函数采用的迭代法,其中a0为为迭代初值迭代初值. 若所给初值离最优解比较近,则迭代求出该最优解若所给初值离最优解比较近,则迭代求出该最

19、优解的概率就很高的概率就很高. 如何如何估计初值估计初值,暂无确切方法,暂无确切方法. 可以在得到解后可以在得到解后画出函数图形,看看实验点是否都在曲线附近画出函数图形,看看实验点是否都在曲线附近.若相若相差太大,可以考虑重新给出初值重新计算差太大,可以考虑重新给出初值重新计算.问题问题4一、模型假设一、模型假设 假设氯气与生产时间之间满足假设氯气与生产时间之间满足其中其中a, b为待定系数为待定系数.二、模型分析与建立二、模型分析与建立 此问题实质上是确定待定系数此问题实质上是确定待定系数a, b的值的值.三、模型求解三、模型求解 首先定义非线性函数首先定义非线性函数fun7_2.m文件:文

20、件:8(0.49),b xyaa efunction y=fun7_2(beta0,x)a=beta0(1);b=beta0(2);y=a+(0.49-a)*exp(-b*(x-8);然后在命令窗口中输入然后在命令窗口中输入clearx=8 8 10 10 10 10 12 12 12 12 14 14 14 16 16 16 18 18 20 20 20 20 22 22 24 24 24 26 26 26 28 28 30 30 30 32 32 34 36 36 38 38 40 42;y=0.49 0.49 0.48 0.47 0.48 0.47 0.46 0.46 0.45 0.43

21、 0.45 0.43 0.43 0.44 0.43 0.43 0.46 0.45 0.42 0.42 0.43 0.41 0.41 0.4 0.42 0.4 0.4 0.41 0.4 0.41 0.41 0.4 0.4 0.4 0.38 0.41 0.4 0.4 0.41 0.38 0.4 0.4 0.39 0.39;beta0=0.30 0.20;ab=nlinfit(x,y,fun7_2,beta0)ab = 0.3904 0.1028即即a=0.3904, b=0.1028.所以模型函数为所以模型函数为 0.1028(8)0.39040.0996.xye作业:用作业:用Matlab画出相

22、关画出相关图形图形.问题问题5一、模型假设一、模型假设 假设中国人口的变化满足一定规律假设中国人口的变化满足一定规律.二、模型分析、建立与求解二、模型分析、建立与求解 首先画出散点图首先画出散点图.1945195019551960196519701975198019851990199556789101112x(nian fen)y(ren kou shu)clearx=1949:5:1994;y=5.4 6 6.7 7 8.1 9.1 9.8 10.3 11.3 11.8;plot(x,y,*)xlabel(x(nian fen)ylabel(y(ren kou shu)三、模型求解三、模型求

23、解模型一:模型一:用用线性函数线性函数拟合拟合. 设我国人口数量满足以下模型设我国人口数量满足以下模型y=a+bx 其中其中a, b为待定系数为待定系数. 通过计算得通过计算得y=-283.232+0.148x模型二:模型二:用用指数函数指数函数拟合拟合. 设我国人口数量满足以下模型设我国人口数量满足以下模型y=aebx 其中其中a, b为待定参数为待定参数. 模型两边取对数得模型两边取对数得lny=lna+bxy=4.1444*10-15e0.0179xx=1949:5:1994;y=5.4 6 6.7 7 8.1 9.1 9.8 10.3 11.3 11.8;a=polyfit(x,y,1

24、);x1=1949:0.1:1994;y1=a(2)+a(1)*x1;b=polyfit(x,log(y),1);y2=exp(b(2)*exp(b(1)*x1);plot(x,y,*)hold onplot(x1,y1)hold onplot(x1,y2,r)xlabel(x(nian fen)ylabel(y(ren kou shu)194519501955196019651970197519801985199019955678910111213x(nian fen)y(ren kou shu) shijimodel1model2用两个模型分别计算相应年度的人口数及其误差见下表用两个模型分

25、别计算相应年度的人口数及其误差见下表.分别计算两个模型的最小二乘指标得分别计算两个模型的最小二乘指标得 从而线性模型更适合中国人口的增长从而线性模型更适合中国人口的增长.120.29150.7437.JJ4.2 数据的插值方法数据的插值方法若知道函数若知道函数y=f(x)在在n个互异的点个互异的点x1, x2, , xn的函的函数值数值 y1, y2, , yn . 如何估计此函数在另一点如何估计此函数在另一点a 的的函数值?函数值?一、一、插值原理插值原理问问题题 考虑构造一个过考虑构造一个过x1, x2, , xn的次数不超过的次数不超过n的多项的多项式式 y=Ln(x),使其满足,使其满

26、足 Ln(xk)=yk, k=1,2,n 然后用然后用Ln(a) 作为准确值作为准确值L(a)的近似值的近似值. 这种方法叫作这种方法叫作插值插值. Remark: 插值方法要求近似函数经过所有的已知点插值方法要求近似函数经过所有的已知点. 插值方法一般有:拉格朗日(插值方法一般有:拉格朗日(Lagrange)插值、分)插值、分段线性插值、埃尔米特(段线性插值、埃尔米特(Hermite)插值、样条插值以)插值、样条插值以及分形插值等及分形插值等.Matlab的插值函数分为的插值函数分为内部插值与外部插值内部插值与外部插值.内部插值:内部插值:要求已知点要求已知点x是单调的,且被插值点是单调的,

27、且被插值点xi不能超不能超过过x的范围的范围. 如如interp1( )、interp2( )、interpn( )等等. 而而griddata( )既可以计算既可以计算内部插值内部插值,也可以计算外,也可以计算外部插值部插值.二、二、插值方法插值方法 数据数据拟合拟合要求得到一个具体的要求得到一个具体的近似函数表达式近似函数表达式,而,而数据数据插值插值不一定得到近似函数的表达式,仅通过插不一定得到近似函数的表达式,仅通过插值方法值方法找到未知点对应的近似函数值找到未知点对应的近似函数值. 数据数据拟合拟合得到的近似函数表达式得到的近似函数表达式不一定要经过所有不一定要经过所有已知点已知点,

28、而数据,而数据插值插值要求近似函数要求近似函数经过已知的所有经过已知的所有数据点数据点.数据拟合与数据插值的区别数据拟合与数据插值的区别一、模型假设一、模型假设 假设飞机机翼截面下假设飞机机翼截面下轮廓的变化是轮廓的变化是连续连续的的.二、模型分析与建立二、模型分析与建立 画出散点图画出散点图05101500.511.522.5xy问题问题7从散点图很难观察出函数形式从散点图很难观察出函数形式, 用插值的方法用插值的方法. 由于只由于只有有一个变量一个变量且是且是单调单调的,可用的,可用一元插值函数一元插值函数interp1()进进行计算行计算.三、模型求解三、模型求解用用Matlab求解如下

29、:求解如下:x1=0 3 5 7 9 11 12 13 14 15;y1=0 1.2 1.7 2 2.1 2 1.8 1.2 1 1.6;x=0:0.1:15;y=interp1(x1,y1,x,spline)plot(x1,y1,.,x,y,r)gridtitle(spline)xlabel(x)ylabel(y)插值后的结果如下图显示插值后的结果如下图显示.05101500.511.522.5splinexy一、模型假设一、模型假设 假设电压的变化是连续的假设电压的变化是连续的.二、模型分析与建立二、模型分析与建立 画出散点图画出散点图.问题问题8 由散点图可观察出电容器两端的电压随充电时

30、由散点图可观察出电容器两端的电压随充电时间的关系大致呈间的关系大致呈对数关系对数关系,本题不要求给出函数形,本题不要求给出函数形式,因此同样使用插值的方法式,因此同样使用插值的方法.02468101266.577.588.599.51010.5xy三、模型求解三、模型求解用用Matlab求解如下:求解如下:0246810124567891011splinexy插值后结果如图所示插值后结果如图所示.function wenti8_2x1=1 2 3 4 6.5 9 12;y1=6.2 7.3 8.2 9 9.6 10.1 10.4;x=0:0.1:12;y=interp1(x1,y1,x,spl

31、ine)plot(x1,y1,.,x,y,r)gridtitle(spline)xlabel(x)ylabel(y)Remark: 一元插值函数一元插值函数interp1的基本调用格式为的基本调用格式为interp1(x, y, cx, method). 其中其中x, y分别表示已知数据点的横、纵坐标分别表示已知数据点的横、纵坐标. x必须必须单调,单调,cx为需要插值的横坐标为需要插值的横坐标,method为可选参数,为可选参数,可为以下四个值之一:可为以下四个值之一: 1)nearest最近邻点插值最近邻点插值 2)linear线性插值(可缺省)线性插值(可缺省) 3)spline三次样条

32、插值三次样条插值 4)cubic三次插值三次插值一、模型假设一、模型假设 假设温度的变化是连续的假设温度的变化是连续的.二、模型分析与建立二、模型分析与建立 首先画出散点图首先画出散点图.问题问题9从散点图难以观察出函数形式从散点图难以观察出函数形式, 下面用插值的方法下面用插值的方法.0246810125101520253035xy三、模型求解三、模型求解用用Matlab求解如下求解如下.x1=1:1:12;y1=5 8 9 15 25 29 31 30 22 25 27 24;x=3.2 6.5 7.1 11.7;y=interp1(x1,y1,x)plot(x1,y1,*,x,y,O)x

33、label(x)ylabel(y)y = 10.2000 30.0000 30.9000 24.90000246810125101520253035xy运行结果如图所示运行结果如图所示.问题问题10一、模型假设一、模型假设1.假设河床的深度是连续变化的假设河床的深度是连续变化的.2.假设紧靠河床铺设电缆,即电缆长度等于河床长度假设紧靠河床铺设电缆,即电缆长度等于河床长度.二、模型分析与建立二、模型分析与建立画出河床观测的散点图画出河床观测的散点图x=5:5:100;y=2.41 2.96 2.15 2.65 3.12 4.23 5.12 6.21 5.68 .4.22 3.91 3.26 2.

34、85 2.35 3.02 3.63 4.12 3.46 2.08 0;y1=10-y;plot(x,y1,*)axis(0 100 0 10)xlabel(x)ylabel(y)grid on 三、模型求解三、模型求解 利用利用分段线性插值分段线性插值,并可以在此基础上利用,并可以在此基础上利用梯形梯形法法求积分命令求积分命令trapz计算河床面积计算河床面积. 同时利用每段连续同时利用每段连续线长度之和来近似河床曲线长度线长度之和来近似河床曲线长度.0102030405060708090100012345678910 xyx=5:5:100;y=2.41 2.96 2.15 2.65 3.12 4.23 5.12 6.21 5.68 .4.22 3.91 3.26 2.85 2.35 3.02 3.63

温馨提示

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

评论

0/150

提交评论