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