猫追老鼠的Simulink动画仿真

2010-09-15 02:18谢中华
天津科技大学学报 2010年5期
关键词:积分器老鼠动画

谢中华

(天津科技大学理学院,天津 300457)

猫追老鼠的Simulink动画仿真

谢中华

(天津科技大学理学院,天津 300457)

对于数学建模中经典的猫追老鼠问题,建立了该问题的微分方程模型,在此基础上构建了相应的Simulink模型,然后在Matlab软件的Simulink环境下进行仿真,给出了微分方程的数值解.在仿真过程中,通过编写S函数的方式,用动画模拟了猫追老鼠的全过程.

微分方程;Matlab;Simulink;数学建模

Simulink[1–3]是MathWorks公司于1990年推出的产品,是Matlab中的一种可视化仿真工具,是一种基于Matlab的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中.采用Simulink动画仿真的方法在微分方程模型的求解中有着非常广泛的应用[4–5].

数学建模中有一个经典的问题:猫追老鼠问题(或海上缉私问题[6]).为了更加形象,可以从猫追老鼠的角度来描述这个问题.一只猫凭着敏锐的视觉发现其正东方向c米处有一只老鼠,该老鼠正沿着墙根以b米每秒的速度向正北方向奔跑,猫立即以最大速度a米每秒前往追捕.在猫追捕老鼠的过程中,其前进的速度方向始终保持指向老鼠.

本文首先建立此问题的微分方程模型,然后通过Simulink仿真的方式求解此模型,并用动画模拟猫追老鼠的全过程.

1 建立数学模型

如图1所示,以猫的初始位置为原点,以猫和老鼠的初值位置的连线为x轴建立平面直角坐标系.设任意t时刻猫所在位置的坐标为(x,y),此时老鼠所在位置的坐标为(c,bt).由于猫前进的速度方向始终保持指向老鼠,设t时刻猫的前进方向与x轴的夹角为θ,则

图1 猫追老鼠示意图Fig.1 Schematic diagram of cat chased mouse

由几何关系可知

2 建立Simulink模型

Simulink可用于求解式(1)的微分方程组模型.在Matlab的Simulink环境下把求解微分方程组所用到的模块用线条连接起来,建立式(1)的Simulink模型,如图2所示.

图2 猫追老鼠的Simulink模型Fig.2 Simulink model for the problem of cat chased mouse

在图2中,Integrator1和Integrator2是积分器模块.将式(1)的第一个方程的右端项作为积分器模块Integrator1的输入端信号,这样该积分器模块的输出端信号就是t时刻猫所在位置的横坐标x(t).同样的,将式(1)的第二个方程的右端项作为积分器模块Integrator2的输入端信号,由该积分器模块的输出端可得t时刻猫所在位置的纵坐标y(t).积分器模块Integrator1的输出信号x(t)经过函数模块c-u的作用得到信号c-x.常数b经过传递函数(Transfer Fcn)模块得到时间序列信号bt.积分器模块Integrator2的输出信号y( t)与时间序列信号bt经过求和模块得到信号bt-y.把c-x和bt-y分别作为混路器模块的两个输入端信号,其输出端信号为混路后的向量信号,该向量信号再经过两个函数模块,分别得到式(1)中两个方程的右端项,然后再把这两个右端项分别作为积分器模块Integrator1和Integrator2的输入端信号,从而构成一个完整的回路.

建立Simulink模型之后,还要设置模型的参数,例如仿真起始时间、终止时间、迭代步长、模型求解算法等.这些参数均可通过界面操作完成,这里不再详述.

3 编写S函数

为了实现动画模拟猫追老鼠的全过程,在图2所示的Simulink模型中加入S函数模块[5].S函数是系统函数(System Function)的简称,是指采用非图形化的方式(即计算机语言,区别于Simulink的系统模块)描述的一个功能块.通常可以采用Matlab代码,C,C++,Fortran或Ada等语言编写S函数.S函数由特定的语法构成,用来描述并实现连续系统、离散系统以及复合系统等动态系统;S函数能够接受来自Simulink求解器的相关信息,并对求解器发出的命令作出适当的响应,这种交互作用非常类似于Simulink系统模块与求解器的交互作用.一个结构体系完整的S函数包含了描述动态系统所需的全部能力,所有其他的使用情况都是这个结构体系的特例.

