matlab模拟.doc
上传人:yy****24 上传时间:2024-09-10 格式:DOC 页数:25 大小:243KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

matlab模拟.doc

matlab模拟.doc

预览

免费试读已结束,剩余 15 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

模拟技术在许多数学方法中,一般都要用到解析论证和数值计算的技巧。但是,许多现实的系统是很复杂的,其中的随机性因素往往难以用数学公式表示出来,也就很难使用数学推导或数值计算机的手段来分析系统、预测系统的性能。因此,产生了对系统进行模拟的技术。在使用计算机对系统进行模拟之前,一般要清楚模拟的一般步骤和方法。后面将从较小的模拟实例,对模拟技术进行简要的介绍。模拟过程的一般过程为:分析问题,收集资料。需要搞清楚问题要达到的目标,根据问题的性质收集有关随机性因素的资料。这里用得较多的知识为概率统计方面。在这个阶段,还应当估计一下待建立的模拟系统的规模和条件,说明哪些是可以控制的变量,哪些是不可控制的变量。建立模拟模型,编制模拟程序。按照一般的建模方法,对问题进行适当的假设。也就是说,模拟模型未必要将被模拟系统的每个细节全部考虑。模拟模型的优劣将通过与实际系统有关资料的比较来评价。如果一个“粗糙”的模拟模型已经比较符合实际系统的情况,也就没有必要建立费时、复杂的模型。当然,如果开始建立的模型比较简单,与实际系统相差较大,那么可以在建立了简单模型后,逐步加入一些原先没有考虑的因素,直到模型达到预定的要求为止。编写模拟程序之前,要现画出程序框图或写出算法步骤。然后选择合适的计算机语言,编写模拟程序。模拟实现的工具较多,如数学软件类:Matlab、Mathematica、Maple、MathCAD等,还有其它的高级语言工具,如:VisualC++、C++Builder、Delphi、BorlandC++3.1等。运行模拟程序,计算结果。为了减小模拟结果的随机性偏差,一般要多次运行模拟程序,还有就是增加模拟模型的时段次数。分析模拟结果,并检验。模拟结果一般说来反映的是统计特性,结果的合理性、有效性,都需要结合实际的系统来分析,检验。以便提出合理的对策、方案。以上步骤是一个反复的过程,在时间和步骤上是彼此交错的。比如模型的修改和改进,都需要重新编写和改动模拟程序。模拟结果的不合理,则要求检查模型,并修改模拟程序。模拟时间利用计算机进行模拟时,有两种控制模拟时间的方法。一种是固定时间增量法,另一种是可变时间增量法,又叫面向事件法。固定时间增量法,是选用一段合适的时间作单位,然后每隔一个单位时间就计算一次有关参数的值,到达预定的模拟时间后,模拟程序结束。在编写这种程序时,一般可以建立一个“模拟时钟”变量。程序的主体框架一般时个大的循环,循环变量,则为模拟时间;在每个循环体内,就是对每个时段作处理。例如,有些排队论模型,可能就是以每隔一段时间(一天或者一个月)进行处理。采用可变时间增量法编写的模拟程序也有一个“模拟时钟”变量,但它是在一个事件发生时,“模拟时钟”才向前推进。需要注意的是,该模拟方法每一步经过的时间是可变的,而且会自动寻找下一个最早使系统状态发生变化的事件。整个模拟直到“模拟时钟”到达指定的时间长度为止。可以参考有关离散系统仿真的内容。模拟语言运用计算机进行模拟,还要选用适当的程序设计的语言。当然,象C/C++、Pascal、Fortran这样的高级语言是可以用于模拟的实现,特别是在面向对象这样的程序设计思想的引入,使得采用这样的语言实现模拟要更方便些。但是,用这样的语言编写的程序一般都很长,而且编写复杂,调试费时。因此人们研究初了许多专门用于模拟的语言,如GPSS、SIMULA等。这里本书不讨论其他的模拟语言,而主要讲解如何使用Matlab语言编写模拟程序。Matlab不仅数值计算功能强大,而且由于其语言的简洁和高级,编写的代码少,而且容易调试,实现模拟模型很快。随机数的模拟计算机模拟主要用于模拟复杂过程或现象的一些方法。采用计算机模拟一个实验或一个过程,那么用不同的数据重复计算机模拟就能得出统计学结论。使用这种研究方法得到的结论可能在数学上不很精确,但其精确性对于我们了解所模拟的过程已经足够了。考虑落在单位区间(0,1)中的一个实数序列。简单的说,如果这些数是杂乱地分布于整个区间中,且其排列次序似乎也无章法可循,那么这一序列就称为是随机地。下列序列的数就不是随机的:该序列的数是单调增加的或单调减小的;后一个数是关于前一个数的连续函数,如;随机数的产生大多数计算机系统都有随机数生成器,MATLAB也有自己的随机数生成器,但是这些系统产生的随机数一般称为伪随机数,它们不是真正随机的。有许多产生随机数的算法,下面介绍一种算法还是比较令人满意的。产生均匀分布于开区间(0,1)中的随机数。算法如下:取一个整数,使得,对,计算:这里的是范围在中的整数。初始整数称为这个序列的种子。1和这个梅森(Mersenne)质数之间的任何一个整数都可取为种子。下面就用Matlab编写实现该算法的程序,