资源描述
数学建模之计算机模拟武汉理工大学理学院统计学系李宇光 制作数学建模之计算机模拟什么是计算机模拟为什么要进行计算机模拟适用于计算机模拟解决的问题计算机模拟步骤计算机模拟应用举例什么是计算机模拟计算机模拟也叫计算机仿真,是用计算机对一个系统的结构和行为进行动态演示,以评价或预测一个系统的行为效果,为决策提供信息的一种方法,即:用计算机程序直接建立真实系统的模型,并通过计算了解系统随时间变化的行为或特性。计算机模拟分为连续系统仿真和离散系统仿真两大类,这里只对离散系统作初步介绍。为什么要进行计算机模拟不在一个真实系统上实验而是在计算机上模拟,原因主要有以下几点实际系统建立起来之前,要对系统的行为或结果进行分析研究,计算机模拟是行之有效的方法。在一些真实系统上做实验可能会影响系统的正常运行,如生产中任意改变工艺参数可能会导致废品,在经济活动中随意将一个决策付诸行动可能会引起经济混乱。当人是系统的一部分时,他的行为往往会影响实验的效果,这时最好对系统进行模拟研究。在实际系统上实验无法保证每次操作条件完全相同,难以正确判断实验结果的好坏。有些实验时间长、费用高、危险性大,使得实验不易进行有的系统建立之后无法复原,事件发生不可逆。鉴于以上原因,人们一般不直接对真实系统进行实验,而是根据系统的机理进行计算机模拟。适用于计算机模拟解决的问题下列情形中,计算机模拟能有效解决问题:难以用数学公式表示的系统或没有建立和求解数学模型的有效方法。虽然可用解析的方法解决问题,但数学计算和分析过于复杂,这时计算机模拟可能提供简单可靠的求解方法。希望能在较短时间内观察到系统发展的全过程,以估计某些参数对系统行为的影响。难以在实际环境中进行实验和观察时,计算机仿真是唯一可靠的方法,如太空飞行研究。需对系统或过程进行长期运行比较,从大量方案中寻优时。计算机模拟步骤计算机模拟,大致可分为以下四个步骤:系统分析:明确问题并提出总体方案。首先要把被模拟的系统内容表达清楚,弄清仿真的目的和系统边界(即所研究的问题涉及的范围,包括要把所研究的系统与影响系统的环境区分开来。)确定问题的目标函数和可控变量,并加以数量化,找出系统的实体、属性和活动,描述子系统与总系统的关系。模型构造:包括建立模型、收集数据、编写程序、程序验证和模型确认等。建立模型就是选择合适的仿真方法,确定系统的初始状态,设计整个系统的仿真流程图。然后根据需要收集、整理数据,用通用语言或仿真语言编写、调试程序。计算机模拟步骤计算机模拟,大致可分为以下四个步骤:模型运行和改进:首先确定一些具体的运行方案,如初始条件、参数、步长、重复次数等,然后输入数据,运行程序,将得出的仿真结果与实际系统比较,进一步分析和改进模型,直到符合实际系统要求为止。设计格式输出仿真结果:包括提供文件的清单,记录重要的中间结果,输出格式要有利于用户了解整个仿真过程,分析和使用仿真结果。计算机模拟应用举例时间步长法:在系统仿真中,把整个仿真过程分成若干相等的时间间隔,在每一步长内,认为系统所处的状态相同,按照时间流逝顺序,一步一步地对系统活动进行模拟的方法。选取系统的初始状态为时钟零点,仿真时钟每进一次,就对系统状态的一次变化。这一过程,一直到仿真时钟结束为止。计算机模拟应用举例例1 池水含盐量问题 某水池有2000m3水,其中含盐2kg,以每分钟6m3的速率向水池内注入含盐率为0.5kg/m3的盐水,同时又以每分钟4m3的速率从水池流出搅拌均匀的盐水。欲使池中含盐率达到0.2kg/m3,需经过多少时间?引入记号:注水速率VI=6m3/min 排水速率VO=4m3/min 注入水含盐率SI=0.5kg/m3 最终含盐率SF=0.2kg/m3 T时刻水的体积VTm3 T时刻水的含正盐量STkg T时刻水的含盐率SR=ST/VT kg/m3计算机模拟应用举例例1 池水含盐量问题 仿真框图初始化按时间步长前进1min计算池水体积VT,含盐量ST,含盐率SR含盐率达到SF?是否达到10min?打印次数加1输出时间T,水体积VT,含盐量ST,含盐率SR输出结果结束下一个10min开始,记时单元清零是是否否计算机模拟应用举例例1 池水含盐量问题仿真程序:利用matlab时间步长时间步长进行模拟的条件计算机模拟应用举例例1 池水含盐量问题仿真程序:利用matlab计算结果:时间 池水体积 含盐量 含盐率计算机模拟应用举例例1 池水含盐量问题本例也可用微分方程建模:设在T(分)时刻池中含盐量为ST(kg),则在dT时间池中盐的变化量为dST,可得如下微分方程 初始条件为ST|T=0=S0计算机模拟应用举例例1 池水含盐量问题 代入已知数据,可得:在ST/VT=0.2的条件下可算出计算机模拟应用举例事件步长法:以事件发生的时间为增量,按时间的进展,一步一步地对系统行为进行仿真,直到预定的时间结点为止。事件步长法中常用事件表法。事件步长法与时间步长法的主要区别:仿真时钟步长不同步长大小对精度的影响不同每步中对系统状态的扫描不同计算机模拟应用举例例2 排队过程 某商店只有一个收款台,顾客到达收款台的时间间隔服从均值为4.5的负指数分布,每个顾客的服务时间服从均值为3.2、标准差0.6的正态分布。这里时间单位是分钟,且服务时间不取负值。以100个顾客接受服务情况估计每个顾客的平均等待时间、最大队长、收银员的工作效率。计算机模拟应用举例例2 排队过程matlab程序 计算机模拟应用举例例2 排队过程matlab程序运行后的数据空间。本例中有关工作效率方面并没给出。请同学们试着解决。除此之外,将一些非随机问题通过巧妙地引入随机数后得用计算机模拟的Monte Carlo方法,也有非常广泛的应用。例3 用Monte Carlo方法计算定积分计算机模拟应用举例
展开阅读全文