資源描述:
《第7講:仿真模型的matlab實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第7講仿真模型與Matlab實現(xiàn)王丹理學(xué)院數(shù)學(xué)與系統(tǒng)科學(xué)系2016年夏季例1:生命游戲生命游戲(gameoflife)是由劍橋大學(xué)的數(shù)學(xué)家JohnHortonConway在1970年提出來的。元胞分布在規(guī)則劃分的二維網(wǎng)格上;元胞具有0,1兩種狀態(tài),0代表“死”,1代表“生”;元胞以相鄰的8個元胞為鄰居;一個元胞的生死由其在該時刻本身的生死狀態(tài)和周圍八個鄰居的狀態(tài)決定。生命游戲的規(guī)則:生存:對一個活的元胞,如果它的鄰居中有兩個或三個元胞是活的,那么該元胞將繼續(xù)生存下去。死亡:對一個活的元胞(a)如果它的鄰居中有四個或四個以上的元胞是活的,那么該元胞將死去;(b)如果它的鄰
2、居中只有一個或沒有活的元胞,那么該元胞也將死去。繁殖:對一個死的元胞,如果它的鄰居中有3個(不能多也不能少)活的,那么該元胞將成為一個活的元胞。生命游戲的規(guī)則(數(shù)學(xué)形式):規(guī)則的不斷演化所形成的規(guī)律性與初始狀態(tài)有關(guān),不同的初始狀態(tài)可能導(dǎo)致不同的演化結(jié)果。生命游戲的一些演化過程和形態(tài)演示(1)完全生成初始狀態(tài)(2)脈沖星(Explore)(3)滑翔機(Glider)(4)小脈沖星(SmallExplore)(5)10元胞行(10Cellsrow)(6)輕型飛船(LightweightSpaceship)(7)圖姆勒(Tumler)(8)滑翔機發(fā)射器(GosperGlide
3、rGun)完全生成初始狀態(tài)脈沖星(Explore)滑翔機(Glider)10元胞行(10Cellsrow)輕型飛船(LightweightSpaceship)圖姆勒(Tumler)滑翔機發(fā)射器(GosperGliderGun)滑翔機發(fā)射器(GosperGliderGun)程序?qū)崿F(xiàn)幾個核心問題:(1)棋盤狀態(tài)如何表示?(2)鄰域活細胞總數(shù)如何統(tǒng)計?(3)元胞自動機的狀態(tài)改變規(guī)則在程序中如何體現(xiàn)?(4)動畫如何生成?(5)初始狀態(tài)如何給定?(1)棋盤狀態(tài)如何表示?用一個0-1矩陣表示元胞自動機的棋盤,即:(2)鄰域活細胞總數(shù)如何統(tǒng)計?(3)元胞自動機的狀態(tài)改變規(guī)則在程序中如
4、何體現(xiàn)?換一種寫法:程序效率差異顯著(4)動畫如何生成?初始化:每次更新:(5)初始狀態(tài)如何給定?直接賦值,如省略了賦初值語句例2:Langton'sant蘭頓螞蟻是元胞自動機另外一個經(jīng)典的案例。其通過簡單兩條規(guī)則模擬螞蟻的行為規(guī)律。螞蟻在方形網(wǎng)格上運動,網(wǎng)格分為黑色和白色兩種,螞蟻在網(wǎng)格上頭可朝向上、下、左、右四個方向,頭朝向哪個方向,下一步運動就向該方向,并且不改變頭的方向,運動遵循兩條規(guī)則:(1)若螞蟻位于黑色網(wǎng)格,則頭向右轉(zhuǎn)90度,前進一步,并將原網(wǎng)格變成白色;(2)若螞蟻位于白色網(wǎng)格,則頭向左轉(zhuǎn)90度,前進一步,并將原網(wǎng)格變成黑色;通過模擬可以發(fā)現(xiàn),螞蟻表現(xiàn)出
5、了相當(dāng)復(fù)雜的行為。初始狀態(tài)為一只小螞蟻位于網(wǎng)格中間,且頭朝上。隨著螞蟻的行走演變,系統(tǒng)行為表現(xiàn)為三個階段:程序?qū)崿F(xiàn)核心變量:(1)棋盤的狀態(tài)改變(2)螞蟻的當(dāng)前位置和頭的朝向用一個二維數(shù)組表示棋盤的狀態(tài),假設(shè)棋盤大小為200*200,螞蟻位于棋盤中心(100,100)位置,初始螞蟻頭朝上。棋盤:cells(1:200,1:200)=1;%白色棋盤posx=100;posy=100;%螞蟻當(dāng)前位置direct=1;%1,2,3,4代表從上開始順時針?biāo)膫€方向棋盤大小全為白色棋盤設(shè)定圖像顯示螞蟻初始位置和方向當(dāng)前位置為黑格頭朝上頭朝右頭朝下頭朝左當(dāng)前位置為白格頭朝上頭朝右頭朝
6、下頭朝左例3:森林火災(zāi)模擬元胞空間采用2維正方形網(wǎng)格自動機,元胞包括三種狀態(tài):正在生長的樹(綠色),正在燃燒的樹(紅色)和空狀態(tài)(黑色)。初始狀態(tài)由這三種情況隨機填充,鄰域取Moore型。每一步按下述規(guī)則更新狀態(tài):(1)正在燃燒的樹變?yōu)榭諣顟B(tài);(2)如果正在生長的樹格位最近的鄰居中有不少于一棵樹正在燃燒,則它將變?yōu)槿紵隣顟B(tài);(3)如果是空狀態(tài)格位,則其以概率p生長出樹;(4)考慮到閃電的作用,在最近鄰居中沒有正在燃燒的樹(周圍全是樹且沒有燃燒)的情況下,生長樹在每個時間步以概率f變成燃燒的樹。程序?qū)崿F(xiàn)核心變量:規(guī)則(1)—規(guī)則(4)的實現(xiàn)!用一個二維數(shù)組表示棋盤的狀態(tài),
7、假設(shè)棋盤大小為100*100,初始根據(jù)概率隨機確定是否有樹。棋盤:S=rand(100);%隨機生成[0,1]間的棋盤矩陣S(S<=0.5)=0;S(S>0.5)=1;Sk=zeros(102);Sk(2:N+1,2:N+1)=S;例4:基于元胞自動機的交通流模擬將道路離散化為一維網(wǎng)格,車輛為元胞,勻速行駛,其在一維網(wǎng)格上的移動看成一維網(wǎng)格的狀態(tài)變化,鄰域取前后各一個位置,即鄰域半徑r=1,初始狀態(tài)為道路入口處有一輛車,隨著時間的進行,道路入口處按均勻分布隨機產(chǎn)生一輛車作為道路的輸入(產(chǎn)生概率決定了車流密度),車輛在道路上的移動可使用元胞