數(shù)學(xué)建模-惡狼追兔問(wèn)題_第1頁(yè)
數(shù)學(xué)建模-惡狼追兔問(wèn)題_第2頁(yè)
數(shù)學(xué)建模-惡狼追兔問(wèn)題_第3頁(yè)
數(shù)學(xué)建模-惡狼追兔問(wèn)題_第4頁(yè)
數(shù)學(xué)建模-惡狼追兔問(wèn)題_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGE24淮陰工學(xué)院《數(shù)學(xué)建?!氛n程考試班級(jí):計(jì)科姓名:學(xué)號(hào):06大雅相似度:2.27%評(píng)分表序號(hào)評(píng)審項(xiàng)目指標(biāo)滿分實(shí)際得分1摘要簡(jiǎn)明扼要的寫出建模的思想(思路)、所用的方法建立的模型,模型的數(shù)學(xué)歸類(在數(shù)學(xué)上屬于什么類型)、算法思想(求解思路)以及主要結(jié)果(數(shù)值結(jié)果,結(jié)論;回答題目所問(wèn)的全部“問(wèn)題”)。注意表述:準(zhǔn)確、簡(jiǎn)明、條理清晰;102問(wèn)題一模型:?jiǎn)栴}的分析到位,能夠建立出合理的數(shù)學(xué)模型。20程序:程序正確,可以運(yùn)行,與模型對(duì)應(yīng)。5結(jié)論:明確給出了所有問(wèn)題的答案,并且畫出運(yùn)動(dòng)線路圖。53問(wèn)題二模型:給出了如何求最小速度的模型或算法(例如利用二分法或一維搜索求解本問(wèn)題,并且給出算法流程圖)10程序:程序正確,可以運(yùn)行,并且與模型對(duì)應(yīng)。10結(jié)論:求出狼能夠抓住兔子的最小速度104問(wèn)題三問(wèn)題的解答:(1)兔子和狼在圓弧上的運(yùn)動(dòng)方程表達(dá)式(2)建立的模型(采用計(jì)算機(jī)仿真要給出算法。5結(jié)論:明確給出了問(wèn)題的答案,并且畫出運(yùn)動(dòng)線路圖。55問(wèn)題四問(wèn)題的解答:(1)求出了不同角度下,兔子和巢穴的最大值,結(jié)果用三線表列出。(2)畫出臨界位置的離散點(diǎn)圖像(3)選擇適當(dāng)?shù)那€擬合。5結(jié)論:給出了兔子的安全區(qū)域,并且畫出了該區(qū)域。56文章的整體結(jié)構(gòu)文章的結(jié)構(gòu)完整,格式規(guī)范;圖表完備、規(guī)范;文理通順、語(yǔ)言流暢。10合計(jì):100餓狼追兔摘要本文通過(guò)對(duì)狼與兔子的運(yùn)動(dòng)狀態(tài)分析,通過(guò)微分的思想建立計(jì)算機(jī)仿真模型,研究了狼在不同速度以及兔子在不同運(yùn)動(dòng)軌跡下,狼是否能追上兔子;進(jìn)一步通過(guò)二分法以及橢圓擬合,確定了狼在固定速度下兔子的安全區(qū)域。針對(duì)問(wèn)題1,首先利用微分的思想,將狼追擊兔子的過(guò)程進(jìn)行等分。假設(shè)狼在每一個(gè)很小的時(shí)間間隔內(nèi)運(yùn)動(dòng)的軌跡為一條朝向兔子的直線,而兔子運(yùn)動(dòng)的軌跡為也一條直線,因此我們可以得到狼和兔子的前后兩個(gè)時(shí)刻位置遞推方程,進(jìn)而我們建立計(jì)算機(jī)仿真模型,求解出:狼速度為20米/秒時(shí)無(wú)法追上兔子,兔子跑回巢穴所用時(shí)間為53秒,狼所在位置為(960.781,270.098);狼速度為30米/秒時(shí)可以追上兔子,所用時(shí)間為39.52秒,狼所在位置為(1059.997,261.983)。針對(duì)問(wèn)題2,我們可以利用二分法的思想:選擇選擇一個(gè)狼的速度,此時(shí)狼無(wú)法追上兔子;狼的速度為時(shí)狼可以追上兔子。取中點(diǎn)速度帶入第一問(wèn)仿真程序判斷狼是否追上兔子,如果追上令等于中點(diǎn)速度,如果追不上令等于中點(diǎn)速度,反復(fù)迭代即可求解出狼追上兔子的最小速度為24.3387米/秒。進(jìn)而仿真模擬出該速度下狼的追擊過(guò)程,求得狼跑過(guò)的總路程為1289.9503米。針對(duì)問(wèn)題3,我們可以將狼追擊兔子的過(guò)程分為三個(gè)階段:兔子在直線上奔跑;兔子在圓形水池邊緣奔跑,狼在水池外;狼和兔子均在圓形水池邊緣奔跑。我們將每個(gè)階段分別進(jìn)行仿真模擬,求解得:兔子沿圓弧EFB奔跑狼能追上兔子,追上的位置為(957.539,290.840);兔子沿圓弧EMB奔跑狼能追上兔子,追上位置為(1165.776,324.885)。針對(duì)問(wèn)題4,我們可以選取兔子與巢穴間不同的方位角,利用二分法求解出在該方向上兔子安全回到巢穴的最大距離,進(jìn)而求解出此時(shí)的位置。然后畫出圖像發(fā)現(xiàn)最遠(yuǎn)位置大致在一個(gè)橢圓上,然后我們利用橢圓擬合,求得該橢圓的程為:該橢圓可認(rèn)為是兔子安全區(qū)域的邊界曲線,兔子的安全區(qū)域即為橢圓內(nèi)部。關(guān)鍵詞:微分;計(jì)算機(jī)仿真模擬;二分法;超定方程;擬合。

