您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 2004D饮酒驾车-讲解
温州医科大学-刘婷2004年全国大学生数学建模竞赛D题饮酒驾车问题的探讨讲解人:刘婷注意:本人版权所有,心血结晶,不得外传温州医科大学-刘婷赛题背景•据报载,2003年全国道路交通事故死亡人数为10.4372万,其中因饮酒驾车造成的占有相当的比例。•针对这种严重的道路交通情况,国家质量监督检验检疫局2004年5月31日发布了新的《车辆驾驶人员血液、呼气酒精含量阈值与检验》国家标准。温州医科大学-刘婷新标准•驾驶人员血液中的酒精含量大于或等于20毫克/百毫升,小于80毫克/百毫升为饮酒驾车•血液中的酒精含量大于或等于80毫克/百毫升为醉酒驾车温州医科大学-刘婷问题1:•大李在中午12点喝了一瓶啤酒,下午6点检查时符合新的驾车标准•在吃晚饭时他又喝了一瓶啤酒,凌晨2点检查时却被定为饮酒驾车•为什么喝同样多的酒,两次检查结果会不一样呢?解释此现象!–分析:第二次喝酒的初始状态是第一次喝酒的酒精残余,故造成第二次超标–先用题目所给数据拟合出浓度随时间变化的函数温州医科大学-刘婷喝了3瓶啤酒后多长时间内驾车就会违反上述标准,请下列情况下回答该问题:•酒是在很短时间内喝的;–直接用第一问的模型求解•酒是在较长一段时间(比如2小时)内喝的–分析:此处模型需在快速喝酒模型基础上改进问题2:温州医科大学-刘婷问题3•怎样估计血液中的酒精含量在什么时间最高–需分析酒量的影响,饮酒时间的影响–给出图表对比结果问题4•根据你的模型论证:如果天天喝酒,是否还能开车–可做适当的设定,每天何时喝,喝多少问题5•根据你做的模型并结合新的国家标准写一篇短文,给想喝一点酒的司机如何驾车提出忠告–此处仅需在前面几问的结果基础上给出适当总结和建议,不需花太多时间温州医科大学-刘婷所给数据(1)体液占体重的65%~70%,血液占体重的7%左右,药物或酒精在血液或体液中浓度基本一致–由此可估算血液体积,建立房室模型–实际上通过后面的计算发现,此数据可直接拟合得到准确值,而无需根据百分比估计(2)体重约70kg的短时2瓶啤酒后,血液中酒精浓度的测量数据为温州医科大学-刘婷本题特征:•数据量不大,有类似模型•问题的信息不完全,需要补充(啤酒酒精量等)•没有用到太深的数学知识(虽然有微分方程,但是有类似的套用,并用软件求解)•不需要更专业的计算机编程技术(基本上是相应的函数调用,无需自己编相应的算法程序)温州医科大学-刘婷选择主要模型——两房室模型(假设身体分成两部分)•吸收室、中心室•其中吸收室是肠胃,中心室是血液和体液•酒精进入吸收室,由吸收室进入中心室,中心室向外排出酒精•有一些也直接简化为一室,即中心室,需要检验其正确性温州医科大学-刘婷吸收室()中心室给酒ft1()xt1k1(),ctV2k吸收排出符号说明:t——时刻(小时)1()xt——t时刻吸收室的酒精量1k——中心室的酒精吸收速率系数2k——中心室的酒精排出速率系数0g——短时1瓶啤酒进入吸收室的酒精量1()yt——t时刻中心室的酒精量()ct——t时刻中心室的酒精浓度V——中心室的容积(百毫升)温州医科大学-刘婷模型假设2、酒精从吸收室进入中心室的速率与吸收室的酒精量成正比,比例系数为k15、考虑到大李6点接受检查不可能立刻喝酒,故假设大李晚饭喝酒时间为晚8点1、中心室的容积V不变3、酒精从中心室向外排出的速率与中心室的酒精量成正比,比例系数为k24、适度饮酒的前提下,k1、k2与饮酒量无关,是常数温州医科大学-刘婷吸收室酒精的减少速度与酒精量成正比,比例系数为k1,则11110()(),(0)dxtkxtxNgdt=−=其中,g0为1瓶啤酒的酒精量,N为瓶数对于中心室,其酒精的减少速度与酒精量(考虑到此处既有吸收也有排出)成正比,比例系数为k2,则111211()()(),(0)0dytkxtkytydt=−=问题1模型建立与求解:温州医科大学-刘婷11110()(),(0)dxtkxtxNgdt=−=111211()()(),(0)0dytkxtkytydt=−=若手算,则先把上式求解出x1(t)再代入下式中y1(t).或直接利用matlab求微分方程符号解的函数求解:[x1,y1]=dsolve('Dx1=-k1*x1','Dy1=k1*x1-k2*y1','x1(0)=N*g0','y1(0)=0')[y,how]=simple([x1,y1])%化简表达式问题1模型建立与求解:执行得到X1=(N*g0)/exp(k1*t)y1=-(N*g0*k1*(1/exp(k1*t)-1/exp(k2*t)))/(k1-k2)温州医科大学-刘婷11110()(),(0)dxtkxtxNgdt=−=111211()()(),(0)0dytkxtkytydt=−=将解用数学符号解表示为:110()ktxtNge−=2101112()()ktktNgkeeytkk−−−=−则血液中酒精浓度函数为:210112()()()ktktNgkeectVkk−−−=−问题1模型建立与求解:温州医科大学-刘婷问题1模型建立与求解:210112()(),()ktktNgkctkeekVkk−−=−=−其中用题目所给的喝两瓶啤酒的浓度数据作出拟合,由拟合效果来验证此模型的有效性f=@(k,x)k(3).*(exp(-k(2).*x)-exp(-k(1).*x));x=[0.25,0.5,0.75,1,1.5,2,2.5,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16];y=[30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10,7,7,4];k0=[2,1,80];%初始值的选取上可以先代一个点坐标,看几个参数之间的关系,取符合的作为初值,比随机初值要好k=nlinfit(x,y,f,k0)%也可用lsqcurvefit,调用格式不同而已plot(x,y,‘k+’,0:0.01:18,f(k,0:0.01:18),‘k’),axis([0,18,0,90])温州医科大学-刘婷拟合出的参数依次为:2.00790.1855114.43250.18552.0079()114.4325()ttctee−−=−决定系数R=0.9857,拟合度很高,证明了模型的有效性温州医科大学-刘婷现在来验证第一问的两种情况、作出解释:0.18552.0079()57.2163*N*()ttctee−−=−0112kN()NgkkVkk=−又因为中,与成比例,故注意:刚才得到的表达式是以2瓶啤酒的数据拟合的,将t=6代入得血液酒精浓度(6)18.799320c=故第一次检测未超标温州医科大学-刘婷第二次检测时,不仅有晚饭喝过酒的酒精,也有中午喝过酒的酒精残余,则累加可得(6)(14)18.79934.262423.061720cc+=+=故第二次检测超标这是简单的处理手法,如果用模型解决,则修改模型初始值即可11110()(),(0)dxtkxtxNgdt=−=111211()()(),(0)0dytkxtkytdty=−=10ksNge−+210112()ksksNgkeekk−−−+−其中:s为距离上次喝酒的时间温州医科大学-刘婷21220()(),(0)dxtkxtdtxNg=−=212222()()(),(0)0dytkxtkytdty=−=10ksNge−+210112()ksksNgkeekk−−−+−二次喝酒模型求解程序为:[x2,y2]=dsolve(‘Dx2=-k1*x2’,‘Dy2=k1*x2-k2*y2’,‘x2(0)=N*g0*(1+exp(-k1*s))’,‘y2(0)=-(N*g0*k1*(1/exp(k1*s)-1/exp(k2*s)))/(k1-k2)’);[y,how]=simple([x2,y2])结果为:(N*g0*(1/exp(k1*s)+1))/exp(k1*t),-(N*g0*k1*(1/exp(k1*(s+t))-1/exp(k2*(s+t))+1/exp(k1*t)-1/exp(k2*t)))/(k1-k2)]温州医科大学-刘婷21220()(),(0)dxtkxtdtxNg=−=212222()()(),(0)0dytkxtkytdty=−=10ksNge−+210112()ksksNgkeekk−−−+−二次喝酒模型整理得:1120()(1)ksktxtNgee−−=+221101212()((1)(1))ksktksktNgkyteeeekk−−−−=+−+−注意:这里的参数都是已知的,即比例系数是不变的温州医科大学-刘婷221101212()((1)(1))()ksktksktNgkcteeeekkV−−−−=+−+−则由此解出二次喝酒t小时后的酒精浓度为:0112121,57.2163,2.0079,0.1855,8,6()gkNkkkstkkV=======−将如下各参数和变量代入得到2(6)23.0618c=注意:由表达式和计算结果均可验证叠加计算的简便方法是正确的,但是不代表此方法应该舍弃,此模型在第四问每天喝酒模型中有应用温州医科大学-刘婷第一问的结果效果图:温州医科大学-刘婷喝了3瓶啤酒后多长时间内驾车就会违反上述标准•酒是在很短时间内喝的;–直接用第一问的短时喝酒模型求解问题2的模型建立与求解:0.18552.0079()57.2163**()3,()2011.5888ttctNeeNctt−−=−===在模型中,令求解方程得即若短时喝下3瓶啤酒,则11.59小时内驾车都会超标程序:t=2:0.01:20;c=57.2163*3*(exp(-0.1855.*t)-exp(-2.0079.*t))-20;plot(t,c)%通过画图观察方程解的大概位置%得到方程求解时初值可取为11fsolve('ff',11)functionf=ff(t)%函数是另存为函数文件的f=57.2163*3*(exp(-0.1855.*t)-exp(-2.0079.*t))-20;温州医科大学-刘婷喝了3瓶啤酒后多长时间内驾车就会违反上述标准•酒是在较长一段时间(比如2小时)内喝的–分析:此处模型需在快速喝酒模型基础上改进问题2的模型建立与求解:11110()(),(0)dxtkxtxNgdt=−=111211()()(),(0)0dytkxtkytydt=−=快速喝酒模型假设酒是在一段时间T内匀速喝下,则速率为0,0()0,NgtTftTtT⎧≤⎪=⎨⎪≥⎩温州医科大学-刘婷•酒是在T小时内喝的,则0tT时,模型改进为:问题2的模型建立与求解:1111()()(0)dxtkxtdtx=−=111211()()(),(0)0dytkxtkytdty=−=0,NgT+0,程序:[x1,y1]=dsolve(‘Dx1=-k1*x1+N*g0/T’,‘Dy1=k1*x1-k2*y1’,‘x1(0)=0’,‘y1(0)=0’)[y,how]=simple([x1,y1])%化简表达式结果:-(N*g0*(1/exp(k1*t)-1))/(T*k1),(N*g0*(k1-k2-k1/exp(k2*t)+k2/exp(k1*t)))/(T*k2*(k1-k2))温州医科大学-刘婷1011()(1)ktNgxteTk−=−21011122111()()()ktktNgkeeytTkkkk−−−−=−−则血液中酒精浓度函数为:2101122111()()()ktktNgkeectTkkVkk−−−−=−−问题2的模型建立与求解:•酒是在T小时内喝的,则0tT时,模型改进为:1111()()(0)dxtkxtdtx=−=111211()()(),(0)0dytkxtkytdty=−=0,NgT+0,整理得:温州医科大学-刘婷血液中酒精浓度函数为:2101122111()()()ktktNgkeectTkkVkk−−−−=−−问题2的模型建立与求解:•酒是在T小时内喝的,则0tT时,01121
本文标题:2004D饮酒驾车-讲解
链接地址:https://www.777doc.com/doc-5395993 .html