计算机模拟建模李志林,欧宜贵(海南大学信息科学技术学院海南海口570228)*摘要:通过在数学建模教学实践中编写的两个典型案例的建模和利用MATLAB软件求解,具体展示了对连续系统计算机模拟的建模步骤和方法。
关键词:计算机模拟;数学建模;连续系统1. 计算机模拟概述在一定假设条件下,利用数学运算模拟系统的运行,可称为数学模拟,现代的数学模拟都是在计算机上进行的,因此称为计算机模拟。
模拟分为静态模拟和动态模拟。
数值积分中的蒙特卡罗方法就是典型的静态模拟。
动态模拟可分为连续系统模拟和离散事件系统模拟,连续系统模拟研究系统的状态随时间连续变化的情形,其模型一般是微分方程模型。
建模时首先确定系统的连续状态变量,然后将它在时间上进行离散化处理,并由此模拟系统的运行状态。
离散事件系统模拟讨论的是系统状态只在一些离散时间点上,由于随机事件驱动而发生变化,其模型一般用流程图或网络来表示。
为了模拟系统必须设置一个模拟时钟将时间从一个时刻向另一个时刻推进,并且可随时反映系统时间的当前值。
模拟时间推进方式有两种:下次事件推进法和均匀间隔时间推进法。
模拟离散系统常用下次事件推进法,其过程是:置模拟时间初值为0,跳到第一个事件发生的时刻,计算系统的状态,产生未来事件并加入到队列中去;跳到下一事件,计算系统的状态,……,重复这一过程直到满足某个终止条件为止。
例如“海港系统的卸载货物问题”[1]假设某海港在任何时刻只允许一艘船卸载货物,由于船到达的时间是离散的,每艘船卸载货物的时间是随机的,因此,时间推进只能是以一艘船卸载货物从开始到完成,然后跳到下一艘船开始卸载货物。
一般说来,在下列情况中,计算机模拟能有效地解决问题[2]:(1)难于用数学公式表示的系统,或者没有建立和求解数学模型的有效方法; (2)虽然可以用解析的方法解决问题,但数学的分析与计算过于复杂,此时计算机模拟可能提供简单可行的求解方法;(3)希望能在较短的时间内观察到系统发展的全过程,以估计某些参数对系统行为的影响;(4)难以在实际环境中进行实验和观察时,计算机模拟是唯一可行的方法,例如太空飞行的研究;(5)需要对系统或过程进行长期运行比较,从大量方案中寻找最优方案。
模拟连续系统常用均匀间隔时间推进法,下面是我们在计算机模拟数学建模教学中编写的几个典型案例。
2. 三人追逐模型正三角形三个顶点各有一人。
在某一时刻(设为t0=0)三人同时出发以匀速v按顺时针方向走向下一个人。
如果他们始终保持对准目标,则最终将按螺旋状曲线汇合于中心点O。
请求出这种情况下每个人的行进轨迹。
2.1 问题分析与模型的建立+∆建立平面坐标系,取时间间隔t∆,采样并计算每个人在每一时刻t的下一时刻t t基金项目:海南省教育厅高校科研资助项目,批准号:Hjsk200519作者简介:李志林(1964-),男,海南大学信息学院副教授.的位置(坐标)。
设A 追逐B ,t 时刻A 的坐标为,()A A x y ,B 的坐标为(,)B B x y ,容易计算A 在t t +∆的坐标为:,(cos sin )A A x v t y v t ++∆α∆α ,其中cos α=sin α=该问题的算法为:(1) 赋初值,终止时间t,采样间隔t ∆,行进速度v ,及各起点位置;(2) 确定循环次数n;(3) 对j=1,2,3,……n 循环计算,对i=1,2,3,循环计算,1,i j ij x x x x v t +-=+∆1,i j ij y y y x v t +-=+∆(4) 分别将三人各自在各个时刻的对应点连接成一折线,并将它们画在同一图中,即得他们的行进轨迹。
2.2 编程画出轨迹根据算法可编出如下的Matlab 源程序(取1,20,0.02,v t t A ==∆=点的初始坐标为): t=20;dt=0.02;v=1;n=t/dt;x(1,1,1)=5;x(1,1,2)=5*sqrt(3);x(2,1,1)=10;x(2,1,2)=0;x(3,1,1)=0;x(3,1,2)=0;for j=1:nfor i=1:3xx1=x(i,j,1);yy1=x(i,j,2);if(i~=3)xx2=x(i+1,j,1);yy2=x(i+1,j,2);elsexx2=x(1,j,1);yy2=x(1,j,2);enddd=sqrt((xx2-xx1)^2+(yy2-yy1)^2);xx1=xx1+(v*dt*(xx2-xx1))/dd;yy1=yy1+(v*dt*(yy2-yy1))/dd;x(i,j+1,1)=xx1;x(i,j+1,2)=yy1;plot(x(i,j+1,1),x(i,j+1,2),'b');hold on;endend运行后得到三人追逐的轨迹如下图:图1 三人追逐轨迹3. 猎狗攻击问题一只野兔在平面上沿着直线以匀速1v 前进,突然一只猎狗攻击他,这只猎狗在侧后方以恒定速率221,()v v v >奔向该兔,狗的运动方向始终指向这只兔子。
(1)设开始时兔在A 处坐标为 00(,)x y 狗在原点O 处,兔子沿平行于y 轴直线奔跑,请建立数学模型求狗运动的轨迹。
(2)在如下数据下计算并画出狗的轨迹,12001/,3/,10,20v m s v m s x m y m ====。
3.1 模型的建立狗的轨迹曲线为y=y(x),并设经过时间t,狗位于((),())P x t y t ,兔位于001(,)Q x y v t +, PQ 就是狗的运动轨迹曲线弧在点P 处的切线。
因此有010y y v t dy dx x x --=- 即 100()v t x x y y y '=-+- OP弧的长度为:0s =⎰ 又根据题意,弧OP的长度为线段AQ长度的21v v 倍。
即20001[()]v x x y y y v '=-+-⎰整理得微分方程:000()0(0)0,(0)x x y y y y x ⎧''-=⎪⎪⎨⎪'==⎪⎩3.2 猎狗攻击问题的数值解首先将此问题表达为等价的一阶微分方程组,建立此问题的参数方程。
设在任意时刻t ,兔子的坐标为((),())X t Y t ,狗的坐标为((),())x t y t 。
(1)设狗的速度恒为2v ,则2222()()dx dy v dt dt+= (2)由于狗始终对准兔的前进方向,故狗的速度向量平行于兔与狗的位置的差向量,即:,0dx X x dt dy Y y dt ⎡⎤⎢⎥-⎡⎤=λλ>⎢⎥⎢⎥-⎣⎦⎢⎥⎢⎥⎣⎦故2222()()()()dx dy X x Y y dt dt2⎡⎤+=λ-+-⎣⎦ 将(1)中关系代入上式求得λ,进而得到22))dx X x dt dy Y y dt ⎧=-⎪⎪⎨⎪=-⎪⎩因兔子以速度11v =沿直线10x =运动,有010X x == ,0120Y y v t t =+=+。
t=0时,狗位于原点,故(0)0,(0)0x y ==。
(3)由上述关系得到狗的运动轨迹得参数方程为:001))(0)0,(0)0dx x x dt dy y v t y dt x y ⎧=-⎪⎪⎪⎪=+-⎨⎪⎪==⎪⎪⎩(4)利用MA TLAB 软件求狗的运动轨迹的参数方程的解:建立m文件guiji.m如下:function dy=guiji(t,y)dy=zeros(2,1);dy(1)=3*(10-y(1))/sqrt((10-y(1))^2+(t+20-y(2))^2);dy(2)=3*(t+20-y(2))/sqrt((10-y(1))^2+(t+20-y(2))^2);取t0=0;tf=12,建立程序trace.m如下:t0=0;tf=12;[t,y]=ode45('guiji',[t0,tf],[0 0]);plot(y(:,1),y(:,2),'*')hold onx=10;y=20:0.01:50;plot(x,y,'-');运行结果即得狗攻击的轨迹如下:图2 猎狗攻击轨迹参考文献[1] 刘琼荪,龚劬,何中市,傅鹂,任善强.数学实验[M].高等教育出版社,2004.[2] 欧宜贵,李志林,洪世煌.计算机模拟在数学建模中的应用[J].海南大学学报,2004,22(1):89-95.[3] 姜启源,谢金星,叶俊. 数学模型(第三版)[M].北京:高等教育出版社,2003.[4] 魏贵民,郭科.理工数学实验[M]. 高等教育出版社,2003.[5] 赵静,但琦. 数学建模与数学实验(第二版)[M]. 北京:高等教育出版社,2003.[6] 李志林,欧宜贵. 数学建模竞赛与数学素质和人文素质培养[J]. 高等数学研究,2003,(4):22-24.Mathematical modeling of Computer SimulationLI Zhilin , OU Yigui(Institute of Information Science and Technology, Hainan University ,Haikou 570228,China)Abstract: We give two typical continuous system examples to illustrate the steps and methods of computer simulation. By means of MATLAB software we obtained the solution of the mathematical model.Keywords : computer simulation ; mathematical modeling ; continuous system。