微分方程模型--饮酒驾车
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 函数调用语句
[返回变量列表]=函数名(输入变量列表)
例:[a,b,c]=my_fun(d,e,f,c) • 冒号表达式 v=s1:s2:s3 该函数生成一个行向量v,其中s1是起始值, s2是步 长(若省略步长为1), s3是最大值。
例:用不同的步距生成 (0,π) 间向量。 >> v1=0:0.2:pi v1 = Columns 1 through 9 0 0.2000 0.4000 0.6000 1.0000 1.2000 1.4000 1.6000 Columns 10 through 16 1.8000 2.0000 2.2000 2.4000 2.8000 3.0000
转移结构
例:用循环求解求最大的 m
>> s=0; for i=1:10000 s=s+i; if s>10000, break; end end >> i i= 141
MATLAB 语言的函数的基本结构
例:求m,使
∑i < K
i =1
m
function [m,s]=findsum(k) s=0; m=1; while (s<k) s=s+m; m=m+1; end >> [m1,s1]=findsum(145323) m1 = 539 s1 = 145530
假
设
3、每个健康人对酒精吸收分解相同,各时间段的新陈代谢速率相同; 4、人的体液占人的体重的70%,其中血液只占体重的7%左右;而药物(包括酒 精)在血液中的含量与在体液中的含量大体是一样的。一个70公斤体重的 人,全身体液总量为49公斤,约490百毫升; 5、为了方便计算,保守计啤酒的酒精浓度为5(g/ml)1瓶啤酒为500ml。低度 白酒一般在38度(g/ml);
• • • • 模糊逻辑与模糊推理 神经网络在数据拟合中的应用 遗传算法在最优化求解中的应用 ……
– 在建模仿真中的应用 – ……
MATLAB 的保留常量
特殊变量 ans pi eps flops inf NaN i,j nargin nargout realmin realmax 取 值 用于结果的缺省变量名 圆周率 计算机的最小数,当和 1 相加就产生一个比 1 大的数 浮点运算数 无穷大,如 1/0 不定量,如 0/0 i=j= − 1 所用函数的输入变量数目 所用函数的输出变量数目 最小可用正实数 最大可用正实数
最小二乘曲线拟合
MATLAB 程序设计语言基础
MATLAB 语言的优势
编程简单,类似于其他语言,如C 集成度更高,扩展性更好 数学问题数值解能力强大 由Maple内核构成的符号运算工具箱可以 继承Maple所有解析解的求解能力 • 在数学、工程领域有各种“工具箱” • 强大的系统仿真能力,Simulink建模 • 在控制界是国际首选的计算机语言 • • • •
J = min ∑ [ yi − f (a, xi )]2
a i =1 N
Matlab的最优化工具箱中提供了Lsqcurefit()函 数,可以解决最小二乘曲线拟合的问题。 调用格式:[a,Jm] = lsqcurvefit ( Fun,a0,x,y) 其中,Fun为原型函数,(M-函数或Line( )函数) a0为最优化的初值, x,y为原始输入输出数据向量。 返回值为待定系数下的目标函数的值Jm。
a =[b, k1, k2] (令D/v1=b)
a0=[102.04, 2, 1]
f=inline('a(1)*a(2)/(a(3)-a(2))*(exp(-a(2)*t)-exp(-a(3)*t))','a','t'); [a,J]=lsqcurvefit(f,[102.04,2,1],t,c2);
− k 1t
问题1模型的建立与求解:
由假设建立二室模型
⎧ dx1(t ) 解微分方程得: ⎪ dt = −k1i x1(t ); ⎪ ⎪ dx 2(t ) = k1i x1(t ) − k 2i x 2(t ); D k1 -k1i t D k1 − k 2 it ⎨ dt c2(t)= × e − × e ⎪ v2 k2 − k1 v2 k2 − k1 ⎪ x1(0) = D; ⎪ x 2(0) = 0. ⎩
Ⅰ室 (肠胃v1) x1(t) k1 Ⅱ室 (体液v2) x2(t) k2 分解 转移
假设1、人体吸收酒精的速率与吸收室中酒精的含量成正比.
饮酒
由假设建立二室模型
x1(t ) = De ⎧ dx1(t ) 解微分方程得: = −k1i x1(t ); ⎪ dt ⎪ ⎪ dx 2(t ) = k1i x1(t ) − k 2i x 2(t ); D k1 -k1i t D k1 − k 2 it ⎨ dt c2(t)= × e − × e ⎪ v2 k2 − k1 v2 k2 − k1 x1(0) = D; ⎪ ⎪ x 2(0) = 0. ⎩
调用格式:[a,Jm] = lsqcurvefit ( Fun,a0,x,y) 其中,Fun为原型函数,(M-函数或Line( )函数)
c2(t)=
D k1 × (e-k1i t − e − k 2 it ) v2 k2 − k1
a0为最优化的初值,x,y为原始输入输出数据向量。 返回值为待定系数下的目标函数的值Jm。
例: >> x=[-pi : 0.05: pi]; % 以 0.05 为步距构造自变量向量 >> y=sin(tan(x))-tan(sin(x)); % 求出各个点上的函数值 >> plot(x,y) >> plot(x,y,'r-.pentagram')
最小二乘曲线拟合: 假设有一组数据xi,yi,i=1,2…N,且已知这组 数据满足某一函数原型y=f(a,x) ,其中a为待定系数向 量,则最小二乘曲线拟合的目标就是求出这一组待定系 数的值,使得目标函数
• 符号型变量数据类型:
常用于公式推导、解析解解法
– 符号变量声明 • syms var_list var_props • 例:syms a b real • syms c positive
• 字符串型数据:用单引号括起来 。 • 多维数组:是矩阵的直接扩展,多个下标。
MATLAB 的基本语句结构
3 68 13 10
3.5
x1(t ) = De − k 1t
4 51 15 7
4.5 50 16 4
5 41
58 14 7
D k1 D k1 -k1 i t c2(t)= e e − k 2 it × − × v2 k2 − k 1 v2 k2 − k 1
D=500g×2×5%=50000mg V2=70000mg/100毫克/百毫升×70%=490百毫升 D/v2=102.04
饮酒驾车
针对这种严重的道路交通情况,国家标准规定,车辆驾驶人员血 液中的酒精含量大于或等于20毫克/百毫升,小于80毫克/百毫升为饮 酒驾车血液中的酒精含量大于或等于80毫克/百毫升为醉酒驾车。 在喝了3瓶啤酒或者半斤低度白酒后多长时间内驾车就会违反上述 标准,在以下情况下回答: 1)酒是在很短时间内喝的; 2)酒是在较长一段时间(比如2小时)内喝的。
时间(小时) 0.25 酒精含量
0.5 68 7 35
0.75 75 8 28
1 82 9 25
1.5 82 10 18
2 77 11 15
2.5 68 12 12
3 68 13 10
3.5 58 14 7
4 51 15 7
4.5 50 16 4
5 41
30
时间(小时) 6 酒精含量
38
t=[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]; c2=[30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10,7,7,4];
inline 函数和匿名函数
inline 函数,可以免去文件
f ( x, y ) = sin( x 2 + y 2 )
f=inline(‘sin(x.^2+y.^2)’,’x’,’y’)
MATLAB 7.0
二维图形绘制
二维图形绘制基本语句
构造向量:
例:选项为红色点划线且每个转折点用五角星表示 ‘r-.pentagram’
体重约70kg的某人在短时间内喝下2瓶啤酒后,隔一定时间测量 他的血液中酒精含量(毫克/百毫升),得到数据如下:
时间(小时) 0.25 酒精含量
0.5 68 7 35
0.75 75 8 28
1 82 9 25
1.5 82 10 18Baidu Nhomakorabea
2 77 11 15
2.5 68 12 12
3 68 13 10
3.5 58 14 7
MATLAB科学计算的主要内容
• 三大基本功能:数值计算、符号计算、图形 处理 • 程序设计与应用程序接口 • MATLAB科学计算中的应用
– 在数值分析中的应用
• • • • • 多项式与插值、数据的曲线拟合 数值微分与数值积分 线性代数 非线性方程求根 微分方程
– 在最优化问题中的应用 – 在概率统计中的应用 – 在偏微分方程解法中的应用 – 在复变函数中的应用 – 数学问题的非传统解法
人把酒喝入体内后,酒精进入血液需要有一个吸收的过程,故可认为有一 酒精向体外排泄速率与人体体液中酒精的含量成正比; 个吸收室,且酒精被完全吸收。把肠胃作为Ⅰ室,人体体液作为Ⅱ室,酒 2、仅考虑所喝酒中的酒精全部进入血液,不考虑其他因素的影响; 精被吸收后进入Ⅱ室,并最终由Ⅱ室分解并排除,其运动过程如图:
4 51 15 7
4.5 50 16 4
5 41
30
时间(小时) 6 酒精含量
38
人把酒喝入体内后,酒精进入血液需要有一个吸收的过程,故可认为有一 酒精向体外排泄速率与人体体液中酒精的含量成正比; 个吸收室,且酒精被完全吸收。把肠胃作为Ⅰ室,人体体液作为Ⅱ室,酒 2、仅考虑所喝酒中的酒精全部进入血液,不考虑其他因素的影响; 精被吸收后进入Ⅱ室,并最终由Ⅱ室分解并排除,其运动过程如图:
数学运算符号及标点符号
+ — * .* / ./ ^ .^ \ 加法运算,适用于两个数或两个同阶矩阵相加. 减法运算 乘法运算 点乘运算 除法运算 点除运算 乘幂运算 点乘幂运算 反斜杠表示左除.
(1)MATLAB的每条命令后,若命令后为分号,则禁止显示结果. (2)“%” 后面所有文字为注释. (3) “...”表示续行.
Ⅰ室 (肠胃v1) x1(t) k1 Ⅱ室 (体液v2) x2(t) k2 分解 转移
假设1、人体吸收酒精的速率与吸收室中酒精的含量成正比.
饮酒
其中:
•x1(t) , x2(t) 分别为t 时刻在Ⅰ室、Ⅱ室 中的酒精含量; •v1: Ⅰ室的体积 •v2 : Ⅱ室的体积 •t : 时间 c1=x1(t)/v1为体液中每百毫升酒精含量c2=x2(t)/v2为体液中每百 毫升酒精含量; •k1是酒精从Ⅰ室进入Ⅱ室的速率系数 • k2为酒精从Ⅱ室转移到Ⅱ室外的速率系数; •D为0时刻时Ⅰ室中的酒精含量;
体重约70kg的某人在短时间内喝下2瓶啤酒后,隔一定时间测量他 的血液中酒精含量(毫克/百毫升),得到数据如下:
时间(小时) 酒精含量 时间(小时) 酒精含量
0.25 30 6 38
0.5 68 7 35
0.75 75 8 28
1 82 9 25
1.5 82 10 18
2 77 11 15
2.5 68 12 12
0.8000
2.6000
MATLAB 语言流程控制
• 循环结构
– for 结构
– while 结构
例:用循环求解 >> s=0;for i=1:100 s=s+i;end >> s=0; i=1;while (i<=100) s=s+i; i=i+1;end >> sum(1:100) ans = 5050 例:用循环求解求最小的 m >> s=0; m=0; while (s<=10000), m=m+1; s=s+m; end, [s,m] % 求出 的 m 即是所求 ans = 10011 141
• 直接赋值语句
赋值变量=赋值表达式 例:>> a=pi^2 a= 9.8696 •点运算--矩阵对应元素的直接运算 数学表示 : MATLAB 实现: C=A.*B 例:>> A=[1,2,3;4,5,6;7,8,0]; >> B=A.^A B= 1 4 27 256 3125 46656 823543 16777216 1