您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 饮酒驾车模型及matlab实现
数学实验7.5饮酒驾车微分方程模型及非线性拟合实验数学实验问题数学实验大李喝下啤酒后,酒精先从肠胃吸收进入血液和体液中,然后从血液和体液向体外排出。可以建立二室模型,将肠胃看成吸收室,将血液与体液看成中心室(见下图)。吸收室x1(t)中心室c1(t),Vk1k2吸收排出吸收和排出的过程都可以简化成一级反应来处理,加起来得到体液内酒精吸收和排出过程的数学模型。因为考虑到时短时间内喝酒,所以忽略喝酒的时间,可使初始条件得以简化。根据上面问题要求,可归结为如下问题:1、建立数学模型,并解释大李在中午12点喝1瓶啤酒后,在下午6点检查时体内血液中的酒精含量小于20mg/10ml,符合“驾车标准”。2、建立数学模型,并解释大李在晚饭时再喝1瓶啤酒后,在凌晨2点检查时体内血液中的酒精含量不小于20mg/100ml,不符合“饮酒驾车”的标准。7.5.2问题的分析数学实验酒精量是指纯酒精的质量,单位为毫克(mg);酒精含量是指纯酒精的浓度,单位是毫克/百毫升(mg/100ml);t:时刻(h);x1(t):在时刻t吸收室(肠胃)内的酒精量(mg);k1:酒精从吸收室进入中心室的速率系数;g0:在短时间内喝下1瓶啤酒后吸收室内的酒精量(mg);y1(t):在时刻t中心室(血液和体液)的酒量(mg);K2:酒精从中心室向体外排出的速率系数;V:中心室的容积(100ml).7.5.3符号说明数学实验(4)考虑到大李在下午6点接受检查,之后由于离开检查地点以及停车等待等原因耽误了一定时间,因此假定大李在晚8点吃晚饭(即大李从第一次接受检查到第二次喝酒之间相隔了2个小时)大李在短时间内喝下2瓶啤酒后,酒精先从吸收室(肠胃)进入中心室(血液与体液),然后从中心室向体外排出。忽略喝酒时间,并假设:(1)吸收室在初始时刻t=0时,酒精量立即为2g0,酒精从吸收室进入中心室的速率(吸收室在单位时间内酒精量的减少量)与吸收室的酒精量成正比,比例系数为k1.(2)中心室的容积V保持不变;在初始时刻t=0时,中心室酒精量为0;在任意时刻,酒精从中心室向体外排出的速率(中心室的单位时间内酒精量的减少量)与中心室的酒精量成正比,比例系数为k2.(3)在大李(体重为70kg)适度饮酒没有酒精中毒的前提下,假设k1和k2都是常数,与酒精量无关。7.5.4模型假设数学实验根据假设(1),吸收室的酒精量x1(t)满足微分方程初值问题)1.5.7()0()()(01111Ngxtxkdttdx为酒精总量(N表示啤酒的瓶数,在本问题中N=2)0Ng其中,根据假设(2),中心室的酒精量y1(t)满足微分方程初值问题:)2.5.7(0)0()()()(112111ytyktxkdttdy数学实验根据(7.5.1)和(7.5.2)得到微分方程组初值问题:0)0()0()()()()()(10112111111yNgxtyktxkdttdytxkdttdx解上述微分方程组初值问题,其matlab程序如下:[x1,y1]=dsolve('Dx1=-k1*x1','Dy1=k1*x1-k2*y1','x1(0)=N*g(0)','y1(0)=0')[y,how]=simple([x1,y1])y=[N*g(0)*exp(-k1*t),k1*N*g(0)*(exp(-k2*t)-exp(-k1*t))/(k1-k2)]程序运行结果:程序求解结果整理为:即:解为)()()()(1212110101tktktkeekkkNgtyeNgtx返回数学实验,得:Vtytc)()(1记式(7.5.3)可以写成212110,)(kkkkVkNgk其中)4.5.7(,)()(12tktkeektc)3.5.7()()()(122110tktkeekkVkNgtc当前任务就是,确定k,k1,k2数学实验用MATLAB的函数nlinfit(非线性最小二乘拟合),根据赛题所给数据拟合式(7.5.4)的参数k1,k2和k.此问题的MATLAB程序如下:f=@(k,x)k(3).*(exp(-k(2).*x)-exp(-k(1).*x));x=[0.250.50.7511.522.533.544.55678910111213141516];y=[3068758282776868585150413835282518151210774];k0=[2,1,80];%参数的初值k=nlinfit(x,y,f,k0)plot(x,y,'r*',0:0.01:18,f(k,0:0.01:18),'k')xlabel(‘时间(h)')ylabel(‘酒精含量')title(‘血液中酒精含量的拟合图')axis([018090])legend(‘原始数据’,‘拟合曲线')7.5.6数据拟合与拟合误差数学实验参数k1,k2和k的拟合结果为:k=2.00790.1855114.432524;4325.114,1855.0,0079.221kkk即:0246810121416180102030405060708090时间(h)酒精含量血液中酒精含量的数据拟合图原始数据拟合曲线7.5.6数据拟合与拟合误差数学实验代入式(7.5.4),得到;4325.114,1855.0,0079.221kkk把)5.5.7(,)(4325.114)(0079.21855.02tteetc参数的初值设定思路:由于在x=0附近有xex1,所以:;80,1,221kkk]80,1,2[0k所以取即根据原始数据表,当t=1时,有80)(21kkktkkkeektctktk)()()(2112fc=@(x)k(3).*(exp(-k(2).*x)-exp(-k(1).*x));figure(2)plot(x,y-fc(x),'ro',[018],[00],'k')axis([0,18,-10,10])MATLAB描绘原始数据与拟合数据的拟合误差图MATLAB描绘原始数据与拟合数据的拟合误差图7.5.6数据拟合与拟合误差数学实验7.5.6数据拟合与拟合误差结果如图:024681012141618-10-8-6-4-20246810拟合误差图时间(h)酒精含量拟合误差(mg)从原始数据拟合图、拟合误差图观察发现拟合效果比较好。在拟合误差图中只有一个误差在-10附近,其他误差值都在(-6,6)之内,且分布比较均匀,这说明引入的假设和建立的模型比较合理。数学实验7.5.7模型应用7.5.7.1问题(1)的应用在问题(1)中,大李在中午12点喝了1瓶啤酒(与“参考数据”中短时间内喝下2瓶啤酒相比,喝酒量减少一半),此时:2163.5721,1kkN根据假设(3),k1和k2保持不变,根据式(7.5.5),大李的血液中酒精含量的经验数学模型为:)6.5.7(,)(2163.57)(0079.21855.0tteetc把t=6代入式(7.5.6),可以得到大李在下午6点被检查时血液中酒精含量为:)100/(207993.18)6(mlmgc因此,此时大李符合“驾车标准”(不属于“饮酒驾车”)。数学实验7.5.7模型应用7.5.7.2问题(2)的应用在问题(2)中,大李在晚饭时又喝了1瓶啤酒,根据模型假设中的“忽略喝酒时间”,假设这瓶啤酒是在短时间内喝的。由于问题中没有给出具体的晚饭喝酒时间,假设在晚上s点吃饭时大李又喝了1瓶啤酒,注意s6因为大李不可能在下午6点被检查的同时喝酒设)(),(22tytx分别是晚饭喝酒胃里和血液里的酒精量。在晚上s点吃晚饭时大李又喝了1瓶啤酒,此时胃里和血液里已有酒精,所以在晚饭喝酒时,胃里的酒精量为设)(),(22tytx分别是晚饭喝酒胃里和血液里的酒精量。设)(),(22tytx分别是晚饭喝酒胃里和血液里的酒精量。在晚上s点吃晚饭时大李又喝了1瓶啤酒,此时胃里和血液里已有酒精,所以在晚饭喝酒时,胃里的酒精量为)()0(102sxNgx这里)(1sx是第一次喝酒后s时刻在胃里残留的酒精量这里)(1sx是第一次喝酒后s时刻在胃里残留的酒精量数学实验7.5.7模型应用根据假设(3),k1和k2保持不变,则有:)()0()()0()()()()()(1210222212212syysxNgxtyktxkdttdytxkdttdx)()21()()(12110202skskskeekkkNgsyeNgsx根据前面的结果有:)()21()0()1()0()()()()()(1211020222212212skskskeekkkNgyeNgxtyktxkdttdytxkdttdx模型求解数学实验7.5.7模型应用用MATLAB编程求解如下:[x2,y2]=dsolve('Dx2=-k1*x2','Dy2=k1*x2-k2*y2','x2(0)=N*g(0)*(1+exp(-k1*s))','y2(0)=(k1*N*g(0)/(k1-k2))*(exp(-k2*s)-exp(-k1*s))')[y,how]=simple([x2,y2])运行结果:y=[N*g(0)*(1+exp(-k1*s))*exp(-k1*t),k1*N*g(0)*(exp(-k2*t)+exp(-k2*t-k2*s)-exp(-k1*t)-exp(-k1*t-k1*s))/(k1-k2)]即:])1()1[()21()()1()(11221110202tksktksktkskeeeekkkNgsyeeNgtx数学实验7.5.7模型应用,则有:Vtystc)(),(2记)7.5.7(])1()1[()21(),(112210tksktkskeeeekkVkNgstc可变为:)8.5.7(])1()1[(),(1122tksktkskeeeekstc其中2110,)21(kkkkVkNgk代入(7.5.8),得到晚s点吃晚饭把;2163.57,1855.0,0079.221kkk把;2163.57,1855.0,0079.221kkk大李又喝了1瓶啤酒时,酒精含量与时间(时间t从第二次喝酒开始算,即t=14-s)的关系为:)9.5.7(])1()1[(2163.57),(0079.20079.21855.01855.0tstseeeestc数学实验7.5.7模型应用根据假设(4),大李在晚8点吃晚饭,把s=8,t=6代入式(7.5.9),得大李在凌晨2点被检查时血液中酒精含量为:)100/(200618.23)8,6(mlmgc此时属于“饮酒驾车”。当然,人们也许更关心大李晚上“何时”再喝1瓶啤酒后,在凌晨2点检查时体内血液中的酒精含量等于20mg/100ml(即饮酒驾车的临界时间)。此问题的MATLAB程序如下:x=fzero('57.2163*((1+exp(-0.1855*(14-x))).*exp(-0.1855*x)-(1+exp(-2.0079*(14-x))).*exp(-2.0079*x))-20',7)T=14-xx=6.9584T=7.0416运行结果为:因此,大李在晚上7.0416时之后再喝1瓶啤酒,在凌晨2点检查时体内血液中的酒精含量就会大于20mg/100ml(这样大李在晚上8点再喝1瓶啤酒,在凌晨2点被检查时就会被定为“饮酒驾车”)。数学实验7.5.7模型应用综合以上解释了:(1)大李在中午12点喝了1瓶啤酒,下午6点检查时血液中的酒精含量为18.799320(mg/10ml),符合“驾车标准”。(2)紧接着大李在晚饭时(晚8点)时又喝了1瓶啤酒,在凌晨2点检查时血液中的酒精含量23.061820(mg/100ml),被定为饮酒驾车。结论:数学实验7.5.8模型的评价与推
本文标题:饮酒驾车模型及matlab实现
链接地址:https://www.777doc.com/doc-4130896 .html