一、問(wèn)題重述有一只狼位于原點(diǎn)O處,發(fā)現(xiàn)一只位于處的兔子正以12米/秒的速度向巢穴處奔跑,并且狼在追趕兔子時(shí)始終朝著兔子的方向全速奔跑。其中(單位為米)。具體方位信息如圖1所示:圖1狼和兔子的位置示意圖問(wèn)題一、分別求解狼的速度為20米/秒和30米/秒時(shí),狼是否能追上兔子。如果能追上,給出追上所用的時(shí)間和位置;如果不能追上,給出兔子回到巢穴所用時(shí)間和此時(shí)狼的位置。并給出狼追擊兔子的運(yùn)動(dòng)圖像。問(wèn)題二、求解出狼追上兔子的最小速度,以及狼跑過(guò)的路程,給出狼追擊兔子的運(yùn)動(dòng)圖像。問(wèn)題三、如果之間有一個(gè)半徑為L(zhǎng)圓形水池,如圖2所示,狼與兔子跑到水池邊緣時(shí)只能沿著圓弧奔跑。分別求解以下兩種情形:情形1:兔子沿左半紅色圓弧奔跑,狼的速度為24米/秒。情形2:兔子沿右半藍(lán)色圓弧奔跑,狼速的度為26米/秒。求解兔子是否能安全回到巢穴,并給出最終時(shí)刻狼的位置。圖2狼和兔子的位置示意圖問(wèn)題四、狼的速度為24米/秒,針對(duì)圖一中的位置信息,求解出兔子的安全區(qū)域。二、模型假設(shè)假設(shè)狼的運(yùn)動(dòng)方向始終朝向兔子;假設(shè)在極短的時(shí)間內(nèi),狼的運(yùn)動(dòng)軌跡是一條直線;假設(shè)兔子在未回到巢穴或被被狼追上前,狼和兔子都是運(yùn)動(dòng)的;假設(shè)狼和兔子之間的距離小于一定的誤差,即認(rèn)為狼追上兔子;假設(shè)狼和兔子運(yùn)動(dòng)過(guò)程中,兩者速度保持恒定,不受外界的影響;假設(shè)狼和兔子與水池邊緣小于一定距離,即認(rèn)為狼和兔子已到達(dá)水池。三、符號(hào)說(shuō)明:狼的速度;:兔子的速度;:時(shí)刻狼的位置;:時(shí)刻兔子的位置;:時(shí)刻狼和兔子之間的距離;:狼和兔子之間的距離誤差;:狼在速度下必然追上兔子;:狼在速度下必然追不上兔子;:與之間的速度差;:狼能追上兔子最小速度的誤差范圍;:狼能追上兔子的最小速度;:兔子跑到圓形水池邊緣的時(shí)間;:狼跑到圓形水池邊緣的時(shí)間;:狼與圓心之間的距離;:狼跑到圓形水池邊緣時(shí)對(duì)應(yīng)的圓心角;:兔子初始位置與巢穴之間形成的圓心角;:兔子距離巢穴時(shí),狼必然追不上兔子;:兔子距離巢穴時(shí),狼必然追上兔子;:與之間的距離差;:兔子安全回到巢穴最大距離的誤差范圍;:角度下兔子安全回到巢穴的最大距離;:角度下兔子安全回到巢穴的最遠(yuǎn)位置。四、問(wèn)題一的建模與求解對(duì)于問(wèn)題一,我們通過(guò)微分的思想,將狼追擊兔子的過(guò)程進(jìn)行等分,每一等份中狼的運(yùn)動(dòng)軌跡即可假定為朝向兔子的一條直線。進(jìn)而通過(guò)計(jì)算機(jī)仿真模擬,計(jì)算出每一等份狼的位置,即可得到兔子是否可以安全回到巢穴以及狼和兔子的運(yùn)行軌跡。具體思路如下:為了建立計(jì)算機(jī)仿真模型,我們需要計(jì)算出狼追擊兔子前后兩個(gè)時(shí)刻位置的遞推關(guān)系。設(shè)時(shí)刻狼的位置為,兔子的位置為,狼的速度為,兔子的速度為。因?yàn)橥米舆\(yùn)動(dòng)軌跡為朝向巢穴的一條直線,所以經(jīng)過(guò)很小的一個(gè)很小的時(shí)間間隔后,兔子所在的位置為:因?yàn)槔堑姆较蚴冀K朝向兔子,由于選取的時(shí)間間隔足夠小,所以可以認(rèn)為狼在朝向兔子方向上(即直線上)行走了的距離。因此時(shí)間后,狼所在的位置為:其中為直線的傾斜角。因此我們可以通過(guò)反復(fù)的迭代,得到狼和兔子的運(yùn)動(dòng)軌跡。為了進(jìn)一步的簡(jiǎn)化仿真程序,我們可以以兔子跑回巢穴的所花的時(shí)間作為研究的過(guò)程。如果時(shí)刻狼和兔子之間的距離小于一定的誤差,即認(rèn)為此時(shí)狼追上兔子,仿真算法提前結(jié)束。否則兔子安全跑回巢穴,仿真算法結(jié)束。具體的仿真思路如下:第1步:設(shè)定時(shí)間間隔,設(shè)定狼和兔子的距離誤差。當(dāng)前時(shí)刻,此時(shí)狼和兔子的位置為:。第2步:計(jì)算時(shí)刻狼的位置為:時(shí)刻兔子的位置為:第3步:計(jì)算時(shí)刻狼和兔子之間的距離:第4步:如果,說(shuō)明兔子已經(jīng)安全回到巢穴,仿真算法結(jié)束。否則,執(zhí)行第5步。第5步:如果,令:轉(zhuǎn)到第2步;如果,我們認(rèn)為狼追上兔子,仿真算法結(jié)束。根據(jù)上述仿真算法思想,編寫程序代碼(見(jiàn)附錄1)。當(dāng)狼的速度時(shí),兔子安全回到巢穴,兔子安全回到巢穴所用的時(shí)間53秒,此時(shí)獵狗所在的位置為:(960.781045,270.097632),兔子與狼的運(yùn)動(dòng)軌跡如下:圖1狼速度為20米/秒的追擊圖像當(dāng)狼的速度時(shí),狼能夠追上兔子,狼追上兔子所用的時(shí)間為39.52秒,狼追上兔子時(shí)所在的位置為:(1059.997448,261.982903),兔子與狼的運(yùn)動(dòng)軌跡如下:圖2狼速度為30米/秒的追擊圖像五、問(wèn)題二的建模與求解對(duì)于問(wèn)題二,求解狼能追上兔子的最小速度,我們可以選取兩個(gè)速度,其中狼以的速度必然能在兔子安全回到巢穴前追上兔子,以的速度必然無(wú)法在兔子回到巢穴前追上兔子,通過(guò)二分法[7]的思想搜索得到狼能追上兔子的最小速度。求解狼跑過(guò)的路程,可以利用第一問(wèn)的程序,將狼每個(gè)時(shí)間跑過(guò)的路程疊加,即可得到狼跑過(guò)的路程。具體二分法思路如下:第1步:由問(wèn)題一我們得到:狼的速度為20米/秒時(shí)無(wú)法追上兔子,速度為30米/秒時(shí)可以追上兔子,因此選取狼的兩個(gè)速度分別為:。設(shè)定狼能追上兔子最小速度的誤差范圍為。第2步:令,將狼的速度帶入第一問(wèn)的程序代碼即可判斷出狼是否能追上兔子。如果狼能追上兔子,說(shuō)明此時(shí)狼的速度大于狼追上兔子的最小速度,令;如果狼不能追上兔子,說(shuō)明此時(shí)狼的速度小于狼追上兔子的最小速度,令。第3步:計(jì)算與之間的速度差。如果,則狼能追上兔子的最小速度,二分法結(jié)束;如果,轉(zhuǎn)到第2步。根據(jù)上述二分法算法思想,編寫程序代碼(見(jiàn)附錄2),求解得到狼能追上兔子的最小速度為24.3387米/秒。令狼的速度,帶入第一問(wèn)的程序代碼,即可得到狼追趕兔子的奔跑曲線。在第一問(wèn)的仿真算法中,由于狼在每個(gè)時(shí)間內(nèi)跑過(guò)的路程是一個(gè)定值,因此只需將每個(gè)時(shí)間的路程累加起來(lái),即可得到狼跑過(guò)的路程為1289.9503米,狼在能追上兔子的最小速度24.3387米/下追趕兔子的的奔跑圖像如下:圖3狼剛好在兔子跑回巢穴時(shí)追上兔子的圖像六、問(wèn)題三的建模與求解由于兔子與巢穴之間存在一個(gè)水池,狼和兔子無(wú)法跑進(jìn)水池內(nèi)部,到達(dá)水池邊緣時(shí)只能沿著水池奔跑。因此狼追擊兔子的過(guò)程可以分為三個(gè)階段:第一階段為兔子沿著直線奔跑;第二階段為兔子在圓形水池邊緣奔跑,狼尚未到達(dá)圓形水池;第三階段為兔子在圓形水池上奔跑,狼沿著圓形水池追擊兔子。由于狼和兔子的運(yùn)動(dòng)狀態(tài)已知,根據(jù)狼追擊兔子的三個(gè)階段建立計(jì)算機(jī)仿真[3]模型,即可模擬出狼追擊兔子的過(guò)程。情形1:兔子沿紅色圓弧跑第一階段:兔子沿著直線向巢穴奔跑,且尚未到達(dá)圓形水池的邊緣。由于狼一直朝向兔子進(jìn)行追趕,因此在追擊的過(guò)程中,狼不會(huì)到達(dá)到達(dá)圓形水池邊緣。該過(guò)程的仿真算法同第一問(wèn),當(dāng)兔子到達(dá)圓形水池時(shí)仿真算法結(jié)束,具體仿真算法如下:第1步:設(shè)定時(shí)間間隔,設(shè)定狼和兔子的距離誤差。當(dāng)前時(shí)刻,此時(shí)狼和兔子的位置為:。第2步:計(jì)算時(shí)刻狼的位置為:時(shí)刻兔子的位置為:第3步:計(jì)算時(shí)刻狼和兔子之間的距離:第4步:如果,說(shuō)明此時(shí)兔子已經(jīng)到達(dá)圓形水池,設(shè)該時(shí)刻為,即。為了避免兔子跑進(jìn)圓形水池內(nèi)部,假設(shè)該時(shí)刻兔子的位置剛好在點(diǎn),即;狼此時(shí)所在的位置為,仿真算法結(jié)束。否則,執(zhí)行第5步。第5步:如果,令:轉(zhuǎn)到第2步;如果,我們認(rèn)為狼追上兔子,仿真算法結(jié)束。第二階段:兔子在圓弧上奔跑,狼尚未到達(dá)圓形水池。該過(guò)程的仿真算法類似于第一問(wèn),只是兔子的運(yùn)動(dòng)方程發(fā)生了改變。因?yàn)橥米友刂t色圓弧奔跑,且兔子到達(dá)圓形水池邊緣點(diǎn)的時(shí)間為,所以時(shí)刻兔子在圓弧上運(yùn)動(dòng)的路程為,因此時(shí)刻兔子在圓弧上走過(guò)的圓心角,兔子所在的位置為:具體仿真算法如下:第1步:設(shè)定時(shí)間間隔,設(shè)定狼和兔子的距離誤差。當(dāng)前時(shí)刻,此時(shí)狼和兔子的位置為:。第2步:計(jì)算時(shí)刻狼的位置為:時(shí)刻兔子的位置為:第3步:計(jì)算時(shí)刻狼和兔子之間的距離:以及時(shí)刻狼與圓心的距離:第4步:如果,說(shuō)明兔子已經(jīng)安全回到巢穴,仿真算法結(jié)束。否則,執(zhí)行第5步。第5步:如果,說(shuō)明此時(shí)狼已經(jīng)到達(dá)圓形水池,設(shè)該時(shí)刻為,即。為了避免狼跑進(jìn)圓形水池內(nèi)部,我們可以以狼所在的位置做一條水平直線,與圓弧的交點(diǎn)代替此時(shí)狼的位置,即:仿真算法結(jié)束。否則,執(zhí)行第6步。第6步:如果,令:轉(zhuǎn)到第2步;如果,我們認(rèn)為狼追上兔子,仿真算法結(jié)束。第三階段:兔子在圓弧上奔跑,狼沿著圓弧追擊兔子。該過(guò)程狼和兔子均在圓弧上奔跑,由此可以得到狼和兔子的運(yùn)動(dòng)方程。由于狼到達(dá)圓弧時(shí)所在的位置為,因此我們可以求得此時(shí)狼所在位置對(duì)應(yīng)的圓形角為:(:以圓心為端點(diǎn),做一條水平向右長(zhǎng)度為的線段,逆時(shí)針旋轉(zhuǎn)經(jīng)過(guò)點(diǎn)時(shí)所轉(zhuǎn)過(guò)的角度)。由于狼到達(dá)圓弧的時(shí)間為,所以時(shí)刻狼在圓弧上運(yùn)動(dòng)的路程為,因此時(shí)刻狼在圓弧上走過(guò)的圓心角,狼所在的位置為:時(shí)刻兔子所在的位置為:具體仿真算法如下:第1步:設(shè)定時(shí)間間隔,設(shè)定狼和兔子的距離誤差。當(dāng)前時(shí)刻,此時(shí)狼和兔子的位置為:。第2步:計(jì)算時(shí)刻狼的位置為:時(shí)刻兔子的位置為:第3步:計(jì)算時(shí)刻狼和兔子之間的距離:第4步:如果,說(shuō)明兔子已經(jīng)安全回到巢穴,仿真算法結(jié)束。否則,執(zhí)行第5步。第5步:如果,令:轉(zhuǎn)到第2步;如果,我們認(rèn)為狼追上兔子,仿真算法結(jié)束。根據(jù)上述三個(gè)階段的仿真算法思想,編寫程序代碼(見(jiàn)附錄3),選定兔子的速度為12米/秒,狼的速度為24米/秒,求得:兔子不能安全回到巢穴,兔子被狼追到的位置為(957.538658,290.839855),所用的時(shí)間為46.94秒,追擊的圖像如下:圖4兔子沿圓弧EFB奔跑的追擊圖像情形2:兔子沿藍(lán)色圓弧跑第一階段:兔子沿著直線向巢穴奔跑,且尚未到達(dá)圓形水池的邊緣。該階段與情形1第一階段運(yùn)動(dòng)過(guò)程一致,仿真算法同情形1第一階段,即:第1步:設(shè)定時(shí)間間隔,設(shè)定狼和兔子的距離誤差。當(dāng)前時(shí)刻,此時(shí)狼和兔子的位置為:。第2步:計(jì)算時(shí)刻狼的位置為:時(shí)刻兔子的位置為:第3步:計(jì)算時(shí)刻狼和兔子之間的距離:第4步:如果,說(shuō)明此時(shí)兔子已經(jīng)到達(dá)圓形水池,設(shè)該時(shí)刻為,即。為了避免兔子跑進(jìn)圓形水池內(nèi)部,假設(shè)該時(shí)刻兔子的位置剛好在點(diǎn),即;狼此時(shí)所在的位置為,仿真算法結(jié)束。否則,執(zhí)行第5步。第5步:如果,令:轉(zhuǎn)到第2步;如果,我們認(rèn)為狼追上兔子,仿真算法結(jié)束。第二階段:兔子在圓弧上奔跑,狼尚未到達(dá)圓形水池。該階段相較于情形1中的第二階段,兔子沿著右半圓弧運(yùn)動(dòng),導(dǎo)致了兔子的運(yùn)動(dòng)方程發(fā)生了變化。同理我們可以求得時(shí)刻兔子的位置為:時(shí)刻狼到達(dá)圓形水池邊緣,同理我們可以以狼所在的位置做一條水平直線,與圓弧的交點(diǎn)代替此時(shí)狼的位置,即:最終,我們?cè)谇樾?第二階段的仿真算法中修改兔子的位置迭代方程,以及時(shí)刻狼到達(dá)圓形水池邊緣的位置計(jì)算方程,可得到本情形的仿真算法如下:第1步:設(shè)定時(shí)間間隔,設(shè)定狼和兔子的距離誤差。當(dāng)前時(shí)刻,此時(shí)狼和兔子的位置為:。第2步:計(jì)算時(shí)刻狼的位置為:時(shí)刻兔子的位置為:第3步:計(jì)算時(shí)刻狼和兔子之間的距離:以及時(shí)刻狼與圓心的距離:第4步:如果,說(shuō)明兔子已經(jīng)安全回到巢穴,仿真算法結(jié)束。否則,執(zhí)行第5步。第5步:如果,說(shuō)明此時(shí)狼已經(jīng)到達(dá)圓形水池,設(shè)該時(shí)刻為,即。為了避免狼跑進(jìn)圓形水池內(nèi)部,我們選定圓弧的點(diǎn)代替此時(shí)狼的位置,即:仿真算法結(jié)束。否則,執(zhí)行第6步。第6步:如果,令:轉(zhuǎn)到第2步;如果,我們認(rèn)為狼追上兔子,仿真算法結(jié)束。第三階段:兔子在圓弧上奔跑,狼沿著圓弧追擊兔子。由于狼到達(dá)圓弧時(shí)所在的位置為,同理我們可以求得此時(shí)狼所在位置對(duì)應(yīng)的圓形角為:時(shí)刻狼在圓弧上運(yùn)動(dòng)過(guò)路程仍為,走過(guò)的圓心角,狼所在的位置為:兔子依舊沿著圓弧奔跑,因此運(yùn)動(dòng)方程同情形二。最終,我們?cè)谇樾?第三階段的仿真算法中修改狼和兔子的位置迭代方程,可得到本情形的仿真算法如下:第1步:設(shè)定時(shí)間間隔,設(shè)定狼和兔子的距離誤差。當(dāng)前時(shí)刻,此時(shí)狼和兔子的位置為:。第2步:計(jì)算時(shí)刻狼的位置為:時(shí)刻兔子的位置為:第3步:計(jì)算時(shí)刻狼和兔子之間的距離:第4步:如果,說(shuō)明兔子已經(jīng)安全回到巢穴,仿真算法結(jié)束。否則,執(zhí)行第5步。第5步:如果,令:轉(zhuǎn)到第2步;如果,我們認(rèn)為狼追上兔子,仿真算法結(jié)束。根據(jù)上述三個(gè)階段的仿真算法思想,編寫程序代碼(見(jiàn)附錄4),選定兔子的速度為12米/秒,狼的速度為24米/秒,求得:兔子不能安全回到巢穴,兔子被狼追到的位置為(1165.776154,324.885150),所用的時(shí)間為49.81秒,追擊的圖像如下:圖5兔子沿圓弧EMB奔跑的追擊圖像七、問(wèn)題四的建模與求解在本題中,狼的初始位置和兔子的巢穴已知,且狼和兔子的速度也已知,需要我們求解兔子的安全區(qū)域。我們可以設(shè)置兔子從不同的方向跑回巢穴,利用二分法的思想求解出該方向上兔子安全回到巢穴的最遠(yuǎn)距離。進(jìn)一步地,我們根據(jù)不同方向兔子安全回到巢穴的臨界位置進(jìn)行擬合,則在擬合曲線內(nèi)部的區(qū)域即為兔子的安全區(qū)域。具體思路如下:以兔子巢穴為為端點(diǎn),做一條水平向右的線段,線段的長(zhǎng)度即為兔子的初始位置距巢穴的距離,逆時(shí)針旋轉(zhuǎn)一定的角度為方位角,我們即可表示出兔子從各個(gè)方向跑回巢穴。為了進(jìn)一步求得每個(gè)方向上兔子安全回到巢穴距離巢穴的最大值,我們可以通過(guò)二分法尋找到臨界值。為了建立二分法,我們需要準(zhǔn)備算法來(lái)判斷兔子在任意初始位置時(shí)是否能被狼追到,判斷兔子是否被狼追到的算法如下:第一步:設(shè)定時(shí)間間隔,設(shè)定狼和兔子的距離誤差,當(dāng)前時(shí)刻。設(shè)該時(shí)刻兔子距離巢穴距離為,方位角為,則此時(shí)兔子的位置為,狼的位置為。第二步:計(jì)算時(shí)刻狼和兔子的位置。由于兔子一直朝向巢穴奔跑,因此時(shí)刻兔子的位置為:假設(shè)時(shí)間內(nèi)狼在兔子的方向跑過(guò)一條直線,因此時(shí)刻狼的位置為:第3步:計(jì)算時(shí)刻狼和兔子之間的距離:第4步:如果,說(shuō)明兔子已經(jīng)安全回到巢穴,狼未追上兔子,仿真算法結(jié)束。否則,執(zhí)行第5步。第5步:如果,令:轉(zhuǎn)到第2步;如果,我們認(rèn)為狼追上兔子,仿真算法結(jié)束。進(jìn)而我們用二分法求解每個(gè)方向上的最大安全距離,具體思路如下:第1步:設(shè)定兔子的方位角為;設(shè)定兔子距巢穴的距離,其中為兩點(diǎn)的距離,該情形兔子必然安全回到巢穴;設(shè)定兔子距巢穴的距離,該情形兔子必然被狼追到;設(shè)定兔子安全回到巢穴最大距離的誤差范圍為。第2步:令,判斷方位角為,距巢穴的距離為時(shí),兔子是否被狼追到。如果狼能追上兔子,說(shuō)明此時(shí)兔子距離巢穴的距離大于最大安全距離,令;如果狼不能追上兔子,說(shuō)明此時(shí)兔子距離巢穴的距離小于最大安全距離,令。第3步:計(jì)算與之間的距離差。如果,則兔子的最大安全距離為,二分法結(jié)束;如果,轉(zhuǎn)到第2步。根據(jù)上述思想編寫二分法的判斷函數(shù)(見(jiàn)附錄5),選擇方位角,求解出對(duì)應(yīng)兔子的最大安全距離如下(程序見(jiàn)附錄6):表1角度對(duì)應(yīng)最大安全距離方位角(度)最大安全距離(米)方位角(度)最大安全距離(米)0583.6800190574.680110583.6800200570.840220570.8402210572.639930572.6399220579.959740579.8402230591.600250591.6002240606.000060606.0000250621.360170621.3601260635.759980635.7599270647.519990647.5199280655.5602100655.5602290658.9199110658.9199300657.3599120657.3599310650.8803130650.9181320640.3203140640.3203330626.6397150626.7599340611.5200160611.5200350596.5199170596.5493360583.6800180583.6800根據(jù)角度以及對(duì)應(yīng)的兔子最大安全距離,我們可以求解出在該方位角下兔子安全回到巢穴的最遠(yuǎn)位置為:計(jì)算方位角對(duì)應(yīng)的兔子安全回到巢穴的最遠(yuǎn)位置,畫出臨界點(diǎn)圖如下:圖6臨界位置散點(diǎn)圖觀察臨界位置的散點(diǎn)圖,我們可以得到:兔子安全回到巢穴的臨界位置大致在一個(gè)橢圓上,因此我們可以使用橢圓方程進(jìn)行擬合[2],得到兔子安全回到巢穴最大距離的曲線。具體思路如下:因?yàn)闄E圓的一般方程為:為了避免擬合系數(shù)太小,我們選擇橢圓擬合方程為:我們已經(jīng)計(jì)算出了對(duì)應(yīng)的兔子位置坐標(biāo),設(shè)這36個(gè)位置坐標(biāo)分別為,帶入到橢圓的擬合方程中,我們即可得到一個(gè)超定方程組:令則超定方程組可表示成矩陣:令表示的逆,則超定方程組的解可表示為:利用matlab編寫程序代碼(見(jiàn)附錄7),求解出橢圓的擬合系數(shù)為:因此擬合的橢圓方程為:擬合圖像如下:圖7臨界位置的橢圓擬合擬合橢圓上的點(diǎn)可認(rèn)為是該方位角所對(duì)應(yīng)的兔子最遠(yuǎn)安全位置,因此兔子在橢圓內(nèi)部的位置向巢穴奔跑,均不會(huì)被狼追到,因此兔子的安全區(qū)域?yàn)闄E圓內(nèi)部的區(qū)域,即兔子的安全區(qū)域如下圖(程序見(jiàn)附錄8):圖8兔子的安全區(qū)域八、模型的改進(jìn)與檢驗(yàn)在實(shí)際問(wèn)題中,狼追追擊兔子的運(yùn)動(dòng)軌跡類似于一條平滑的曲線,而在本文中我們利用以直代取的思想,可能會(huì)與真實(shí)情況有所誤差,我們可以進(jìn)一步減小時(shí)間間隔,使得狼追擊兔子的過(guò)程更加符合實(shí)際。由于在計(jì)算機(jī)仿真的過(guò)程中,無(wú)法使得狼剛好追到兔子,在狼和兔子距離小于一定誤差時(shí)即認(rèn)為狼追上兔子,我們可以進(jìn)一步縮小距離誤差。惡狼追兔的仿真問(wèn)題可以歸結(jié)為追擊類問(wèn)題,此類問(wèn)題均可利用該模型進(jìn)行求解。參考文獻(xiàn)[1]李昕.MATLAB數(shù)學(xué)建模.北京:清華大學(xué)出版社,2018.[2]王志新等.MATLAB程序設(shè)計(jì)及其數(shù)學(xué)建模應(yīng)用.北京:科學(xué)出版社,2013.[3]周品,趙新芳.MATLAB數(shù)學(xué)建模與仿真.北京:國(guó)防工業(yè)出版社,2009.[4]張智星.MATLAB程序設(shè)計(jì)與應(yīng)用.北京:清華大學(xué)出版社,2002.[5]白其崢等.數(shù)學(xué)建模案例分析.北京:海洋出版社,2000.[6]卓金武.MATLAB在數(shù)學(xué)建模中的應(yīng)用.北京:北京航空航天大學(xué)出版社,2011.[7]司守奎等.數(shù)學(xué)建模算法與應(yīng)用.北京:國(guó)防工業(yè)出版社,2011.附錄附錄1:兔子徑直跑向巢穴追趕程序clear;clc;closeall;L=106;%學(xué)號(hào)后三位H=10*L;C=2*L;M=4*L;vr=12;%兔子的速度vw=20;%狼的速度P=[00];%狼的初始位置Q=[H-C];%兔子的初始位置t=0;%初始時(shí)刻dt=0.01;%時(shí)間間隔error=vw*dt;%誤差范圍holdon;plot(linspace(0,H,100),zeros(1,100),'k--');plot(H*ones(1,100),linspace(-C,M,100),'k--');plot(P(1),P(2),'ro','MarkerFaceColor','r');%狼的初始位置plot(Q(1),Q(2),'bo','MarkerFaceColor','b');%兔子的初始位置plot(H,M,'ko','MarkerFaceColor','k');%兔子的巢穴text(P(1),P(2),'{\itO}');text(Q(1),Q(2),'{\itA}');text(H,M,'{\itB}');while1ift<=(M+C)/vr-dtifnorm(P-Q)<errorfprintf('狼能追到兔子\n');fprintf('狼追上兔子所用的時(shí)間為:%fs\n',t);fprintf('狼追上兔子時(shí)所在的位置為:(%f,%f)\n',P(1),P(2));break;elset=t+dt;P=[P(1)+vw*dt*(Q(1)-P(1))/norm(Q-P),P(2)+vw*dt*(Q(2)-P(2))/norm(Q-P)];%下一時(shí)刻狼的位置Q=[H-C+vr*t];%下一時(shí)刻兔子的位置plot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);pause(eps);endelsefprintf('兔子安全回到巢穴\n');fprintf('兔子安全回到巢穴所用的時(shí)間為:%fs\n',t);fprintf('此時(shí)狼所在的位置為:(%f,%f)\n',P(1),P(2));break;endend附錄2:狼能追上兔子最小速度程序建立pmid函數(shù):functionp=pmid(vr,vw,H,C,M,P,Q,dt)%判斷狼速度為vw時(shí)是否能追上兔子%參數(shù)為狼兔的位置速度信息t=0;%初始時(shí)刻error=vw*dt;%誤差范圍while1ift<=(M+C)/vr-dt%判斷中點(diǎn)速度是否可以追上兔子ifnorm(P-Q)<errorp=1;%追上兔子break;elset=t+dt;P=[P(1)+vw*dt*(Q(1)-P(1))/norm(Q-P),P(2)+vw*dt*(Q(2)-P(2))/norm(Q-P)];Q=[H-C+vr*t];endelsep=0;%未追上兔子break;endend主程序:clear;clc;closeall;L=106;%學(xué)號(hào)后三位H=10*L;C=2*L;M=4*L;vr=12;%兔子的速度P=[00];%狼的初始位置Q=[H-C];%兔子的初始位置dt=0.01;%時(shí)間間隔v1=20;%該速度下狼追不上兔子v2=30;%該速度下狼可以追上兔子while1vw=(v1+v2)/2;p=pmid(vr,vw,H,C,M,P,Q,dt);%判斷狼是否能追上兔子ifp==1%說(shuō)明狼的速度太大v1=v1;v2=vw;else%說(shuō)明狼的速度太小v1=vw;v2=v2;endifnorm(v1-v2)<0.001%v1與v2的速度足夠小vw=(v1+v2)/2;break;endendholdon;plot(linspace(0,H,100),zeros(1,100),'k--');plot(H*ones(1,100),linspace(-C,M,100),'k--');plot(P(1),P(2),'ro','MarkerFaceColor','r');%狼的初始位置plot(Q(1),Q(2),'bo','MarkerFaceColor','b');%兔子的初始位置plot(H,M,'ko','MarkerFaceColor','k');%兔子的巢穴text(P(1),P(2),'{\itO}');text(Q(1),Q(2),'{\itA}');text(H,M,'{\itB}');t=0;s=0;%狼跑過(guò)的路程while1ifQ(2)<=M-vr*dt%兔子跑回巢穴前t=t+dt;P1=P;P=[P(1)+vw*dt*(Q(1)-P(1))/norm(Q-P),P(2)+vw*dt*(Q(2)-P(2))/norm(Q-P)];Q=[H-C+vr*t];plot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);s=s+norm(P-P1);pause(eps);else%兔子跑回巢穴break;endenddisp(['狼能追上兔子的最小速度為:'num2str(vw)'m/s']);disp(['狼跑過(guò)的路程為:'num2str(s)'m']);附錄3:兔子沿圓弧EFB跑回巢穴clear;clc;closeall;L=106;%學(xué)號(hào)后三位H=10*L;C=2*L;M=4*L;vr=12;%兔子的速度vw=24;%狼的速度P=[00];%狼的初始位置Q=[H-C];%兔子的初始位置D=[H3*L];%圓心t=0;%初始時(shí)刻dt=0.01;%時(shí)間間隔error=vw*dt;%誤差范圍theta=0:pi/100:2*pi;x=H+L*cos(theta);y=3*L+L*sin(theta);holdon;axisequal;plot(x,y,'k--');plot(linspace(0,H,100),zeros(1,100),'k--');plot(H*ones(1,100),linspace(-C,M,100),'k--');plot(P(1),P(2),'ro','MarkerFaceColor','r');plot(Q(1),Q(2),'bo','MarkerFaceColor','b');plot(H,M,'ko','MarkerFaceColor','k');plot(H,2*L,'ko','MarkerFaceColor','k');text(P(1),P(2),'{\itO}');text(Q(1),Q(2),'{\itA}');text(H,M,'{\itB}');text(H,2*L,'{\itE}');while1ifQ(2)<2*L%跑到圓形水池前ifnorm(P-Q)<errorplot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);fprintf('狼能追到兔子\n');fprintf('狼追上兔子所用的時(shí)間為:%fs\n',t);fprintf('狼追上兔子時(shí)所在的位置為:(%f,%f)\n',P(1),P(2));break;elseplot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);pause(eps);t=t+dt;P=[P(1)+vw*dt*(Q(1)-P(1))/norm(Q-P),P(2)+vw*dt*(Q(2)-P(2))/norm(Q-P)];%下一時(shí)刻狼的位置Q=[H-C+vr*t];%下一時(shí)刻兔子的位置endelseQ=[H2*L];%假設(shè)當(dāng)狼跑進(jìn)圓內(nèi)時(shí),假設(shè)此時(shí)狼的位置為E點(diǎn)t0=t;break;endendwhile1ift<(4*L+pi*L)/vr%跑回巢穴前ifnorm(P-D)<=LP=[H-sqrt(-8*L^2+6*L*P(2)-P(2)^2)P(2)];%當(dāng)狼跑進(jìn)水池內(nèi),以狼的位置做一條水平線,假設(shè)與圓的交點(diǎn)為此時(shí)狼的位置th0=pi+atan((P(2)-3*L)/(P(1)-H));%此時(shí)狼所在的圓心角t1=t;plot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);break;elseplot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);pause(eps);t=t+dt;P=[P(1)+vw*dt*(Q(1)-P(1))/norm(Q-P),P(2)+vw*dt*(Q(2)-P(2))/norm(Q-P)];%狼在水池外Q=[H-L*sin(vr*(t-t0)/L)2*L+L*(1-cos(vr*(t-t0)/L))];%兔子沿水池跑endelsebreak;%此時(shí)兔子跑回巢穴,未追上endendwhile1ift<(4*L+pi*L)/vr%跑回巢穴前ifnorm(P-Q)<errorfprintf('狼能追到兔子\n');fprintf('狼追上兔子所用的時(shí)間為:%fs\n',t);fprintf('狼追上兔子時(shí)所在的位置為:(%f,%f)\n',P(1),P(2));break;elset=t+dt;P=[H+L*cos(th0-vw*(t-t1)/L)3*L+L*sin(th0-vw*(t-t1)/L)];%狼沿著水池跑Q=[H-L*sin(vr*(t-t0)/L)2*L+L*(1-cos(vr*(t-t0)/L))];%兔子沿著水池跑plot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);pause(eps);endelsefprintf('兔子安全回到巢穴\n');fprintf('兔子安全回到巢穴所用的時(shí)間為:%fs\n',t);fprintf('此時(shí)狼所在的位置為:(%f,%f)\n',P(1),P(2));break;endend附錄4:兔子沿圓弧EMB跑回巢穴clear;clc;closeall;L=106;%學(xué)號(hào)后三位H=10*L;C=2*L;M=4*L;vr=12;%兔子的速度vw=26;%狼的速度P=[00];%狼的初始位置Q=[H-C];%兔子的初始位置D=[H3*L];%圓心t=0;%初始時(shí)刻dt=0.01;%時(shí)間間隔error=vw*dt;%誤差范圍theta=0:pi/100:2*pi;x=H+L*cos(theta);y=3*L+L*sin(theta);holdon;axisequal;plot(x,y,'k--');plot(linspace(0,H,100),zeros(1,100),'k--');plot(H*ones(1,100),linspace(-C,M,100),'k--');plot(P(1),P(2),'ro','MarkerFaceColor','r');plot(Q(1),Q(2),'bo','MarkerFaceColor','b');plot(H,M,'ko','MarkerFaceColor','k');plot(H,2*L,'ko','MarkerFaceColor','k');text(P(1),P(2),'{\itO}');text(Q(1),Q(2),'{\itA}');text(H,M,'{\itB}');text(H,2*L-15,'{\itE}');while1ifQ(2)<2*L%跑到圓形水池前ifnorm(P-Q)<errorplot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);fprintf('狼能追到兔子\n');fprintf('狼追上兔子所用的時(shí)間為:%fs\n',t);fprintf('狼追上兔子時(shí)所在的位置為:(%f,%f)\n',P(1),P(2));break;elseplot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);pause(eps);t=t+dt;P=[P(1)+vw*dt*(Q(1)-P(1))/norm(Q-P),P(2)+vw*dt*(Q(2)-P(2))/norm(Q-P)];%下一時(shí)刻狼的位置Q=[H-C+vr*t];%下一時(shí)刻兔子的位置endelseQ=[H2*L];%假設(shè)當(dāng)狼跑進(jìn)圓內(nèi)時(shí),假設(shè)此時(shí)狼的位置為E點(diǎn)t0=t;break;endendwhile1ift<(4*L+pi*L)/vr%跑回巢穴前ifnorm(P-D)<=LP=[H+sqrt(-8*L^2+6*L*P(2)-P(2)^2)P(2)];%當(dāng)狼跑進(jìn)水池內(nèi),以狼的位置做一條水平線,假設(shè)與圓的交點(diǎn)為此時(shí)狼的位置th0=atan((P(2)-3*L)/(P(1)-H));%此時(shí)狼所在的圓心角t1=t;plot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);break;elseplot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);pause(eps);t=t+dt;P=[P(1)+vw*dt*(Q(1)-P(1))/norm(Q-P),P(2)+vw*dt*(Q(2)-P(2))/norm(Q-P)];%狼在水池外Q=[H+L*sin(vr*(t-t0)/L)2*L+L*(1-cos(vr*(t-t0)/L))];%兔子沿水池跑endelsebreak;%此時(shí)兔子跑回巢穴,未追上endendwhile1ift<(4*L+pi*L)/vr%跑回巢穴前ifnorm(P-Q)<errorfprintf('狼能追到兔子\n');fprintf('狼追上兔子所用的時(shí)間為:%fs\n',t);fprintf('狼追上兔子時(shí)所在的位置為:(%f,%f)\n',P(1),P(2));break;elset=t+dt;P=[H+L*cos(th0+vw*(t-t1)/L)3*L+L*sin(th0+vw*(t-t1)/L)];%狼沿著水池跑Q=[H+L*sin(vr*(t-t0)/L)2*L+L*(1-cos(vr*(t-t0)/L))];%兔子沿著水池跑plot(P(1),P(2),'r.',Q(1),Q(2),'b.','MarkerSize',10);pause(eps);endelsefprintf('兔子安全回到巢穴\n');fprintf('兔子安全回到巢穴所用的時(shí)間為:%fs\n',t);fprintf('此時(shí)狼所在的位置為:(%f,%f)\n',P(1),P(2));break;endend附錄5:二分法求兔子最大安全距離functions=smid(j)%由角度求出兔子距離巢穴的最大距離(安全回到巢穴)L=106;H=10*L;M=4*L;B=[HM];O=[00];vr=12;vw=24;dt=0.01;error=vw*dt;smin=norm(O-B)/5;%設(shè)置兔子距離巢穴較近,必然安全回到巢穴smax=5*norm(O-B);%設(shè)置兔子距離巢穴較遠(yuǎn),必然被狼追到while1t=0;s=(smin+smax)/2;P=[00];%狼初始位置Q=[H+s*cos(j)M+s*sin(j)];%兔子初始位置while1ift<s/vrifnorm(P-Q)<errorp=1;%狼追上兔子break;elset=t+dt;P=[P(1)+vw*dt*(Q(1)-P(1))/norm(Q-P),P(2)+vw*dt*(Q(2)-P(2))/norm(Q-P)];Q=Q+vr*dt*(B-Q)/norm(B-Q);endelsep=0;%狼追不上兔子break;endendifp==1smin=smin;smax=s;elsesmin=s;smax=smax;endifnorm(smin-smax)<0.001%兩個(gè)距離無(wú)限接近s=(smin+smax)/2;break;endend附錄6:不同角度下兔子和巢穴的最大值以及位置clear;clc;closeall;L=106;H=10*L;M=4*L;C=2*L;k=0;forj=0:pi/18:2*pis=smid(j);%求出角度對(duì)應(yīng)兔子和巢穴的最大距離k=k+1;data(k,:)=[js];endtheta_s=[rad2deg(data(:,1))data(:,2)];disp('不同角度下,兔子和巢穴的最大值為:');formatshortdisp(theta_s);xdata=H*ones(k,1)+data(:,2).*cos(data(:,1));ydata=M*ones(k,1)+data(:,2).*sin(data(:,1));xydata=[xdataydata];%邊界坐標(biāo)savexydataxdataydata;plot(xdata,ydata,'r*','MarkerSize',10);title('臨界位置');holdon;plot(linspace(0,H,100),zeros(1,100),'k--');plot(H*ones(1,100),linspace(-C,M,100),'k--');plot(0,0,'ro','MarkerFaceColor','r');%狼的初始位置plot(H,-C,'bo','MarkerFaceColor','b');%兔

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論