对于图2所示的Simulink模型,S函数模块是整个模型的核心.S函数模块的参数设置窗口如图3所示.

图3 S函数模块的参数设置窗口Fig.3 Parameters setting window of the S function block

在S函数模块的参数设置窗口中,可以指定S函数模块所对应的S函数及其参数.这里指定S函数的函数名为sfun_catmouse,其流程图如图4所示.

图4 S函数流程图Fig.4 Flow diagram of S function

4 模型求解与实时仿真

建立式(1)的Simulink模型之后,就可进行模型的求解和实时仿真了.模型中涉及3个参数:猫的速度a、老鼠的速度b、猫与老鼠的初始距离c.假定a=14,m/s,b=8,m/s,c=10,m.在Matlab的Simulink环境下对图2所示的Simulink模型进行仿真,即可求得任意时刻t猫和老鼠所在位置的坐标.以动画形式对猫追老鼠的过程进行仿真,仿真过程的部分画面如图5所示.图5(d)给出了猫追老鼠的行走轨迹,在假定条件下,猫用时1.06 s成功追上了老鼠.

图5 动画截图Fig.5 Screenshots of animation

5 结 论

本研究建立了猫追老鼠的微分方程模型,在Matlab软件的Simulink环境下构建了此微分方程模型所对应的Simulink模型,并进行了动画仿真.相对于微分方程组的其他数值解法,利用Simulink模型进行仿真求解具有快速、准确和直观的优点,并且仿真的过程是实时的、可控的.

[1]Richard Colgren. Basic MATLAB,Simulink and Stateflow[M]. Menlo Park,California,USA:AIAA,2007.

[2]罗贵. 基于MATLAB6.5的500 kV变电站500 kV部分故障模拟及分析[J]. 中国科技博览,2009(33):138–139.

[3]玥王,王小旭,吴石雨,等. 基于Simulink-M文件混合编程方法的飞行器推力方案优化[J]. 北京理工大学学报,2009,29(10):847–849.

[4]张江霞. 利用MATLAB求解微分方程的方法探索[J].机械管理开发,2008,23(6):48–49.

[5]薛定宇,陈阳泉. 基于MATLAB/Simulink的系统仿真技术与应用[M]. 北京:清华大学出版社,2002:252–267,350–366.

[6]姜启源,邢文训,谢金星,等. 大学数学实验[M]. 北京:清华大学出版社,2005:68–78.

Animated Simulation for the Problem of Cat Chased Mouse Based on Simulink Model

XIE Zhong-hua
(College of Science,Tianjin University of Science & Technology,Tianjin 300457,China)

Differential equation modle of mathematical modeling problem that cat chased mouse was builded up. Corresponding Simulink modle was founded on this base. Then this differential equation modle was simulated under the Simulink environment of Matlab. And its numerical solution was obtained. The animated simulation was made for the whole process of the cat chased the mouse by using S function.

differential equation;Matlab;Simulink;mathematical modeling

TP391.9

:A

:1672-6510(2010)05-0057-03

2010-04-08;

2010-07-05

天津市应用基础及前沿技术研究计划重点资助项目(08JCZDJC15000)

谢中华(1978—),男,河南人,讲师,xiezhh@tust.edu.cn.

猜你喜欢
积分器老鼠动画
做个动画给你看
动画发展史
我的动画梦
基于双二阶广义积分器的三相并网系统锁相技术研究
动画批评融入动画教育的思考
笨猫种老鼠
Rogowski线圈数字积分器的直流误差消除方法研究
基于二阶广义积分器的单相并网系统锁相技术的研究
老鼠换胆
EAST上低漂移差分积分器的研制