章绍辉数学建模第四章.docx

上传人:b****7 文档编号:11333538 上传时间:2023-02-27 格式:DOCX 页数:22 大小:261.17KB
下载 相关 举报
章绍辉数学建模第四章.docx_第1页
第1页 / 共22页
章绍辉数学建模第四章.docx_第2页
第2页 / 共22页
章绍辉数学建模第四章.docx_第3页
第3页 / 共22页
章绍辉数学建模第四章.docx_第4页
第4页 / 共22页
章绍辉数学建模第四章.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

章绍辉数学建模第四章.docx

《章绍辉数学建模第四章.docx》由会员分享,可在线阅读,更多相关《章绍辉数学建模第四章.docx(22页珍藏版)》请在冰豆网上搜索。

章绍辉数学建模第四章.docx

章绍辉数学建模第四章

第四章

 

2.

符号说明:

酒精量是指纯酒精的质量,单位是毫克;

酒精含量是指纯酒精的浓度,单位是毫克/百毫升;

t~时刻(小时);

x1(t)~在时刻t吸收室(肠胃)内的酒精量(毫克);

D0~在段时间内喝下2瓶啤酒后吸收室内的酒精量(毫克);

c1(t)~在时刻t吸收室(肠胃)的酒精含量(毫克/百毫升);

c2(t)~在时刻t中心室(血液和体液)的酒精含量(毫克/百毫升);

V~中心室的容积(百毫升);

k1~酒精从吸收室吸收进入中心室的速率系数;

k2~酒精从中心室向体外排除的速率系数;

k3~假如所喝入的酒精完全吸收进中心室却没有排除出体外,中心室的酒精含量将达到的最大值(毫克/百毫升);

模型假设:

假设一:

酒是在很短时间内喝的

大李在短时间内喝下三瓶啤酒后,酒精先从吸收室(肠胃)吸收进中心室(血液和体液),然后从中心室向体外排除,忽略喝酒的时间,根据生理学知识,假设

(1)吸收室在初始时刻t=0时,酒精量立即为3D0/2;在任意时刻,酒精从吸收室吸收进入中心室的速率(吸收室在单位时间内酒精含量的减少量)与吸收室的酒精含量成正比,比例系数为k1;

(2)中心室的容积V保持不变;在初始时刻t=0时,中心室的酒精含量为0;在任意时刻,酒精从中心室向体外排除的速率(中心室在单位时间内酒精含量的减少量)与中心室的酒精含量成正比,比例系数为k2;

(3)在大李适度饮酒没有酒精中毒的前提下,假设k1和k2都是常数,与饮酒量无关;

假设二:

酒是在较长一段时间(如2小时)内喝的

大李在较长一段时间(如2小时)内喝下三瓶啤酒后,酒精先从吸收室(肠胃)吸收进中心室(血液和体液),然后从中心室向体外排除,忽略喝酒的时间,根据生理学知识,假设

(1)吸收室在初始时刻t=0时,酒精量为0;在任意时刻,酒精从吸收室吸收进入中心室的速率(吸收室在单位时间内酒精含量的减少量)与吸收室的酒精含量成正比,比例系数为k1;

(2)中心室的容积V保持不变;在初始时刻t=0时,中心室的酒精含量为0;在任意时刻,酒精从中心室向体外排除的速率(中心室在单位时间内酒精含量的减少量)与中心室的酒精含量成正比,比例系数为k2;

(3)在大李适度饮酒没有酒精中毒的前提下,假设k1和k2都是常数,与饮酒量无关;

模型建立和求解:

假设一:

酒是在很短时间内喝的

根据4.1.7小节饮酒驾车案例,假设

k1=2.0079,k2=0.1855

则在很短时间内喝下三瓶酒时

记喝酒时间为t=0时,c2(t)=0,则可根据

来计算t时刻血液中的酒精含量c2(t),Matlab代码如下:

M文件fun2_1.m

k1=2.0079;k2=0.1855;k3=155.79;

c2=@(t)(k1.*k3)./(k1-k2).*(exp(-k2.*t)-exp(-k1.*t));

holdon;

plot(0:

0.01:

20,c2(0:

0.01:

20));

plot([0,20],[20,20],[0,20],[80,80]);

xlabel('时刻t(小时)');

ylabel('血液中酒精含量c2(毫克/百毫升)');

title('短时间内喝下三瓶酒时,血液中酒精含量随时间的变化过程');

输出图像

由图像可知c2(t)的函数图像与y=20和y=80分别都有2个交点,故可继续添加代码求出这4个交点坐标,代码如下:

M文件fun2_1.m续

f=@(t)c2(t)-20;

g=@(t)c2(t)-80;

ft=[fzero(f,1),fzero(f,20)]

gt=[fzero(g,1),fzero(g,20)]

输出结果

ft=

0.068911.5887

gt=

0.38054.1125

(1)当

时,

,属于饮酒驾车;

(2)当

时,

,属于醉酒驾驶;

假设二:

酒是在较长一段时间(如2小时)内喝的

根据4.1.7小节饮酒驾车案例,假设

k1=2.0079,k2=0.1855

