资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,数学建模与数学试验,后勤工程学院数学教研室,拟 合,1/54,1,试验目标,试验内容,2、掌握用数学软件求解拟合问题。,1、直观了解拟合基本内容。,1、,拟合问题引例及基本理论。,4、,试验作业。,2、,用数学软件求解拟合问题。,3、,应用实例,2/54,2,拟 合,2.拟合基本原理,1.,拟合问题引例,3/54,3,拟 合 问 题 引 例 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,为待定系数,4/54,4,拟 合 问 题 引 例 2,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,已知一室模型快速静脉注射下血药浓度数据(t=0,注射300mg),求血药浓度随时间改变规律,c(t).,作半对数坐标系,(semilogy),下图形,MATLAB(aa1),5/54,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)距离,6/54,6,拟合与插值关系,函数插值与曲线拟合都是要依据一组数据结构一个函数作为近似,因为近似要求不一样,二者数学方法上是完全不一样。,实例:,下面数据是某次试验所得,希望得到X和 f之间关系?,MATLAB(cn),问题:,给定一批数据点,需确定满足特定要求曲线或曲面,处理方案:,若不要求曲线(面)经过全部数据点,而是要求它反应对象整体改变趋势,这就是,数据拟合,,又称曲线拟合或曲面拟合。,若要求所求曲线(面)经过所给全部数据点,就是,插值问题,;,7/54,7,最临近插值、线性插值、样条插值与曲线拟合结果:,8/54,8,曲线拟合问题最惯用解法线性最小二乘法基本思绪,第一步,:先选定一组函数,r,1,(x),r,2,(x),r,m,(x),m0),模型假设,1.机体看作一个房室,室内血药浓度均匀一室模型,模型建立,在此,d=300mg,t及c(t)在一些点处值见前表,需经拟合求出参数,k、v,32/54,32,用线性最小二乘拟合,c(t),MATLAB(lihe1),计算结果:,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),33/54,33,给药方案 设计,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,34/54,34,故可制订给药方案:,即:,首次注射375mg,,其余每次注射225mg,,注射间隔时间为4小时。,35/54,35,预计水塔流量,2、,解题思绪,3、,算法设计与编程,1、,问题,36/54,36,某居民区有一供居民用水园柱形水塔,普通能够经过测量其水位来预计水流量,但面临困难是,当水塔水位下降到设定最低水位时,水泵自动开启向水塔供水,到设定最高水位时停顿供水,这段时间无法测量水塔水位和水泵供水量通常水泵天天供水一两次,每次约两小时.,水塔是一个高12.2米,直径17.4米正园柱按照设计,水塔水位降至约8.2米时,水泵自动开启,水位升到约10.8米时水泵停顿工作,表1 是某一天水位测量统计,试预计任何时刻(包含水泵正供水时)从水塔流出水流量,及一天总用水量,37/54,37,38/54,38,流量预计解题思绪,拟合水位时间函数,确定流量时间函数,预计一天总用水量,39/54,39,拟合水位时间函数,测量统计看,一天有两个供水时段(以下称第1供水时段和第2供水时段),和3个水泵不工作时段(以下称第1时段t=0到t=8.97,第2次时段t=10.95到t=20.84和第3时段t=23以后)对第1、2时段测量数据直接分别作多项式拟合,得到水位函数为使拟合曲线比较光滑,多项式次数不要太高,普通在36因为第3时段只有3个测量统计,无法对这一时段水位作出很好拟合,40/54,40,2、,确定流量时间函数,对于第1、2时段只需将水位函数求导数即可,对于两个供水时段流量,则用供水时段前后(水泵不工作时段)流量拟合得到,而且将拟合得到第2供水时段流量外推,将第3时段流量包含在第2供水时段内,41/54,41,3、,一天总用水量预计,总用水量等于两个水泵不工作时段和两个供水时段用水量之和,它们都能够由流量对时间积分得到。,42/54,42,算法设计与编程,1、,拟合第1、2时段水位,并导出流量,2、,拟合供水时段流量,3、,预计一天总用水量,4、流量及总用水量检验,43/54,43,1、,拟合第1时段水位,并导出流量,设t,h为已输入时刻和水位测量统计(水泵开启4个时刻不输入),,第1时段,各时刻流量可以下得:,1),c1=polyfit(t(1:10),h(1:10),3);,%用3次多项式拟合第1时段水位,c1输出3次多项式系数,2),a1=polyder(c1);,%a1输出多项式(系数为c1)导数系数,3),tp1=0:0.1:9;,x1=-polyval(a1,tp1);,%x1输出多项式(系数为a1)在tp1点函数值(取负后边为正值),即tp1时刻流量,MATLAB(llgj1),4),流量函数为:,44/54,44,2、,拟合第2时段水位,并导出流量,设t,h为已输入时刻和水位测量统计(水泵开启4个时刻不输入),,第2时段,各时刻流量可以下得:,1),c2=polyfit(t(10.9:21),h(10.9:21),3);,%用3次多项式拟合第2时段水位,c2输出3次多项式系数,2),a2=polyder(c2);,%a2输出多项式(系数为c2)导数系数,3),tp2=10.9:0.1:21;,x2=-polyval(a2,tp2);,%x2输出多项式(系数为a2)在tp2点函数值(取负后边为正值),即tp2时刻流量,MATLAB(llgj2),4),流量函数为:,45/54,45,3、,拟合供水时段流量,在第1供水时段(t=911)之前(即第1时段)和之后(即第2时段)各取几点,其流量已经得到,用它们拟合第1供水时段流量为使流量函数在t=9和t=11连续,我们简单地只取4个点,拟合3次多项式(即曲线必过这4个点),实现以下:,xx1=-polyval(a1,8 9);%取第1时段在t=8,9流量,xx2=-polyval(a2,11 12);%取第2时段在t=11,12流量,xx12=xx1 xx2;,c12=polyfit(8 9 11 12,xx12,3);%拟合3次多项式,tp12=9:0.1:11;,x12=polyval(c12,tp12);%x12输出第1供水时段,各时刻流量,MATLAB(llgj3),拟合流量函数为:,46/54,46,在第2供水时段之前取t=20,20.8两点流水量,在该时刻之后(第3时段)仅有3个水位统计,我们用差分得到流量,然后用这4个数值拟合第2供水时段流量以下:,dt3=diff(t(22:24));%最终3个时刻两两之差,dh3=diff(h(22:24));%最终3个水位两两之差,dht3=-dh3./dt3;%t(22)和t(23)流量,t3=20 20.8 t(22)t(23);,xx3=-polyval(a2,t3(1:2),dht3);%取t3各时刻流量,c3=polyfit(t3,xx3,3);%拟合3次多项式,t3=20.8:0.1:24;,x3=polyval(c3,tp3);%x3输出第2供水时段,(外推至t=24)各时刻流量,MATLAB(llgj4),拟合流量函数为:,47/54,47,3、,一天总用水量预计,第1、2时段和第1、2供水时段流量积分之和,就是一天总用水量即使诸时段流量已表为多项式函数,积分能够解析地算出,这里仍用数值积分计算以下:,y1=0.1*trapz(x1);%第1时段用水量(仍按高,度计),0.1为积分步长,y2=0.1*trapz(x2);%第2时段用水量,y12=0.1*trapz(x12);%第1供水时段用水量,y3=0.1*trapz(x3);%第2供水时段用水量,y=(y1+y2+y12+y3)*237.8*0.01;%一天总用水量(),计算结果:,y1=146.2,y2=266.8,y12=47.4,y3=77.3,y=1250.4,MATLAB(llgjz),48/54,48,4、,流量及总用水量检验,计算出,各时刻流量,可用水位统计数值微分来检验用水量y1可用第1时段水位测量统计中下降高度968-822=146来检验,类似地,y2用1082-822=260检验,供水时段流量,一个,检验方法,以下:供水时段用水量加上水位上升值260是该时段泵入水量,除以时段长度得到水泵功率(单位时间泵入水量),而两个供水时段水泵功率应大致相等第1、2时段水泵功率可计算以下:,p1=(y12+260)/2;%第1供水时段水泵功率,(水量仍以高度计),tp4=20.8:0.1:23;,xp2=polyval(c3,tp4);%xp2输出第2供水时段,各时刻流量,p2=(0.1*trapz(xp2)+260)/2.2;%第2供水时段水泵功率,(水量仍以高度计),计算结果,:p1=154.5 ,p2=140.1,MATLAB(ll),49/54,49,计算结果,流量函数为:,50/54,50,流量曲线见图,n=(3,4),n=(5,6),51/54,51,练习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次多项式拟合,结果怎样?,52/54,52,练习2、,用电压V=10伏电池给电容器充电,电容器上t时刻电压为 ,其中V,0,是电容器初始电压,是充电常数。试由下面一组t,V数据确定V,0,,。,53/54,53,用非线性最小二乘拟合,c(t)-用lsq,curvefit,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,54/54,54,
展开阅读全文