探索饮酒与醉酒驾车的联系
摘要
本文解决的是一个司机安全驾驶与饮酒的问题,目的是通过建立一个数学模型来分析司机如何适量饮酒不会影响正常的安全驾驶。我们通过分析啤酒中酒精在人体体内胃肠与体液之间的交换机理,分别建立了在短时间喝酒与长时间喝酒两种情况下,胃肠和体液中的酒精含量的微分方程模型,使我们广大司机朋友对饮酒驾车的问题与现象更加的清楚明了。
对于问题一:通过参照题所给的数据以及相关文献的分析求出短时间内喝酒的相关方程,并运用Mathematica中的解微分方程与拟合函数使方程更加符合该题的模型,从而得到短时间内酒精的含量变化为c(t)k1D0ektekt。进
k1k2V0
2
1
而探究小张两次喝酒的达标情况。
对于问题二:在问题一的基础上,我们对问题二进行了深究,把饮酒问题分成饮酒过程中与饮酒后人体内的酒精含量变化两部分。通过具体的分析与模型的建立,从而得到各时段人体内的酒精含量的变化为: ① 当t0,T时,c(t)
D0D0
(1ek2t)(ek2tek1t) Tk2V0T(k2k1)V0
② 当t>T时
(1ek1T)D0
c(t)[ek2(tT)ek1(tT)]
(k1k2)TV0
D0D0k2T
(1e)(ek2Tek1T
T(k2k1)V0Tk2V0
)ek2(tT)
最后,通过观察各时段人体内的酒精含量来判断是否喝一瓶酒只会饮酒驾驶不会醉酒驾驶。
对于问题三:在问题二所建立的模型的基础上,把具体的饮酒数值代入,从而可得到饮酒后能够安全驾驶的相应时间。
对于问题四:给司机汇报一下喝大量酒对身体的危害与酒后驾车的危险程度。结合模型,给一些想天天喝酒的司机朋友喝酒后驾车时间上的规定的一些建议。
关键词:Mathematica,数据拟合,微分方程,酒精含量,时间
1.问题重述
新的国家标准规定:驾驶人血液中的酒精含量大于(等于)20毫克/100毫升、小于80毫克/100毫升的行为属于饮酒驾车,含量大于(等于)80毫克/100毫升的行为属于醉酒驾车。
小张在中午12点喝了一瓶啤酒,下午6点检查时符合新的驾车标准,紧接着他在吃晚饭时又喝了一瓶啤酒,为了保险起见他呆到凌晨2点才驾车回家,又一次遭遇检查时却被定为饮酒驾车。
结合参考数据讨论以下问题: 1. 对小张碰到的情况做出解释;
2. 有人说只喝1瓶啤酒后开车不可能被定为醉酒驾车,最多只是饮酒驾车,你认为呢?
3. 根据模型论证:如果天天喝酒,是否还能开车?
4. 根据你做的模型并结合新的国家标准写一篇短文,给想喝一点酒的司机如何驾车提出忠告。
2.模型的假设与符号说明
2.1模型的基本假设
(1) 每瓶啤酒的酒精含量、体积基本相同.
(2) 酒精进入人体后, 不考虑其它因素对酒精的分解作用. (3) 酒精从胃转移到体液的速率与胃中的酒精浓度成正比. (4) 酒精从胃转移到体液的速率与胃中的酒精浓度成正比.
(5) 如果在很短时间内饮酒, 认为是一次性饮入, 中间的时间差不计. (6) 将慢速饮酒看作是一个匀速过程. (7) 小张的体重为70kg.
(8) 人体在各个时段对酒的消化能力一致,且没有因为身体、工作等其它因素
影响其消化.
2.2符号说明
v0:酒精从体外进入胃的速率(单位:mg/h). v1t:酒精从胃进入体液的速率(单位:mg/h).
v2t:酒精从体液排出体外的速率(单位:mg/h). f1t:胃里的酒精含量(单位:mg). f2t:体液里的酒精含量(单位:mg).
V0:体液的容积(单位:100ml). k1:酒精从胃转移到体液的转移速率系数
k2:酒精从体液排除体外的转移速率系数 ct:体液中的酒精浓度(单位:mg/100ml).
D0:所喝酒的酒精量(短时间喝酒状态下胃中的初始酒精量) (单位:mg). T: 长时间匀速喝酒所用的时间或达到浓度最大值所需时间(单位:h)
3.问题分析
3.1问题一的分析
我们就参考数据,做出合理的假设模型,然后结合数据拟合确定模型,再通过模型分别求出小张下午6点和凌晨2点的血液中酒精含量,从而解释小张所碰到的情况。
3.2问题二的分析
结合模型来计算短时间和长时间喝1瓶啤酒后血液中酒精含量能达到的最大值,然后用最大值来和新国家标准来对比,从而判断属于醉酒驾车还是饮酒驾车,而且并计算出喝酒后多长时间才能正常驾车。 3.3问题三的分析
结合模型来观察短时间喝多少酒能全天候开车和长时间喝啤酒后血液中酒精含量的变化,然后结合饮酒驾车的标准来判断在一天当中是否仍存在不是饮酒驾车的时间段,进而判断天天喝酒是否还能开车。
3.4问题四的分析
先给司机汇报一下喝大量酒对身体的危害,且酒后驾车的危险程度,并结合模型给司机一些每天的饮酒量,速度的快慢以及饮酒后多久才能再开车的一些建议。
4.模型的建立与求解
4.1模型的建立
用f1t、f2t分别表示酒精在胃、体液中的酒精含量,ct表示体液中的酒精浓度。根据酒精从胃进入体液的速率v1t与胃中的酒精含量f1t成正比,速率系数为k1,酒精从体液排出体外的速率v2t与胃中的酒精含量f2t成正比,速率系数为k2。
4.1.1短时间迅速喝酒的模型 1)可以对胃建立如下方程:
v1t=k1f1t
⑴
df1tv0v1t ⑵ dt
将⑴式代入⑵式可得:
df1tv0-k1f1t ⑶ dt
通过Mathematica求微分可得(附录1):
f1tC1ek1t
当t=0时, f10C1将⑴式代入⑷式可得:
v0
⑷ k1
v0
⑸ k1
v0k1t
v1tk1Ce ⑹ 1k1
联合⑸和⑹式可得:
v1tk1f10v0ek1tv0 ⑺
2)又可以对体液(因为血液中的酒精含量与在体液中的大体是一样的,所以
直接用体液的数据代替血液的)建立如下方程:
v2t=k2f2t ⑻
df2tv1tv2t ⑼ dt
将⑺式和⑻式代入⑼式可得:
df2tk1f10v0ek1tv0-k2f2t ⑽ dt
通过Mathematica求微分可得(附录2):
f2tC2ek2t
v0k1f10v0k1t
e ⑾ k2k1k2
v0k1f10v0
⑿
k2k1k2
当t=0时, f20C2
联合⑿式和⑾式可得:
v0k1f10v0k2tv0k1f10v0k1t
f2tf0ee ⒀ 2
k2k1k2k2k1k2
当酒是短时间喝时,有f10D0,f200,v00 代入上面数据到⒀可得:
c(t)
f2t
k1VD0kek2tek1tk
12V0所以我们把短时间喝酒的模型定为:
c(t)
f2tk1D0Vek2tek1t
k
1k2V0
4.1.2长时间匀速喝酒的模型
当酒时在较长时间内喝时,我们可以进行分段讨论。 1)当t0,T时,同样可以得到:
df1(t)
v0k1f1(t)
dt
⒁ df(t)2dt
v1(t)k2f2(t)
当t=0时,有: vD0
0
T
,f1(0)0,f2(0)0 将式子代入上面的方程组可得:
v0f(1t)(1k1t
ke)1 ⒂ f(t)cek2tv0k1v10v0ek1t
22k2k2k1根据上式可得:
c(t)f2tcv0kf(0)v0k1t V2ek2t
11e0V0k2V0(k2k1)V0
即
c(t)
D0TkV(1ek2t)D0
(k(ek2tek1t) 20T2k1)V0
所以
⒃ ⒄
c(T)
D0D0
(1ek2T)(ek2Tek1T) ⒅ Tk2V0T(k2k1)V0
当t>T时,v00,则此时血液中酒精的浓度与时间关系式如下;
c(t)
k1f1(t)
[ek2(tTek1(tT)]c(T)ek2(tT) ⒆
(k1k2)V0
综上所述,可得,当tT时
k1f1(T)
[ek2(tT)ek1(tT)]c(T)ek2(tT)c(t)
(k1k2)V0
D0D0
(1ek2T)(ek2Tek1T)c(T)
Tk2V0T(k2k1)V0
D0
(1ek1T)f1(T)
k1T
⒇
所以我们把长时间喝酒的模型定为: ③ 当t0,T时,c(t)④ 当t>T时,
(1ek1T)D0c(t)[ek2(tT)ek1(tT)]
(k1k2)TV0
D0D0k2Tk2Tk1Tk2(tT)
(1e)(ee)e
TkVT(kk)V20210
D0D0
(1ek2t)(ek2tek1t) Tk2V0T(k2k1)V0
4.2问题的解决 4.2.1问题一:
根据4.1.1所建立短时间喝酒模型,可知人体血液中的酒精含量与时间的函数关系式如下:
k1D0
c(t)(ektekt)
2
1
(k1k2)V0
用Mathematica通过参考数据(两瓶酒)拟合可得(附录3) :拟合效果如下图
k1D0D
也可得0 104.013 113.836,k1 2.10676,k2 0.181791
k1k2V0V0即:ct 113.836e 0.181791 te-2.10676 t
又因为小张每次只喝一瓶酒,初始酒精量只为喝两瓶酒时的一半,可得
k1D0
56.91k81, 2.1067k62, 0.1817 91
k1k2V0
所以我们把短时间喝酒(一瓶酒)的模型定为:
ct 56.918e 0.181791 te-2.10676 t
假设t=0时对应的是小张第一次喝酒的中午12点,当t=6时,可以求得
c(6) 19.1223mg/100ml,小于20mg/100ml,所以第一次检查时没有被认定为饮酒
驾驶。小张喝一瓶酒后血液中的酒精含量与时间的关系图(1) (附录4):
图(1)
由于大李是在下午6点接受检测,由于时间所需,我们假设他6点15分吃完晚饭并喝完一瓶啤酒,根据前面的假设并借用4.1.1中的⑴式和⑺式,我们可
以计算t=6.25时,
D6.25D0
6.25
v1tdt 0.155107 D0,f26.25c(6.25)100V0 1827.27V0mg
接着,我们将数据代入⒀式中可得到新模型:
ct 18.2727e 0.181791 t 65.7461e 0.181791 te 2.10676 t 根据修正后的模型并以6点15分对应为t=0,
mg/100ml大于国家新规当凌晨两点并被抽检时即t=7.75时,c(t) 20.5356
定的20mg/100ml,所以第二次虽然比第一次相对检查时间晚了一个多小时,但
检查时,酒精仍会超标,见图(2) (附录5):
图(2):
所以从分析中可知,虽然小张是喝相同量的酒,且第二次检查时比第一次延长了1个多小时,但由于第二次喝酒时体内还有第一次的残留酒精,在第二次喝酒7.75小时后,酒精含量大于20mg/100ml,所以第二次会被认定是饮酒驾车。由此可知,一个人人体内血液中的酒精含量不仅与所喝的酒量有关,而且还与喝酒者体内血液中是否残留酒精含量有关。
4.2.2问题二:
对于该问题,我们分为短时间喝酒和长时间喝酒两种情况来讨论
(1)当酒是短时间内喝下时,根据已建立的模型,可知,人体血液中的酒精含量与时间的函数关系式为:
k1D0
c(t)(ektekt)
2
1
(k1k2)V0
因为喝的是一瓶啤酒,根据 4.2.1中的计算可以把短时间喝酒(一瓶酒)的模型定为:
ct 56.918e -2.10676 te 0.181791 t
根据模型作出血液中的酒精含量与时间的关系图像,如图(3):
图(3)
通过图(3)观察可知,快速喝一瓶酒后开车不可能被定为醉酒驾车,最多只是饮酒驾车。我们用Mathematica的计算出具体值可知(附录6),当t= 0.237458或t= 5.75312时,c(t)=20mg/100ml。当t=1.27277时,酒精含量最大为: c(t)=41.2639mg/100ml。
通过图像的观察和数值的对比,我们可以确定驾驶员在较短时间内喝下一瓶啤酒时,是不会被定为醉酒驾车,在喝完酒后的0.237458到 5.75312小时内驾车是属于饮酒驾车。
(2)当酒是长时间喝下时,根据已建立的模型,可知,人体血液中的酒精含量与时间的函数关系式为: ⑤ 当t0,T时,c(t)⑥ 当t>T时,
(1ek1T)D0
c(t)[ek2(tT)ek1(tT)]
(k1k2)TV0
D0D0
(1ek2T)(ek2Tek1T)ek2(tT)
T(k2k1)V0Tk2V0
D0D0
(1ek2t)(ek2tek1t) Tk2V0T(k2k1)V0
根据4.2.1中的计算可知
D0
(两瓶酒的初始含量),所以一瓶酒初始含 104.013
V0
量对应的
D0
,k2 0.181791 52.006,k12.10676
V0
我们假设这一瓶酒喝了一个小时,即T=1.
根据模型作出血液中的酒精含量与时间的关系图像,如图(4) (附录7):
图(4)
通过图(4)观察可知,喝一瓶酒后开车不可能被定为醉酒驾车,最多只是饮酒驾车。我们用Mathematica的计算出具体值可知(附录8), 当t= 6.26065时,c(t)=20mg/100ml
当t= 1.86481时,酒精含量最大为:c(t)= 40.6352mg/100ml。
通过图像的观察和数值的对比,我们可以确定驾驶员在较长时间(一个小时)内喝下一瓶啤酒时,是不会被定为醉酒驾车,在喝完酒后的5.26065小时内驾车是属于饮酒驾车。
4.2.3问题三:
对于问题三,我们分为短时间喝少量的酒全天候都能开车和长时间喝不同量的酒分别隔多久才能开车两个方面来讨论。 (1)根据4.1中的模型c(t)
k1D0
由于k1,k2,V0是个常数,ek2tek1t可知,
k1k2V0
血液中酒精含量与D0成正比,也就是与喝下的酒精量为正比。又引用4.2.2中的(1)中在喝一瓶酒的情况下所计算的结果t=1.27277时,酒精含量最大为:c(t)= 41.2638mg/100ml,现在我们要实现喝了N瓶酒后血液酒精含量最
41.26391
。可大小于c(t)=20mg/100ml,所以我们可以列出以下关系式:
20N
以解得N= 0.484684(瓶)
通过计算,我们可以得出,在之前没有残留酒精的情况下,每次只要喝不超过0.484684瓶酒,那么任何时刻都能开车,也就是说,如果天天喝酒不超过0.484684瓶酒,任何时候都可以开车! (2)根
c(t)
据4.2中的模型:当
t0,T
时,
D0D0
(1ek2t)(ek2tek1t) Tk2V0T(k2k1)V0
当t>T时,
(1ek1T)D0
c(t)[ek2(tT)ek1(tT)]
(k1k2)TV0
D0D0k2Tk2Tk1Tk2(tT)
(1e)(ee)e
TkVT(kk)V21020
由于k1,k2,V0是个常数,血液中酒精含量与D0成正比,也就是与喝下的酒精量为正比。现在我们要实现喝了N瓶酒后多长时间血液酒精含量小于
c(t)=20mg/100ml,现在假设每喝一瓶酒都需要半个小时,也就是T=0.5N,我们分别取N=1,2,3,4,5,6代入模型中运算可以得出表(1)的结果: N(瓶)
喝完酒后能正常开车的时间(h) 开始喝酒到能正常开车的时间(h)
表(1)
通过表(1)我们也可以了解到天天喝不同量的酒需要消化的时间也不同,考虑到喝酒的量多时,还会残留到第二天,以及考虑司机要保持充足的睡眠时间,所以建议需要天天喝酒且开车的司机尽量不要喝超过一瓶酒,而且要等过了饮酒驾车的阶段后才能驾车。
4.2.3问题四:
酒后驾车危害多
——给想喝点酒驾车的司机们的忠告
现在私家车越来越多,由于醉酒驾车而产生的交通事故也越来越多。据报载,2010年全国道路交通事故死亡人数为65225人,其中因饮酒驾车造成的占有相当大的比例。酒后驾车发生事故的比率为没有饮酒情况下的 16倍,几率高达 27%,为了你的安全,请你注意以下信息: 一.人的健康饮酒量
肝脏处理酒精的能力,按体重每公斤每小时计算可处理 0.125ml.体重约70公斤的人1小时能处理 8.75ml,即相当于能处理清酒约60毫升,啤酒约 200ml,威士忌酒约 20ml.现在综合对酒的处理能力与免疫学调查,可以得出以下结论:
健康的安全性饮纯酒量每日为 50ml 以内, 有害量是每日 100ml, 危险量是每日 150ml 以上.
二.过量饮酒对人体的危害
如果饮酒过量或长期酗酒,会导致麻痹脑部神经,影响视觉,听觉,使人反应迟钝,肌肉失去控制能力,口齿不清等。酒精能破坏肝脏功能,易造成胃发炎,严重
1 5.5
2 9.6
3 12.1
4 14.0
5 15.4
6 16.7
6.0 10.6 13.6 16.0 17.9 19.7
时可造成胃溃疡和十二指肠溃疡。尤其是我们的司机朋友,更要引起高度的重视与关注。
虽然饮酒驾车危害甚多,但并不是说一点都不能喝酒.甚至还可以天天喝,但一定要注意控制自己的饮酒量和出车时间,结合上面的信息,注意以下几点,想喝一点酒的司机们也能过一把酒瘾.
1.一次性饮酒的酒精量越大, 到达标时的时间会越长, 所以你等待时间的长短应根据你饮酒量的多少而定.比如说一次饮一瓶啤酒,大约 5.5个小时后酒精含量就可达标; 一次性喝 2 瓶啤酒,大概要等9.6个小时后才能达标;而一次性喝 3 瓶啤酒,则大概要等 12.1个小时后才能达标.
2.连续饮酒次数越多,每次间隔时间应越长.以第一题为例,第一次饮啤酒一瓶, 过六个小时达标,但第二次饮同样多的酒,同样再过六个,酒精含量增加到 28.2273 毫克/百毫升,要使第二次饮酒后,不超标,则至少应在 7.89539 小时后再驾车.
5.模型的评价、优化以及推广
本模型以微分方程为底,在进行一系列假设以及计算化简后建立起了短时间喝酒和长时间喝酒两种血液酒精含量的模型,并通过数据拟合的方法计算出一瓶酒的酒精含量与体液体积的比例关系,比直接采用某型号的啤酒规格来计算酒精量和某个百分比来计算体液体积的误差有所降低,更加接近事实。而且简化了一些影响不大的因数,使模型得以简化,方便计算。
本模型还是有可以优化的地方,比如在参考数据的基础上再去测量更多人喝酒后血液酒精含量的数据,可以让数据拟合的误差更小,更接近事实;去了解一下正常人消化酒精的饱和点,再建立一条喝酒超过饱和点的数学模型。
本模型适用于大部分人在不疯狂喝酒情况下的血液酒精含量的预测,我们可以去测量更多不同体重,不同饮酒量的人喝酒后血液酒精含量数据,这样我们也就能推广出更多更精确的模型去预测喝酒后血液酒精含量。
6.参考文献
[1] 吴朝平, 高 峰, 徐小红,饮酒驾车问题的数学模型,渝西学院学报( 自然科学版) ,第4 卷 第2 期,2005 年6月
[2] 李涛,贺勇军,《应用数学篇》,北京:电子工业出版社,2000年 [3] 姜启源,谢金星,《数学建模》,北京:高等教育出版社,2003年
[4] 杨启凡,方道元,《数学建模》,杭州:浙江大学出版社,1999年 [5] 张双德, 《医用高等数学[M] 》, 天津: 天津科学技术出版社, 1999年 [6] 萧树铁, 《大学数学实验[M]》 , 北京: 高等教育出版社, 1999年
附录
(附录1)
In: DSolve[f1'[t]vo-k1 f1[t],f1[t],t] Out: {{f1[t]vo/k1+-k1 t C[1]}} (附录2)
In: c=DSolve[f2'[t](k1 f1[0]-v0) E-k1 t+v0-k2 f2[t],f2[t],t]
Out: {{f2[t]-k2 t C[1]+-(k1-k2) t-k2 t ((k1 t v0)/k2+(v0-k1 f1[0])/(k1-k2))}} In: Simplify[c]
Out: {{f2[t]-k2 t ((k2 t v0)/k2+C[1]+((-k1+k2) t (v0-k1 f1[0]))/(k1-k2))}} (附录3) In:
a={{0.25,32},{0.5,70},{0.75,77},{1,83},{1.5,82},{2,78},{2.5,69},{3,68},{3.5,59},{4,52},{4.5,51},{5,41},{6,38},{7,35},{8,28},{9,25},{10,19},{11,16},{12,13},{13,11},{14,8},{15,7},{16,5}} Out:
{{0.25,32},{0.5,70},{0.75,77},{1,83},{1.5,82},{2,78},{2.5,69},{3,68},{3.5,59},{4,52},{4.5,51},{5,41},{6,38},{7,35},{8,28},{9,25},{10,19},{11,16},{12,13},{13,11},{14,8},{15,7},{16,5}}
In: a2=ListPlot[a,PlotStyle {RGBColor[1,0,0],PointSize[0.015]}]
Out: {k12.10676,k20.181791,A113.836} In:
a3=Plot[113.[1**********]977`(E-0.[**************]92`t-E-2.[**************]7`t),{t,0,24},AxesLabel{
In: Show[a2,a3,AxesLabel{
(附录4) In:
Plot[56.918(E-0.[**************]92`t-E-2.[**************]7`t),{t,0,24},AxesLabel{
(附录5)
In:
Plot[18.2727E-0.[**************]92`t+65.7461(E-0.[**************]92`t-E-2.[**************]7`t),{t,0,8},AxesOrigin{0,0},AxesLabel{
(附录6)
In: FindRoot[56.918(E-0.[**************]92`t-E-2.[**************]7`t)20,{t,1}] Out: {t0.237458}
In: FindRoot[56.918(E-0.[**************]92`t-E-2.[**************]7`t)20,{t,6}] Out: {t5.75312}
In: Maximize[56.918(E-0.[**************]92`t-E-2.[**************]7`t),t>0,t] Out: {41.2641,{t1.27277}} (附录7)
In: g1=Plot[((1-E-2.[**************]` )
104.[1**********]042`/2)/(2.[**************]`-0.[**************]`) (E-0.[**************]` (t-1)-E-2.[**************]` (t-1)
)+((104.[1**********]042`/2)/0.[**************]`
(1-E-0.[**************]` )+(104.[1**********]042`/2)/(0.[**************]`-2.[**************]`) (E-0.[**************]` -E-2.[**************]` )) E-0.[**************]` (t-1)
,{t,1,24},AxesOrigin{0,0},AxesLabel{
In: g2=Plot[(104.[1**********]042`/2)/0.[**************]` (1-E-0.[**************]` t
)+(104.[1**********]042`/2)/(0.[**************]` -2.[**************]`) (E-0.[**************]` t-E-2.[**************]` t
),{t,0,1},AxesOrigin{0,0},AxesLabel{
In: Show[g1,g2] Out:
(附录8)
In: FindRoot[((1-E-2.[**************]` )
104.[1**********]042`/2)/(2.[**************]`-0.[**************]`) (E-0.[**************]` (t-1)-E-2.[**************]` (t-1)
)+((104.[1**********]042`/2)/0.[**************]`
(1-E-0.[**************]` )+(104.[1**********]042`/2)/(0.[**************]`-2.[**************]`) (E-0.[**************]` -E-2.[**************]` )) E-0.[**************]` (t-1)20,{t,6}] Out: {t6.26065}
In: Maximize[((1-E-2.[**************]` )
104.[1**********]042`/2)/(2.[**************]`-0.[**************]`) (E-0.[**************]` (t-1)-E-2.[**************]` (t-1)
)+((104.[1**********]042`/2)/0.[**************]`
(1-E-0.[**************]` )+(104.[1**********]042`/2)/(0.[**************]`-2.106761853
663044`) (E-0.[**************]` -E-2.[**************]` )) E-0.[**************]` (t-1),t>0,t] Out: {40.6352,{t1.86481}}
探索饮酒与醉酒驾车的联系
摘要
本文解决的是一个司机安全驾驶与饮酒的问题,目的是通过建立一个数学模型来分析司机如何适量饮酒不会影响正常的安全驾驶。我们通过分析啤酒中酒精在人体体内胃肠与体液之间的交换机理,分别建立了在短时间喝酒与长时间喝酒两种情况下,胃肠和体液中的酒精含量的微分方程模型,使我们广大司机朋友对饮酒驾车的问题与现象更加的清楚明了。
对于问题一:通过参照题所给的数据以及相关文献的分析求出短时间内喝酒的相关方程,并运用Mathematica中的解微分方程与拟合函数使方程更加符合该题的模型,从而得到短时间内酒精的含量变化为c(t)k1D0ektekt。进
k1k2V0
2
1
而探究小张两次喝酒的达标情况。
对于问题二:在问题一的基础上,我们对问题二进行了深究,把饮酒问题分成饮酒过程中与饮酒后人体内的酒精含量变化两部分。通过具体的分析与模型的建立,从而得到各时段人体内的酒精含量的变化为: ① 当t0,T时,c(t)
D0D0
(1ek2t)(ek2tek1t) Tk2V0T(k2k1)V0
② 当t>T时
(1ek1T)D0
c(t)[ek2(tT)ek1(tT)]
(k1k2)TV0
D0D0k2T
(1e)(ek2Tek1T
T(k2k1)V0Tk2V0
)ek2(tT)
最后,通过观察各时段人体内的酒精含量来判断是否喝一瓶酒只会饮酒驾驶不会醉酒驾驶。
对于问题三:在问题二所建立的模型的基础上,把具体的饮酒数值代入,从而可得到饮酒后能够安全驾驶的相应时间。
对于问题四:给司机汇报一下喝大量酒对身体的危害与酒后驾车的危险程度。结合模型,给一些想天天喝酒的司机朋友喝酒后驾车时间上的规定的一些建议。
关键词:Mathematica,数据拟合,微分方程,酒精含量,时间
1.问题重述
新的国家标准规定:驾驶人血液中的酒精含量大于(等于)20毫克/100毫升、小于80毫克/100毫升的行为属于饮酒驾车,含量大于(等于)80毫克/100毫升的行为属于醉酒驾车。
小张在中午12点喝了一瓶啤酒,下午6点检查时符合新的驾车标准,紧接着他在吃晚饭时又喝了一瓶啤酒,为了保险起见他呆到凌晨2点才驾车回家,又一次遭遇检查时却被定为饮酒驾车。
结合参考数据讨论以下问题: 1. 对小张碰到的情况做出解释;
2. 有人说只喝1瓶啤酒后开车不可能被定为醉酒驾车,最多只是饮酒驾车,你认为呢?
3. 根据模型论证:如果天天喝酒,是否还能开车?
4. 根据你做的模型并结合新的国家标准写一篇短文,给想喝一点酒的司机如何驾车提出忠告。
2.模型的假设与符号说明
2.1模型的基本假设
(1) 每瓶啤酒的酒精含量、体积基本相同.
(2) 酒精进入人体后, 不考虑其它因素对酒精的分解作用. (3) 酒精从胃转移到体液的速率与胃中的酒精浓度成正比. (4) 酒精从胃转移到体液的速率与胃中的酒精浓度成正比.
(5) 如果在很短时间内饮酒, 认为是一次性饮入, 中间的时间差不计. (6) 将慢速饮酒看作是一个匀速过程. (7) 小张的体重为70kg.
(8) 人体在各个时段对酒的消化能力一致,且没有因为身体、工作等其它因素
影响其消化.
2.2符号说明
v0:酒精从体外进入胃的速率(单位:mg/h). v1t:酒精从胃进入体液的速率(单位:mg/h).
v2t:酒精从体液排出体外的速率(单位:mg/h). f1t:胃里的酒精含量(单位:mg). f2t:体液里的酒精含量(单位:mg).
V0:体液的容积(单位:100ml). k1:酒精从胃转移到体液的转移速率系数
k2:酒精从体液排除体外的转移速率系数 ct:体液中的酒精浓度(单位:mg/100ml).
D0:所喝酒的酒精量(短时间喝酒状态下胃中的初始酒精量) (单位:mg). T: 长时间匀速喝酒所用的时间或达到浓度最大值所需时间(单位:h)
3.问题分析
3.1问题一的分析
我们就参考数据,做出合理的假设模型,然后结合数据拟合确定模型,再通过模型分别求出小张下午6点和凌晨2点的血液中酒精含量,从而解释小张所碰到的情况。
3.2问题二的分析
结合模型来计算短时间和长时间喝1瓶啤酒后血液中酒精含量能达到的最大值,然后用最大值来和新国家标准来对比,从而判断属于醉酒驾车还是饮酒驾车,而且并计算出喝酒后多长时间才能正常驾车。 3.3问题三的分析
结合模型来观察短时间喝多少酒能全天候开车和长时间喝啤酒后血液中酒精含量的变化,然后结合饮酒驾车的标准来判断在一天当中是否仍存在不是饮酒驾车的时间段,进而判断天天喝酒是否还能开车。
3.4问题四的分析
先给司机汇报一下喝大量酒对身体的危害,且酒后驾车的危险程度,并结合模型给司机一些每天的饮酒量,速度的快慢以及饮酒后多久才能再开车的一些建议。
4.模型的建立与求解
4.1模型的建立
用f1t、f2t分别表示酒精在胃、体液中的酒精含量,ct表示体液中的酒精浓度。根据酒精从胃进入体液的速率v1t与胃中的酒精含量f1t成正比,速率系数为k1,酒精从体液排出体外的速率v2t与胃中的酒精含量f2t成正比,速率系数为k2。
4.1.1短时间迅速喝酒的模型 1)可以对胃建立如下方程:
v1t=k1f1t
⑴
df1tv0v1t ⑵ dt
将⑴式代入⑵式可得:
df1tv0-k1f1t ⑶ dt
通过Mathematica求微分可得(附录1):
f1tC1ek1t
当t=0时, f10C1将⑴式代入⑷式可得:
v0
⑷ k1
v0
⑸ k1
v0k1t
v1tk1Ce ⑹ 1k1
联合⑸和⑹式可得:
v1tk1f10v0ek1tv0 ⑺
2)又可以对体液(因为血液中的酒精含量与在体液中的大体是一样的,所以
直接用体液的数据代替血液的)建立如下方程:
v2t=k2f2t ⑻
df2tv1tv2t ⑼ dt
将⑺式和⑻式代入⑼式可得:
df2tk1f10v0ek1tv0-k2f2t ⑽ dt
通过Mathematica求微分可得(附录2):
f2tC2ek2t
v0k1f10v0k1t
e ⑾ k2k1k2
v0k1f10v0
⑿
k2k1k2
当t=0时, f20C2
联合⑿式和⑾式可得:
v0k1f10v0k2tv0k1f10v0k1t
f2tf0ee ⒀ 2
k2k1k2k2k1k2
当酒是短时间喝时,有f10D0,f200,v00 代入上面数据到⒀可得:
c(t)
f2t
k1VD0kek2tek1tk
12V0所以我们把短时间喝酒的模型定为:
c(t)
f2tk1D0Vek2tek1t
k
1k2V0
4.1.2长时间匀速喝酒的模型
当酒时在较长时间内喝时,我们可以进行分段讨论。 1)当t0,T时,同样可以得到:
df1(t)
v0k1f1(t)
dt
⒁ df(t)2dt
v1(t)k2f2(t)
当t=0时,有: vD0
0
T
,f1(0)0,f2(0)0 将式子代入上面的方程组可得:
v0f(1t)(1k1t
ke)1 ⒂ f(t)cek2tv0k1v10v0ek1t
22k2k2k1根据上式可得:
c(t)f2tcv0kf(0)v0k1t V2ek2t
11e0V0k2V0(k2k1)V0
即
c(t)
D0TkV(1ek2t)D0
(k(ek2tek1t) 20T2k1)V0
所以
⒃ ⒄
c(T)
D0D0
(1ek2T)(ek2Tek1T) ⒅ Tk2V0T(k2k1)V0
当t>T时,v00,则此时血液中酒精的浓度与时间关系式如下;
c(t)
k1f1(t)
[ek2(tTek1(tT)]c(T)ek2(tT) ⒆
(k1k2)V0
综上所述,可得,当tT时
k1f1(T)
[ek2(tT)ek1(tT)]c(T)ek2(tT)c(t)
(k1k2)V0
D0D0
(1ek2T)(ek2Tek1T)c(T)
Tk2V0T(k2k1)V0
D0
(1ek1T)f1(T)
k1T
⒇
所以我们把长时间喝酒的模型定为: ③ 当t0,T时,c(t)④ 当t>T时,
(1ek1T)D0c(t)[ek2(tT)ek1(tT)]
(k1k2)TV0
D0D0k2Tk2Tk1Tk2(tT)
(1e)(ee)e
TkVT(kk)V20210
D0D0
(1ek2t)(ek2tek1t) Tk2V0T(k2k1)V0
4.2问题的解决 4.2.1问题一:
根据4.1.1所建立短时间喝酒模型,可知人体血液中的酒精含量与时间的函数关系式如下:
k1D0
c(t)(ektekt)
2
1
(k1k2)V0
用Mathematica通过参考数据(两瓶酒)拟合可得(附录3) :拟合效果如下图
k1D0D
也可得0 104.013 113.836,k1 2.10676,k2 0.181791
k1k2V0V0即:ct 113.836e 0.181791 te-2.10676 t
又因为小张每次只喝一瓶酒,初始酒精量只为喝两瓶酒时的一半,可得
k1D0
56.91k81, 2.1067k62, 0.1817 91
k1k2V0
所以我们把短时间喝酒(一瓶酒)的模型定为:
ct 56.918e 0.181791 te-2.10676 t
假设t=0时对应的是小张第一次喝酒的中午12点,当t=6时,可以求得
c(6) 19.1223mg/100ml,小于20mg/100ml,所以第一次检查时没有被认定为饮酒
驾驶。小张喝一瓶酒后血液中的酒精含量与时间的关系图(1) (附录4):
图(1)
由于大李是在下午6点接受检测,由于时间所需,我们假设他6点15分吃完晚饭并喝完一瓶啤酒,根据前面的假设并借用4.1.1中的⑴式和⑺式,我们可
以计算t=6.25时,
D6.25D0
6.25
v1tdt 0.155107 D0,f26.25c(6.25)100V0 1827.27V0mg
接着,我们将数据代入⒀式中可得到新模型:
ct 18.2727e 0.181791 t 65.7461e 0.181791 te 2.10676 t 根据修正后的模型并以6点15分对应为t=0,
mg/100ml大于国家新规当凌晨两点并被抽检时即t=7.75时,c(t) 20.5356
定的20mg/100ml,所以第二次虽然比第一次相对检查时间晚了一个多小时,但
检查时,酒精仍会超标,见图(2) (附录5):
图(2):
所以从分析中可知,虽然小张是喝相同量的酒,且第二次检查时比第一次延长了1个多小时,但由于第二次喝酒时体内还有第一次的残留酒精,在第二次喝酒7.75小时后,酒精含量大于20mg/100ml,所以第二次会被认定是饮酒驾车。由此可知,一个人人体内血液中的酒精含量不仅与所喝的酒量有关,而且还与喝酒者体内血液中是否残留酒精含量有关。
4.2.2问题二:
对于该问题,我们分为短时间喝酒和长时间喝酒两种情况来讨论
(1)当酒是短时间内喝下时,根据已建立的模型,可知,人体血液中的酒精含量与时间的函数关系式为:
k1D0
c(t)(ektekt)
2
1
(k1k2)V0
因为喝的是一瓶啤酒,根据 4.2.1中的计算可以把短时间喝酒(一瓶酒)的模型定为:
ct 56.918e -2.10676 te 0.181791 t
根据模型作出血液中的酒精含量与时间的关系图像,如图(3):
图(3)
通过图(3)观察可知,快速喝一瓶酒后开车不可能被定为醉酒驾车,最多只是饮酒驾车。我们用Mathematica的计算出具体值可知(附录6),当t= 0.237458或t= 5.75312时,c(t)=20mg/100ml。当t=1.27277时,酒精含量最大为: c(t)=41.2639mg/100ml。
通过图像的观察和数值的对比,我们可以确定驾驶员在较短时间内喝下一瓶啤酒时,是不会被定为醉酒驾车,在喝完酒后的0.237458到 5.75312小时内驾车是属于饮酒驾车。
(2)当酒是长时间喝下时,根据已建立的模型,可知,人体血液中的酒精含量与时间的函数关系式为: ⑤ 当t0,T时,c(t)⑥ 当t>T时,
(1ek1T)D0
c(t)[ek2(tT)ek1(tT)]
(k1k2)TV0
D0D0
(1ek2T)(ek2Tek1T)ek2(tT)
T(k2k1)V0Tk2V0
D0D0
(1ek2t)(ek2tek1t) Tk2V0T(k2k1)V0
根据4.2.1中的计算可知
D0
(两瓶酒的初始含量),所以一瓶酒初始含 104.013
V0
量对应的
D0
,k2 0.181791 52.006,k12.10676
V0
我们假设这一瓶酒喝了一个小时,即T=1.
根据模型作出血液中的酒精含量与时间的关系图像,如图(4) (附录7):
图(4)
通过图(4)观察可知,喝一瓶酒后开车不可能被定为醉酒驾车,最多只是饮酒驾车。我们用Mathematica的计算出具体值可知(附录8), 当t= 6.26065时,c(t)=20mg/100ml
当t= 1.86481时,酒精含量最大为:c(t)= 40.6352mg/100ml。
通过图像的观察和数值的对比,我们可以确定驾驶员在较长时间(一个小时)内喝下一瓶啤酒时,是不会被定为醉酒驾车,在喝完酒后的5.26065小时内驾车是属于饮酒驾车。
4.2.3问题三:
对于问题三,我们分为短时间喝少量的酒全天候都能开车和长时间喝不同量的酒分别隔多久才能开车两个方面来讨论。 (1)根据4.1中的模型c(t)
k1D0
由于k1,k2,V0是个常数,ek2tek1t可知,
k1k2V0
血液中酒精含量与D0成正比,也就是与喝下的酒精量为正比。又引用4.2.2中的(1)中在喝一瓶酒的情况下所计算的结果t=1.27277时,酒精含量最大为:c(t)= 41.2638mg/100ml,现在我们要实现喝了N瓶酒后血液酒精含量最
41.26391
。可大小于c(t)=20mg/100ml,所以我们可以列出以下关系式:
20N
以解得N= 0.484684(瓶)
通过计算,我们可以得出,在之前没有残留酒精的情况下,每次只要喝不超过0.484684瓶酒,那么任何时刻都能开车,也就是说,如果天天喝酒不超过0.484684瓶酒,任何时候都可以开车! (2)根
c(t)
据4.2中的模型:当
t0,T
时,
D0D0
(1ek2t)(ek2tek1t) Tk2V0T(k2k1)V0
当t>T时,
(1ek1T)D0
c(t)[ek2(tT)ek1(tT)]
(k1k2)TV0
D0D0k2Tk2Tk1Tk2(tT)
(1e)(ee)e
TkVT(kk)V21020
由于k1,k2,V0是个常数,血液中酒精含量与D0成正比,也就是与喝下的酒精量为正比。现在我们要实现喝了N瓶酒后多长时间血液酒精含量小于
c(t)=20mg/100ml,现在假设每喝一瓶酒都需要半个小时,也就是T=0.5N,我们分别取N=1,2,3,4,5,6代入模型中运算可以得出表(1)的结果: N(瓶)
喝完酒后能正常开车的时间(h) 开始喝酒到能正常开车的时间(h)
表(1)
通过表(1)我们也可以了解到天天喝不同量的酒需要消化的时间也不同,考虑到喝酒的量多时,还会残留到第二天,以及考虑司机要保持充足的睡眠时间,所以建议需要天天喝酒且开车的司机尽量不要喝超过一瓶酒,而且要等过了饮酒驾车的阶段后才能驾车。
4.2.3问题四:
酒后驾车危害多
——给想喝点酒驾车的司机们的忠告
现在私家车越来越多,由于醉酒驾车而产生的交通事故也越来越多。据报载,2010年全国道路交通事故死亡人数为65225人,其中因饮酒驾车造成的占有相当大的比例。酒后驾车发生事故的比率为没有饮酒情况下的 16倍,几率高达 27%,为了你的安全,请你注意以下信息: 一.人的健康饮酒量
肝脏处理酒精的能力,按体重每公斤每小时计算可处理 0.125ml.体重约70公斤的人1小时能处理 8.75ml,即相当于能处理清酒约60毫升,啤酒约 200ml,威士忌酒约 20ml.现在综合对酒的处理能力与免疫学调查,可以得出以下结论:
健康的安全性饮纯酒量每日为 50ml 以内, 有害量是每日 100ml, 危险量是每日 150ml 以上.
二.过量饮酒对人体的危害
如果饮酒过量或长期酗酒,会导致麻痹脑部神经,影响视觉,听觉,使人反应迟钝,肌肉失去控制能力,口齿不清等。酒精能破坏肝脏功能,易造成胃发炎,严重
1 5.5
2 9.6
3 12.1
4 14.0
5 15.4
6 16.7
6.0 10.6 13.6 16.0 17.9 19.7
时可造成胃溃疡和十二指肠溃疡。尤其是我们的司机朋友,更要引起高度的重视与关注。
虽然饮酒驾车危害甚多,但并不是说一点都不能喝酒.甚至还可以天天喝,但一定要注意控制自己的饮酒量和出车时间,结合上面的信息,注意以下几点,想喝一点酒的司机们也能过一把酒瘾.
1.一次性饮酒的酒精量越大, 到达标时的时间会越长, 所以你等待时间的长短应根据你饮酒量的多少而定.比如说一次饮一瓶啤酒,大约 5.5个小时后酒精含量就可达标; 一次性喝 2 瓶啤酒,大概要等9.6个小时后才能达标;而一次性喝 3 瓶啤酒,则大概要等 12.1个小时后才能达标.
2.连续饮酒次数越多,每次间隔时间应越长.以第一题为例,第一次饮啤酒一瓶, 过六个小时达标,但第二次饮同样多的酒,同样再过六个,酒精含量增加到 28.2273 毫克/百毫升,要使第二次饮酒后,不超标,则至少应在 7.89539 小时后再驾车.
5.模型的评价、优化以及推广
本模型以微分方程为底,在进行一系列假设以及计算化简后建立起了短时间喝酒和长时间喝酒两种血液酒精含量的模型,并通过数据拟合的方法计算出一瓶酒的酒精含量与体液体积的比例关系,比直接采用某型号的啤酒规格来计算酒精量和某个百分比来计算体液体积的误差有所降低,更加接近事实。而且简化了一些影响不大的因数,使模型得以简化,方便计算。
本模型还是有可以优化的地方,比如在参考数据的基础上再去测量更多人喝酒后血液酒精含量的数据,可以让数据拟合的误差更小,更接近事实;去了解一下正常人消化酒精的饱和点,再建立一条喝酒超过饱和点的数学模型。
本模型适用于大部分人在不疯狂喝酒情况下的血液酒精含量的预测,我们可以去测量更多不同体重,不同饮酒量的人喝酒后血液酒精含量数据,这样我们也就能推广出更多更精确的模型去预测喝酒后血液酒精含量。
6.参考文献
[1] 吴朝平, 高 峰, 徐小红,饮酒驾车问题的数学模型,渝西学院学报( 自然科学版) ,第4 卷 第2 期,2005 年6月
[2] 李涛,贺勇军,《应用数学篇》,北京:电子工业出版社,2000年 [3] 姜启源,谢金星,《数学建模》,北京:高等教育出版社,2003年
[4] 杨启凡,方道元,《数学建模》,杭州:浙江大学出版社,1999年 [5] 张双德, 《医用高等数学[M] 》, 天津: 天津科学技术出版社, 1999年 [6] 萧树铁, 《大学数学实验[M]》 , 北京: 高等教育出版社, 1999年
附录
(附录1)
In: DSolve[f1'[t]vo-k1 f1[t],f1[t],t] Out: {{f1[t]vo/k1+-k1 t C[1]}} (附录2)
In: c=DSolve[f2'[t](k1 f1[0]-v0) E-k1 t+v0-k2 f2[t],f2[t],t]
Out: {{f2[t]-k2 t C[1]+-(k1-k2) t-k2 t ((k1 t v0)/k2+(v0-k1 f1[0])/(k1-k2))}} In: Simplify[c]
Out: {{f2[t]-k2 t ((k2 t v0)/k2+C[1]+((-k1+k2) t (v0-k1 f1[0]))/(k1-k2))}} (附录3) In:
a={{0.25,32},{0.5,70},{0.75,77},{1,83},{1.5,82},{2,78},{2.5,69},{3,68},{3.5,59},{4,52},{4.5,51},{5,41},{6,38},{7,35},{8,28},{9,25},{10,19},{11,16},{12,13},{13,11},{14,8},{15,7},{16,5}} Out:
{{0.25,32},{0.5,70},{0.75,77},{1,83},{1.5,82},{2,78},{2.5,69},{3,68},{3.5,59},{4,52},{4.5,51},{5,41},{6,38},{7,35},{8,28},{9,25},{10,19},{11,16},{12,13},{13,11},{14,8},{15,7},{16,5}}
In: a2=ListPlot[a,PlotStyle {RGBColor[1,0,0],PointSize[0.015]}]
Out: {k12.10676,k20.181791,A113.836} In:
a3=Plot[113.[1**********]977`(E-0.[**************]92`t-E-2.[**************]7`t),{t,0,24},AxesLabel{
In: Show[a2,a3,AxesLabel{
(附录4) In:
Plot[56.918(E-0.[**************]92`t-E-2.[**************]7`t),{t,0,24},AxesLabel{
(附录5)
In:
Plot[18.2727E-0.[**************]92`t+65.7461(E-0.[**************]92`t-E-2.[**************]7`t),{t,0,8},AxesOrigin{0,0},AxesLabel{
(附录6)
In: FindRoot[56.918(E-0.[**************]92`t-E-2.[**************]7`t)20,{t,1}] Out: {t0.237458}
In: FindRoot[56.918(E-0.[**************]92`t-E-2.[**************]7`t)20,{t,6}] Out: {t5.75312}
In: Maximize[56.918(E-0.[**************]92`t-E-2.[**************]7`t),t>0,t] Out: {41.2641,{t1.27277}} (附录7)
In: g1=Plot[((1-E-2.[**************]` )
104.[1**********]042`/2)/(2.[**************]`-0.[**************]`) (E-0.[**************]` (t-1)-E-2.[**************]` (t-1)
)+((104.[1**********]042`/2)/0.[**************]`
(1-E-0.[**************]` )+(104.[1**********]042`/2)/(0.[**************]`-2.[**************]`) (E-0.[**************]` -E-2.[**************]` )) E-0.[**************]` (t-1)
,{t,1,24},AxesOrigin{0,0},AxesLabel{
In: g2=Plot[(104.[1**********]042`/2)/0.[**************]` (1-E-0.[**************]` t
)+(104.[1**********]042`/2)/(0.[**************]` -2.[**************]`) (E-0.[**************]` t-E-2.[**************]` t
),{t,0,1},AxesOrigin{0,0},AxesLabel{
In: Show[g1,g2] Out:
(附录8)
In: FindRoot[((1-E-2.[**************]` )
104.[1**********]042`/2)/(2.[**************]`-0.[**************]`) (E-0.[**************]` (t-1)-E-2.[**************]` (t-1)
)+((104.[1**********]042`/2)/0.[**************]`
(1-E-0.[**************]` )+(104.[1**********]042`/2)/(0.[**************]`-2.[**************]`) (E-0.[**************]` -E-2.[**************]` )) E-0.[**************]` (t-1)20,{t,6}] Out: {t6.26065}
In: Maximize[((1-E-2.[**************]` )
104.[1**********]042`/2)/(2.[**************]`-0.[**************]`) (E-0.[**************]` (t-1)-E-2.[**************]` (t-1)
)+((104.[1**********]042`/2)/0.[**************]`
(1-E-0.[**************]` )+(104.[1**********]042`/2)/(0.[**************]`-2.106761853
663044`) (E-0.[**************]` -E-2.[**************]` )) E-0.[**************]` (t-1),t>0,t] Out: {40.6352,{t1.86481}}