则在较长一段时间(如2小时)内喝下三瓶酒时

记喝酒时间为t=0时,c1(t)=0,c2(t)=0,则吸收室的酒精量x1(t)满足分段初值问题

解得

故中心室内的酒精含量c2(t)满足分段初值问题

解得

其中

通过Matlab画出c2(t)的图像,代码如下:

M文件fun2_2.m

k1=2.0079;k2=0.1855;k31=155.79;k3=k31/2;

c2=@(t)(k1.*k31)./(k1-k2).*(exp(-k2.*t)-exp(-k1.*t));

holdon;

plot(0:

0.01:

20,c2(0:

0.01:

20),'--');

plot([0,20],[20,20],[0,20],[80,80]);

xlabel('时刻t(小时)');

ylabel('血液中酒精含量c2(毫克/百毫升)');

p1=k3*exp(-2*k1)/(k1-k2)-k1*k3*exp(-2*k2)/(k1*k2-k2*k2)+k3/k2;

p2=p1*exp(2*k2)+k3*(exp(2*k1)-1)*exp(2*(k2-k1))/(k1-k2);

c21=@(t)k3.*exp(-k1.*t)./(k1-k2)-k1.*k3.*exp(-k2.*t)./(k1.*k2-k2.*k2)+k3/k2;

c22=@(t)p2.*exp(-k2.*t)-k3.*(exp(2.*k1)-1).*exp(-k1.*t)./(k1-k2);

plot(0:

0.01:

2,c21(0:

0.01:

2));

plot(2:

0.01:

20,c22(2:

0.01:

20));

title('喝下三瓶啤酒,血液中酒精含量随时间的变化过程');

legend('很短时间内喝的','较长一段时间(如2小时)内喝的');

输出图像

由图像可知c2(t)的函数图像与y=20和y=80分别都有2个交点,故可继续添加代码求出这4个交点坐标,代码如下:

M文件fun2_2.m续

f=@(t)c2(t)-20;

g=@(t)c2(t)-80;

ft=[fzero(f,1),fzero(f,20)]

gt=[fzero(g,1),fzero(g,20)]

输出结果

ft=

0.623312.6196

gt=

1.63665.1412

(1)当

时,

,属于饮酒驾车;

(2)当

时,

,属于醉酒驾驶。

3.

考虑3.4.2小节“酵母培养物的增长”案例,建立微分方程模型,模拟酵母培养物的增长,故假设t(小时)时刻的酵母生物量为x(t)(克),且t=0时x(t)=x0,则x(t)满足微分方程初值问题

其中

为酵母培养物的增长量,根据3.4.2小节可知

其中r>0称为酵母培养物固有增长率,N>0称为酵母培养物的最大容量,则得到阻滞增长方程

用分离变量法得

则根据表3.2通过Matlab拟合出x(t)的参数r、N和x=,代码如下

M文件fun3_1.m

t=0:

18;

x=[9.6,18.3,29,47.2,71.1,119.1,174.6,257.3,350.7,441,513.3,559.7,...

594.8,629.4,640.8,651.1,655.9,659.6,661.8];

f=@(b,t)b

(2).*b(3)./(b(3)+(b

(2)-b(3)).*exp(-b

(1).*t));

[b1,r1]=nlinfit(t(1:

19),x(1:

19),f,[0.5,660,9.6])

s=sum(r1.^2)

figure

(1)

holdon;

plot(t,x,'*');

plot(0:

0.01:

18,f(b1,0:

0.01:

18));

xlabel('时间t(小时)');

ylabel('生物量x(t)(克)');

legend('观测值','模拟值');

figure

(2)

plot(t,r1,'*',[0,20],[0,0]);

axis([0,20,-40,40]);

xlabel('时间t(小时)');

ylabel('模拟误差');

输出图像

输出结果

b1=

0.5470663.02209.1355

r1=

Columns1through8

0.46452.67012.44652.6143-2.35041.6469-5.1784-2.1484

Columns9through16

1.76865.06073.8475-4.8434-7.42952.9714-0.54180.7993

Columns17through19

0.29960.89321.2820

s=

194.3254

即求得固有增长率r=0.5470,酵母培养物最大容量N=663.0220,初始值x0=9.1355,误差平方和s=194.3254,酵母培养物生物量增长的经验公式

且模拟效果较好。

4.

符号说明

xk~第k年草场的密度单位;

yk~第k年操场上鹿的数量;

r~草场上草的年固有增长率;

c~草场密度单位减少的速度大小;

d~没有草,鹿群的年死亡率;

b~草对鹿群死亡的补偿率;

N~草场的最大密度单位;

模型建立与求解

(1)比较将100只鹿放入密度为1000和密度为3000的两种草场的情况下,草和鹿两个总群的数量演变过程,因为草的生长服从Logistic模型,建立差分方程组模型为

平衡点为

,通过Matlab计算代码如下:

M文件fun4_1.m

r=0.8;c=1.6;d=0.9;b=1.5;N=3000;

holdon;

figure

(1)

x1

(1)=1000;y1

(1)=100;

fork=1:

20

x1(k+1)=x1(k)+r*x1(k)*(1-x1(k)/N)-c*x1(k)*y1(k)/N;

