數學建模實驗
實驗目的運用藥物注射模型,熟練使用MATLAB曲線擬合方法,解釋飲酒駕車的一些實際問題。
實驗原理
由于酒精不需要進入腸道即可被吸收,且胃對其吸收速率也非常快,本題應采用“快速靜脈注射模型”。酒精主要存在于血液中,故本例應計算吸收室的血藥濃度c1(t)=A1e-αt+B1e-βt,因A1,α,B1,β之間有關聯,為提高精確度,重新解微分方程得和題目對應的模型擬合計算。
實驗內容
國家質量監督檢查檢疫局2004年5月31日發布了新的《車輛駕駛人員血液、呼氣酒精含量閥值與檢查》國家新標準,新標準規定,車輛駕駛人員血液中的酒精含量大于或等于20毫克/百毫升,小于80毫克/百毫升為飲酒駕車(原標準是小于100毫克/百毫升),血液中酒精含量大于或等于80毫克/百毫升為醉就駕車(原標準是大于100毫克/百毫升)。
某人在中午12點喝了一瓶啤酒,下午6點檢查時符合新的駕車標準,緊接著他在吃晚飯的時候又喝了一瓶啤酒,為了保險起見他呆到凌晨2點才駕車回家,又一次遭遇檢查時卻被定為飲酒駕車,這讓他既懊惱又困惑,為什么喝同樣多的酒,兩次檢查的結果會不一樣呢?
(1)某人中午12點喝了一瓶啤酒,下午6點檢查合格,晚飯又喝一瓶,次日凌晨2點檢查未通過,請對此情況做出解釋。
(2)短時間內喝啤酒3瓶多長時間之后才能駕車?
(3)怎樣估計血液中的酒精含量在什么時候最高?
(4)如果天天喝酒,是否還能開車?
解答:
建立常微分方程模型,假設喝進去的酒精從胃吸收的轉移速率與胃里酒精含量成正比;血液代謝酒精的速度與濃度成正比;
如圖所示:
X
胃
C
血液
代謝物
K1
K2
設胃里初始含量為X0,血液中初始含量為C0=0
則
即
即
解得
題目所給數據的C0=0,即此時
MATLAB命令:
T=[0.25
0.5
0.75
1.5
2.5
3.5
4.5
16];
C=[30
4];
cftool打開曲線擬合工具箱,X
data選擇T,Y
data選擇C,擬合方式選擇Custom
Equation,擬合,參數如圖
擬合得:a=2.273,b=0.1822,c=103.4
即K1=2.273,K2=0.1822,X0=103.4,可以發現擬合的比較好。
第一題
喝一瓶啤酒時X0=51.7,此時
而,故符合駕車標準
緊接著又喝一瓶,此時X0約為51.7,C0=18.8367。到凌晨二點過了8小時,此時
可以發現并沒有大于20,但是當過后7.2小時時,略大于20,屬于酒駕。題目所給情況可能是晚上喝酒不是快速喝下導致的誤差。
第二題
短時間喝三瓶啤酒時X0=155.1,此時
MATLAB命令:
T=0:0.1:24;
C=168.616*exp(-0.1878*T)-168.616*exp(-1.971*T);
plot(T,C,’r’)
hold
on
plot([0
24],[20
20],’g’)
得
可發現與C=20相交于11、12之間
T=11:0.1:12;
C=168.616*exp(-0.1878*T)-168.616*exp(-1.971*T)
輸出:
C
=
至
列
21.3665
20.9690
20.5789
20.1960
19.8202
19.4515
19.0896
至
列
18.7344
18.3859
18.0438
17.7081
故11.4小時后駕車不會違反規定
題目三
觀察上圖可知最高點在1-2之間
T=1:0.1:2;
C=168.616*exp(-0.1878*T)-168.616*exp(-1.971*T)
輸出:
C
=
至
列
116.2545
117.8569
118.7560
119.0852
118.9541
118.4526
至
列
117.6543
116.6193
115.3972
114.0283
112.5457
故在喝酒后約1.3小時后血液中酒精含量最高
第四題
為簡化問題,假設一天只喝一次,每次快速喝下n瓶,則
要求:,依此類推
考慮到48小時后的影響很小,故只需在數日內符合即可認為符合,這里取十天。
考慮到平常人的酒量,為排除嘔吐等不正常代謝酒精方式和臟器超負荷工作帶來的誤差,只考慮小于等于10瓶啤酒
MATLAB:
建立函數
function
C24=CalcC24(n,C0,i)
T=0:0.5:24;
C=(C0+56.2053*n)*exp(-0.1878*T)-56.2053*n*exp(-1.971*T);
C24=(C0+56.2053*n)*exp(-0.1878*24)-56.2053*n*exp(-1.971*24);
plot((T+i*24),C,'Color',[((-1)^n+1)/(2*n)
((-1)^(n+1)+1)/(2*n)
((-1)^n+1)/(2*n)])
hold
on
end
輸入命令:
hold
off
clear
clc
C0=0;
for
n
=1:10
for
i=0:10
temp=CalcC24(n,C0,i);
C0=temp;
end
end
plot([0
264],[20
20],’r’);
得:
可發現若每日喝十瓶啤酒的情況下經過18小時,血液中的酒精濃度就能降低到20mg/100ml以下,即若早上八點喝十瓶啤酒,凌晨兩點駕車即不違反新交法
若每隔12小時快速飲酒n瓶,同樣考慮十天
MATLAB
建立函數:
function
C12=CalcC12(n,C0,i)
T=0:0.5:12;
C=(C0+56.2053*n)*exp(-0.1878*T)-56.2053*n*exp(-1.971*T);
C12=(C0+56.2053*n)*exp(-0.1878*12)-56.2053*n*exp(-1.971*12);
plot((T+i*12),C,'Color',[((-1)^n+1)/(2*n)
((-1)^(n+1)+1)/(2*n)
((-1)^n+1)/(2*n)])
hold
on
end
輸入命令:
hold
off
clear
clc
C0=0;
for
n
=1:5
for
i=0:20
temp=CalcC12(n,C0,i);
C0=temp;
end
end
plot([0
264],[20
20],'r')
得:
可以發現喝完2瓶啤酒可以在9.8小時后降低到20mg/100ml以下,而喝完三瓶僅在喝完11.94小時后降低到20mg/100ml以下,也就是僅有每十二小時3.6分鐘符合要求,忽略不計。
故每12小時可飲酒2瓶可以駕車不違反新交法
綜上所述,每12小時可以和2瓶啤酒,每24小時可以喝10瓶及以下的啤酒不違反新交法。
模型評價與改進
1.解得對應模型,綜合運用MATLAB軟件,準確求解,在運用MATLAB進行數據擬合時,得到了較理想化的曲線。
2.本模型引用了醫藥動力學的二室模型進行計算,可靠性較高
3.從問題出發,分析了應該考慮的各種情況,建立了一般的數學模型,并進行實例驗證,從而證明我們建立的數學模型可以較好的解決實際問題。
模型的缺點
1.本文的模型參數僅是依靠一組數據擬合求解得出,有一定的偏差。
2.模型為使計算簡便,使所得的結果更理想化,忽略了一些次要的因素。
3計算所得.和題目所述不盡相同,不過因擬合得較好,只能考慮本身操作的誤差。
—
END
—