饮酒驾车模型的数值分析
目 录
中文摘要 I
英文摘要 II
目录 III
前言 1
第一章 研究背景 2
1.1 现状 2
1.2 已有研究方法 2
1.3 本文研究方法 2
第二章 MATLAB软件 3
2.1 MATLAB的简介 3
2.2 MATLAB函数LSQCURVEFIT 3
2.2.1基本函数原理 3
2.2.2有关函数介绍 3
第三章 饮酒的模型 6
3.1 饮酒的基本原理 6
3.2 房室模型(COMPARTMENT MODEL) 6
3.3 饮酒模型 7
3.3.1模型假设 7
3.3.2符号说明 7
3.3.3模型建立 8
3.3.4参数估计 10
第四章 酒后驾车数值分析 11
4.1 模型例证 11
4.2 模型方法 11
4.3 模型参数估计 11
4.3 模型分析与检验 15
第五章 结果分析 17
致 谢 18
参考文献 19
前 言
随着国民经济的发展和人民生活水平的提高,汽车进入普通百姓家庭已经不再是遥不可及的梦想了。汽车已经成为人们工作和生活的主要交通工具,大多数人购买汽车。面对汽车时代,饮酒驾车是导致交通事故的主要原因。
世界卫生组织的事故调查显示,大约50%至60%的交通事故与酒后驾车有关,来自某国际组织的一项统计数据显示:每33分钟就会有一人死于与饮酒有关的交通事故,专家的统计结果还表明,在每个人的一生中卷入喝酒有关的交通事故的可能性为30%,显而易见,饮酒与开车是多么可怕的致命结合。
饮酒与驾车不能并驾齐驱,因为酒会损伤精神、酒后难驾驭。酒后司机可能会出现对马路上的信号灯反应慢、开车极慢、蛇行、逆向行驶、转弯幅度大、乱刹车、没有原因就停车,或突然转弯、天黑时不开前灯,等等。酒精在人体血液内达到一定的浓度时,人对外界的反应能力及控制能力就会下降,尤其在紧急情况下的能力。这些都是酒后出事征兆和前奏。
开车,给你带来风驰电掣的快感;饮酒,给你带来浑身舒泰的快乐。然而,这两样好东西并同一起就是种悲剧的产生。如若你为了追求一时的刺激与快感,不理会汽车与酒精的结合,那必定是自酿苦果。
车就是车,车开得平稳、安全是你的职责。必须时刻铭记:饮酒不开车,开车不饮酒。
第一章 研究背景
1.1 现状
目前人类生活水平的提高,酒后驾车的概率大大提升。为了降低酒后驾车引起的交通事故。开展“安全从我做起,拒绝酒后驾车”执法行动。在全市机关、企事业单位、社区、行政村,通过摆放展板,播放事故光盘,张贴宣传画,发放宣传品等形式,大力宣传酒后驾车危害性及严重后果,开展禁止酒后驾车专项宣传教育行动;同时,加大餐饮企业集中区域的执法整治力度,对发生酒后驾车单位、驾驶人进行公开曝光,在社会上营造“酒后不开车,开车不喝酒”的良好氛围。
交通部门加强对酒后驾车的管制,时不时的在各马路上设置定期的酒精测试,意在警告广大开车的市民不要酒后驾车。各种检测装置就是根据测试酒精浓度来衡量的。人体内酒精的变化模型一直都是研究的对象。
1.2 已有研究方法
根据药物动力学的原理,酒精进入人体内类似于药物注射。目前根据酒精进入人体内的变化,把复杂变化过程描述出来,建立简单的一室模型和二室模型,根据数据进行线性模拟来求解参数分析模型。
1.3 本文研究方法
本文是从生物学角度出发,通过对酒精进入人体后的生理代谢过程进行分析,利用药物动力学的房室模型,针对不同的快速与慢速饮酒方式,建立二室和一室模型来描绘血液中酒精的浓度随时间变化的模型。
结合给定的数据,目前都是运用MATLAB、Maple等线性模拟求解。但是因模型是个指数函数,本文采用非线性曲线运用MATLAB拟合,使得数据能达到更高的拟合度。
最后根据所求的模型进行具体的模型分析,判断酒后安全驾车的时间。
第二章 MATLAB软件
2.1 MATLAB的简介
MATLAB是美国MathWorks公司出品的商业数学软件,它用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括了MATLAB和Simulink两大部分。
MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathmatica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
2.2 MATLAB函数lsqcurvefit
2.2.1基本函数原理
非线性曲线拟合问题的数学模型为
其中 和 为向量, 为向量值函数。
MATLAB用lsqcurvefit[1]函数进行非线性曲线的拟合。其算法与lsqnonlin函数的算法相同。设置该函数的目的是提供一个更方便于进行数据拟合的方法。
2.2.2有关函数介绍
用lsqcurvefit函数求解最小二乘意义上的非线性曲线拟合(数据拟合)问题。即根据输入数据 和得到的输出数据 ,找到与方程 最佳的拟合系数。该函数的调用格式为:
● lsqcurvefit求解非线性数据拟合问题。lsqcurvefit需要一个用户定义函数来计算向量值函数 。用户定义的函数的向量的大小必须与 的大小相同。
● x = lsqcurvefit(fun, x0, xdata, ydata) 初值为x0,求非线性函数fun(x,xdata)与数据ydata在最小二乘意义上的拟合系数x。ydata的大小必须与fun函数返回的F向量或矩阵的大小相同。
● x = lsqcurvefit(fun, x0, xdata, ydata, lb, ub) 定义解x得一系列下届lb和上届ub,使得总有lb <= x <= ub。
● x = lsqcurvefit(fun, x0, xdata, ydata, lb, ub, options) 用options参数指定的优化参数进行最小化。
● x = lsqcurvefit(fun, x0, xdata, ydata, lb, ub, options, P1, P2,…) 将问题参数P1,P2等直接传递给fun函数。options参数的默认设置为空矩阵。
● [x, resnorm] = lsqcurvefit(…) 返回 处残差的平方和范数值:
sum{(fun(x, xdata)-ydata).^2}
● [x, resnorm, residual] = lsqcurvefit(…) 返回解 处的残差值:fun(x,xdata)-ydata。
● [x, resnorm, residual, exitflag] = lsqcurvefit(…) 返回描述退出条件的exitflag参数。
● [x, resnorm, residual, exitflag, output] = lsqcurvefit(…) 返回包含优化参数的输出结构参数output。
● [x, resnorm, residual, exitflag, output, lamda] = lsqcurvefit(…) 返回包含解 处拉格朗日乘子的结构参数lambda。
● [x, resnorm, residual, exitflag, output, lamda, jacobian] = 99 99lsqcurvefit(…) 返回解 处的雅可比矩阵。
各调用格式中,fun变量为目标函数。fun变量需要输入向量 ,返回 处的目标函数向量 。可以指定fun为一有两个输入参数 和 的命令行对象。如
f=...
inline('x(1)*xdata.^2+x(2)*sin(xdata)','x','xdata');
另外,fun变量可以是一个包含函数名的字符串。该函数可以是M文件、内部文件或MEX文件。若fun='myfun',则该M文件应该具有下面的形式:
function F=myfun(x,xdata)
F=... %计算x处的函数值
若雅可比矩阵也可以求得,并且options.Jacobian通过下列设置为'on',
options=optimset('Jacobian','on')
则函数fun必须在第2个输出变量中输出 处的雅可比矩阵 。注意,当被调用的fun函数只有一个输出变量(此时优化算法只需要 值而不需要 ),则可以通过核对nargout值来避免计算雅可比矩阵。
function[F,J]=myfun(x,xdata)
F=... %x处的目标函数值
if nargout>1 %两个输出变量
J=... %x处的雅可比矩阵
- 08-17
- 08-17
- 08-17
- 08-17
- 08-17
- 08-17
- 08-17
- 08-17
- 08-17
- 08-15