y1(k+1)=y1(k)-d*y1(k)+b*x1(k)*y1(k)/N;

end

plot(1:

21,x1(1:

21),'*',1:

21,y1(1:

21),'o');

xlabel('第k年');

ylabel('种群密度');

gtext('草场密度');

gtext('鹿群密度');

figure

(2)

plot(x1,y1,'*');

xlabel('草场密度');

ylabel('鹿群密度');

figure(3)

x2

(1)=3000;y2

(1)=100;

fork=1:

20

x2(k+1)=x2(k)+r*x2(k)*(1-x2(k)/N)-c*x2(k)*y2(k)/N;

y2(k+1)=y2(k)-d*y2(k)+b*x2(k)*y2(k)/N;

end

plot(1:

21,x2(1:

21),'*',1:

21,y2(1:

21),'o');

xlabel('第k年');

ylabel('种群密度');

gtext('草场密度');

gtext('鹿群密度');

figure(4)

plot(x2,y2,'*');

xlabel('草场密度');

ylabel('鹿群密度');

输出图像

figure

(1)

figure

(2)

figure(3)

figure(4)

输出结果

x1=

Columns1through8

1000.01480.02032.52502.32759.32824.52787.32692.5

Columns9through16

2548.52355.92126.11889.91692.91574.91550.01604.8

Columns17through21

1708.61823.11912.71955.11946.9

y1=

Columns1through8

100.000060.000050.400056.259876.0148112.4757170.0941254.0580

Columns9through16

367.4356504.9419645.2937750.5099784.2288742.2214658.6837576.3405

Columns17through21

520.0917496.3208502.0420530.3204571.4523

x2=

Columns1through8

3000.02840.02718.82570.02378.22149.01910.41707.1

Columns9through16

1580.61547.61596.61698.01813.61907.01954.21950.1

Columns17through21

1905.91841.91779.71736.41720.3

y2=

Columns1through8

100.0000160.0000243.2000354.9293491.5830633.7025744.2929785.3710

Columns9through16

748.9037666.7620582.6070523.3679496.6857500.0647526.8075567.4258

Columns17through21

610.0197642.3314655.7913649.1482628.5048

(2)比较将100只鹿放入密度为1000和密度为3000的两种草场的情况下,草和鹿两个总群的数量演变过程,因为草的生长服从Logistic模型,建立常微分方程组模型为

平衡点为

,并通过两式相除消去dt得

通过Matlab计算代码如下:

函数fun4_2M文件fun4_2.m

functiondx=fun4_2(t,x)

r=0.8;c=1.6;d=0.9;b=1.5;N=3000;

dx=zeros(2,1);

dx

(1)=x

(1)*r*(1-x

(1)/N)-c*x

(1)*x

(2)/N;

dx

(2)=-d*x

(2)+b*x

(1)*x

(2)/N;

主程序M文件fun4_3.m

holdon;

figure

(1)

[t1,x1]=ode45('fun4_2',0:

20,[1000,100]);

plot(t1,x1(:

1),'-',t1,x1(:

2),'-');

xlabel('第k年');

ylabel('种群密度');

gtext('草场密度');

gtext('鹿群密度');

figure

(2)

plot(x1(:

1),x1(:

2),'-');

xlabel('²Ý³¡ÃܶÈ');

ylabel('¹ȺÃܶÈ');

figure(3)

[t2,x2]=ode45('fun4_2',0:

20,[3000,100]);

plot(t2,x2(:

1),'-',t2,x2(:

2),'-');

xlabel('第k年');

ylabel('种群密度');

gtext('草场密度');

gtext('鹿群密度');

figure(4)

plot(x2(:

1),x2(:

2),'-');

xlabel('草场密度');

ylabel('鹿群密度');

输出图像

figure

(1)

figure

(2)

figure(3)

figure(4)

输出结果

x1=

1000.0100.0

1521.376.2

2024.075.4

2385.592.9

2574.7131.6

2622.1197.0

2562.8294.1

2424.9417.1

2239.2545.0

2045.3646.5

1880.8700.4

1767.4707.1

1708.7683.9

1694.0649.9

1709.0618.3

1739.0595.0

1771.3582.0

1798.1577.7

1815.3579.9

1822.6585.7

1822.1592.4

x2=

3000.0100.0

2848.8175.4

2684.1284.8

2483.9422.1

2257.2561.9

2038.1667.9

1860.9718.1

1746.1717.3

1691.1686.9

1682.6648.1

1704.2614.0

1739.2590.4

1774.8578.0

1802.8575.0

1819.7578.5

1825.9585.4

1824.0592.9

1817.5599.2

1809.6603.2

1802.6605.0

1797.7605.0

模型分析

(1)相同点:

两个模型给出的草场密度和鹿群密度的变化方向一致,都会趋向于稳定状态;

(2)不同点:

差分方程模型相对于是取步长为1时的欧拉方法计算微分方程的数值解,而常微分方程模型使用Matlab中的ode45函数步长比较小,使得常微分方程模型的精度比差分方程模型的精度大,也使得差分方程模型的变化趋势比微分方程模型大。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1