謝中華
(天津科技大學理學院,天津 300457)
貓追老鼠的Simulink動畫仿真
謝中華
(天津科技大學理學院,天津 300457)
對于數(shù)學建模中經(jīng)典的貓追老鼠問題,建立了該問題的微分方程模型,在此基礎上構建了相應的Simulink模型,然后在Matlab軟件的Simulink環(huán)境下進行仿真,給出了微分方程的數(shù)值解.在仿真過程中,通過編寫S函數(shù)的方式,用動畫模擬了貓追老鼠的全過程.
微分方程;Matlab;Simulink;數(shù)學建模
Simulink[1–3]是MathWorks公司于1990年推出的產品,是Matlab中的一種可視化仿真工具,是一種基于Matlab的框圖設計環(huán)境,是實現(xiàn)動態(tài)系統(tǒng)建模、仿真和分析的一個軟件包,被廣泛應用于線性系統(tǒng)、非線性系統(tǒng)、數(shù)字控制及數(shù)字信號處理的建模和仿真中.采用Simulink動畫仿真的方法在微分方程模型的求解中有著非常廣泛的應用[4–5].
數(shù)學建模中有一個經(jīng)典的問題:貓追老鼠問題(或海上緝私問題[6]).為了更加形象,可以從貓追老鼠的角度來描述這個問題.一只貓憑著敏銳的視覺發(fā)現(xiàn)其正東方向c米處有一只老鼠,該老鼠正沿著墻根以b米每秒的速度向正北方向奔跑,貓立即以最大速度a米每秒前往追捕.在貓追捕老鼠的過程中,其前進的速度方向始終保持指向老鼠.
本文首先建立此問題的微分方程模型,然后通過Simulink仿真的方式求解此模型,并用動畫模擬貓追老鼠的全過程.
如圖1所示,以貓的初始位置為原點,以貓和老鼠的初值位置的連線為x軸建立平面直角坐標系.設任意t時刻貓所在位置的坐標為(x,y),此時老鼠所在位置的坐標為(c,bt).由于貓前進的速度方向始終保持指向老鼠,設t時刻貓的前進方向與x軸的夾角為θ,則
圖1 貓追老鼠示意圖Fig.1 Schematic diagram of cat chased mouse
由幾何關系可知
Simulink可用于求解式(1)的微分方程組模型.在Matlab的Simulink環(huán)境下把求解微分方程組所用到的模塊用線條連接起來,建立式(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)經(jīng)過函數(shù)模塊c-u的作用得到信號c-x.常數(shù)b經(jīng)過傳遞函數(shù)(Transfer Fcn)模塊得到時間序列信號bt.積分器模塊Integrator2的輸出信號y( t)與時間序列信號bt經(jīng)過求和模塊得到信號bt-y.把c-x和bt-y分別作為混路器模塊的兩個輸入端信號,其輸出端信號為混路后的向量信號,該向量信號再經(jīng)過兩個函數(shù)模塊,分別得到式(1)中兩個方程的右端項,然后再把這兩個右端項分別作為積分器模塊Integrator1和Integrator2的輸入端信號,從而構成一個完整的回路.
建立Simulink模型之后,還要設置模型的參數(shù),例如仿真起始時間、終止時間、迭代步長、模型求解算法等.這些參數(shù)均可通過界面操作完成,這里不再詳述.
為了實現(xiàn)動畫模擬貓追老鼠的全過程,在圖2所示的Simulink模型中加入S函數(shù)模塊[5].S函數(shù)是系統(tǒng)函數(shù)(System Function)的簡稱,是指采用非圖形化的方式(即計算機語言,區(qū)別于Simulink的系統(tǒng)模塊)描述的一個功能塊.通常可以采用Matlab代碼,C,C++,F(xiàn)ortran或Ada等語言編寫S函數(shù).S函數(shù)由特定的語法構成,用來描述并實現(xiàn)連續(xù)系統(tǒng)、離散系統(tǒng)以及復合系統(tǒng)等動態(tài)系統(tǒng);S函數(shù)能夠接受來自Simulink求解器的相關信息,并對求解器發(fā)出的命令作出適當?shù)捻憫?,這種交互作用非常類似于Simulink系統(tǒng)模塊與求解器的交互作用.一個結構體系完整的S函數(shù)包含了描述動態(tài)系統(tǒng)所需的全部能力,所有其他的使用情況都是這個結構體系的特例.
對于圖2所示的Simulink模型,S函數(shù)模塊是整個模型的核心.S函數(shù)模塊的參數(shù)設置窗口如圖3所示.
圖3 S函數(shù)模塊的參數(shù)設置窗口Fig.3 Parameters setting window of the S function block
在S函數(shù)模塊的參數(shù)設置窗口中,可以指定S函數(shù)模塊所對應的S函數(shù)及其參數(shù).這里指定S函數(shù)的函數(shù)名為sfun_catmouse,其流程圖如圖4所示.
圖4 S函數(shù)流程圖Fig.4 Flow diagram of S function
建立式(1)的Simulink模型之后,就可進行模型的求解和實時仿真了.模型中涉及3個參數(shù):貓的速度a、老鼠的速度b、貓與老鼠的初始距離c.假定a=14,m/s,b=8,m/s,c=10,m.在Matlab的Simulink環(huán)境下對圖2所示的Simulink模型進行仿真,即可求得任意時刻t貓和老鼠所在位置的坐標.以動畫形式對貓追老鼠的過程進行仿真,仿真過程的部分畫面如圖5所示.圖5(d)給出了貓追老鼠的行走軌跡,在假定條件下,貓用時1.06 s成功追上了老鼠.
圖5 動畫截圖Fig.5 Screenshots of animation
本研究建立了貓追老鼠的微分方程模型,在Matlab軟件的Simulink環(huán)境下構建了此微分方程模型所對應的Simulink模型,并進行了動畫仿真.相對于微分方程組的其他數(shù)值解法,利用Simulink模型進行仿真求解具有快速、準確和直觀的優(yōu)點,并且仿真的過程是實時的、可控的.
[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文件混合編程方法的飛行器推力方案優(yōu)化[J]. 北京理工大學學報,2009,29(10):847–849.
[4]張江霞. 利用MATLAB求解微分方程的方法探索[J].機械管理開發(fā),2008,23(6):48–49.
[5]薛定宇,陳陽泉. 基于MATLAB/Simulink的系統(tǒng)仿真技術與應用[M]. 北京:清華大學出版社,2002:252–267,350–366.
[6]姜啟源,邢文訓,謝金星,等. 大學數(shù)學實驗[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.