好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第5讲-matlab数据拟合课件.ppt

28页
  • 卖家[上传人]:m****
  • 文档编号:606611913
  • 上传时间:2025-05-23
  • 文档格式:PPT
  • 文档大小:342.50KB
  • / 28 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,,,*,拟 合,2.拟合的基本原理,1.,拟合问题引例,,,1,,拟 合2.拟合的基本原理1. 拟合问题引例1,拟 合 问 题 引 例 1,温度,t(,0,C) 20.5 32.7 51.0 73.0 95.7,电阻,R(,) 765 826 873 942 1032,已知热敏电阻数据:,求60,0,C,时的电阻,R设,,R=at+b,a,b,为待定系数,,2,,拟 合 问 题 引 例 1温度t(0C) 20.5,曲 线 拟 合 问 题 的 提 法,已知一组(二维)数据,即平面上,n,个点,(x,i,,y,i,) i=1,…n,,寻求一个函数(曲线),y=f(x),,使,f(x),在某种准则下与所有数据点最为接近,即曲线拟合得最好x,y,,,y=f(x),(x,i,,y,i,),,i,,i,为点,(x,i,,y,i,) 与,曲线,y=f(x) 的距离,,3,,曲 线 拟 合 问 题 的 提 法已知一组(二维)数据,即平,拟合与插值的关系,,函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同的。

      实例:,下面数据是某次实验所得,希望得到X和 f之间的关系?,问题:,给定一批数据点,需确定满足特定要求的曲线或曲面,解决方案:,若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是,数据拟合,,又称曲线拟合或曲面拟合若要求所求曲线(面)通过所给所有数据点,就是,插值问题,;,,4,,拟合与插值的关系 函数插值与曲线拟合都是要根据一组,最临近插值、线性插值、样条插值与曲线拟合结果:,,5,,最临近插值、线性插值、样条插值与曲线拟合结果:5,用MATLAB解拟合问题,1、线性最小二乘拟合,2、非线性最小二乘拟合,,,6,,用MATLAB解拟合问题1、线性最小二乘拟合2、非线性最小二,用,MATLAB,作线性最小二乘拟合,1. 作多项式,f(x)=a,1,x,m,+ …+a,m,x+a,m+1,拟合,可利用已有程序,:,a=polyfit(x,y,m),2. 对超定方程组,可得最小二乘意义下的解用,3.多项式在x处的值y可用以下命令计算:,y=polyval(a,x),输出拟合多项式系数,a=[,a,1,, …a,m,,,,a,m+1,],(,数组)),输入同长度,的数组X,Y,拟合多项,式次数,,7,,用MATLAB作线性最小二乘拟合1. 作多项式f(x)=a1,即要求 出二次多项式:,中 的,使得:,例 对下面一组数据作二次多项式拟合,,8,,即要求 出二次多项式:中 的使得:例 对下面一组数据作二次,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)];,,A=R\y',,,解法1,.,用解超定方程的方法,2)计算结果,: A = -9.8108 20.1293 -0.0317,,9,,1)输入以下命令:解法1.用解超定方程的方法2)计算结果:,,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];,A=polyfit(x,y,2),z=polyval(A,x);,plot(x,y,'k+',x,z,'r') %作出数据点和拟合曲线的图形,2)计算结果: A = -9.8108 20.1293 -0.0317,解法,2.,用多项式拟合的命令,,10,,1)输入以下命令:2)计算结果: A = -9.810,1. lsqcurvefit,已知,数据点,:,xdata=,(xdata,1,,xdata,2,,,…,xdata,n,),,ydata=(ydata,1,,ydata,2,,…,ydata,n,),,,,用,MATLAB,作非线性最小二乘拟合,Matlab的提供了两个求非线性最小二乘拟合的函数:,lsqcurvefit,和,lsqnonlin,。

      两个命令都要先建立M-文件fun.m,在其中定义函数f(x),但两者定义f(x)的方式是不同的,可参考例题,.,,lsqcurvefit,用以求含参量x(向量)的向量值函数,F(x,xdata)=(F(x,xdata,1,),…,F(x,xdata,n,)),T,中的参变量x(向量),使得,,,11,,1. lsqcurvefit用MATLAB作非线性最小二乘拟,,输入格式为:,(1),x = lsqcurvefit (‘fun’,x0,xdata,ydata),;,(2),x =lsqcurvefit (‘fun’,x0,xdata,ydata,options);,(3),x = lsqcurvefit (‘fun’,x0,xdata,ydata,options,’grad’);,(4),[x, options] = lsqcurvefit (‘fun’,x0,xdata,ydata,…);,(5),[x, options,funval] = lsqcurvefit (‘fun’,x0,xdata,ydata,…);,(6),[x, options,funval, Jacob] = lsqcurvefit (‘fun’,x0,xdata,ydata,…);,fun是一个事先建立的定义函数F(x,xdata) 的M-文件,,自变量为x和xdata,说明:,x = lsqcurvefit (‘fun’,x0,xdata,ydata,options);,迭代初值,已知数据点,选项见无,约束优化,,12,,输入格式为:fun是一个事先建立的定义函数F,,lsqnonlin,用以求含参量x(向量)的向量值函数,,f(x),=(f,1,(x),f,2,(x),…,f,n,(x)),T,,,中的参量x,使得,,,,最小。

      其中,f,i,(x)=,f,(x,xdata,i,,ydata,i,),=F(x,xdata,i,)-ydata,i,,2. lsqnonlin,已知数据点: xdata=,(xdata,1,,xdata,2,,,…,xdata,n,),ydata=,(ydata,1,,ydata,2,,…,ydata,n,),,13,,lsqnonlin用以求含参量x(向量)的向,输入格式为:,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’,x0,…);,说明:,x=,lsqnonlin,(‘fun’,x0,options);,fun是一个事先建立的定义函数,f(x),的M-文件,,自变量为x,迭代初值,选项见无,约束优化,,14,,输入格式为:说明:x= lsqnonlin (‘fun’,x,,,例2 用下面一组数据拟合,中的参数a,b,k,该问题即解最优化问题:,,15,,例2 用下面一组数据拟合,,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),,F(x,tdata)= ,x=(a,b,k),解法1,.,用命令lsqcurvefit,,16,,1)编写M-文件 curvefun1.m2)输入命令,3)运算结果为,:,f =0.0043 0.0051 0.0056 0.0059 0.0061,0.0062 0.0062 0.0063 0.0063 0.0063,x = 0.0063 -0.0034 0.2542,4)结论,:,a=0.0063, b=-0.0034, k=0.2542,,17,,3)运算结果为:4)结论:a=0.0063, b=-0.00,,解法,2,,用命令lsqnonlin,,,f(x)=F(x,tdata,ctada)=,x=(a,b,k),1),编写M-文件 curvefun2.m,,function,f=curvefun2(,x,),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];,f=x(1)+x(2)*exp(-0.02*x(3)*tdata)- cdata,2)输入命令:,,x0=[0.2,0.05,0.05];,x=lsqnonlin(,'curvefun2',,x0),f= curvefun2(x),函数curvefun2的自变量是x,cdata,和,tdata是已知参数,故应将cdata tdata的值写在curvefun2.m中,,18,,解法 2 用,3)运算结果为,,f =1.0e-003 *(0.2322 -0.1243 -0.2495 -0.2413,-0.1668 -0.0724 0.0241 0.1159 0.2030 0.2792,x =0.0063 -0.0034 0.2542,可以看出,两个命令的计算结果是相同的,.,4)结论,:,即拟合得a=,0.0063 b=-0.0034 k=0.2542,,19,,3)运算结果为可以看出,两个命令的计算结果是相同的.4)结论,电阻问题,温度,t(,0,C) 20.5 32.7 51.0 73.0 95.7,电阻,R(,) 765 826 873 942 1032,例. 由数据,拟合,R=a,1,t+a,2,方法1.用命令,polyfit(x,y,m),得到,a,1,=3.3940, a,2,=702.4918,方法2.直接用,结果相同。

      20,,电阻问题 温度t(0C) 20.5 32.7,,在实验方面,对某人用快速静脉注射方式一次注入该药物300mg后,在一定时刻t(小时)采集血药,测得血药浓度c(ug/ml)如下表:,,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,要设计给药方案,必须知道给药后血药浓度随时间变化的规律从实验和理论两方面着手:,,21,,在实验方面,对某人用快速静脉注射方式一次注入该,3.血液容积v, t=0注射剂量d, 血药浓度立即为d/v.,2.药物排除速率与血药浓度成正比,比例系数 k(>0),模型假设,1. 机体看作一个房室,室内血药浓度均匀——一室模型,模型建立,,在此,d=300mg,t及c(t)在某些点处的值见前表,需经拟合求出参数,k、v,,22,,3.血液容积v, t=0注射剂量d, 血药浓度立即为d/v.,用线性最小二乘拟合,c(t),计算结果:,d=300;,t=[0.25 0.5 1 1.5 2 3 4 6 8];,c=[19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01];,y=log(c);,a=polyfit(t,y,1),k=-a(1),v=d/exp(a(2)),程序:,用非线性最小二乘拟合,c(t),,23,,用线性最小二乘拟合c(t)计算结果:d=300;程序:用非线,给药方案 设计,c,,,,c,2,c,1,0,,t,设每次注射剂量D, 间隔时间,,血药浓度,c(t),应c,1,,c(t),,c,2,初次剂量D,0,应加大,给药方案记为:,2、,1、,计算结果:,给药方案:,c,1,=10,c,2,=25,k=0.2347,v=15.02,,24,,给药方案 设计cc2c10t 设每次注射剂量D, 间隔时间,故可制定给药方案:,即:,首次注射375mg,,其余每次注射225mg,,注射的间隔时间为4小时。

      25,,故可制定给药方案:即:25,练习1,用给定的多项式,如y=x,3,-6x,2,+5x-3,产生一组数据(x,i,,y,i,,i=1,2,…,n),再在y,i,上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用rands产生N(0,1)分布随机数),然后用x,i,和添加了随机干扰的y,i,作的3次多项式拟合,与原系数比较如果作2或4次多项式拟合,结果如何?,,26,,练习1 用给定的多项式,如y=x3-6x2+5x-3,产,练习2、,用电压V=10伏的电池给电容器充电,电容器上t时刻的电压为 ,其中V,0,是电容器的初始电压, 是充电常数试由下面一组t,V数据确定V,0,, 27,,练习2、用电压V=10伏的电池给电容器充电,电容器上t时刻,用非线性最小二乘拟合,c(t)-用lsqcurvefit,2、主程序lihe2.m如下,clear,tdata=[0.25 0.5 1 1.5 2 3 4 6 8];,cdata=[19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01];,x0=[10,0.5];,x=lsqcurvefit(,'curvefun3',,x0,tdata,cdata);,f=curvefun3(x,tdata),x,,,MATLAB(lihe2),1、用M-文件,curvefun3.m,定义函数,function,f=curvefun3(x,tdata),d=300,f=(x(1)\d)*exp(-x(2)*tdata),% x(1)=v; x(2)=k,,,,,28,,用非线性最小二乘拟合c(t)-用lsqcurvefit2、主,。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.