欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言狼追兔子用函數(shù) c語言狐貍找兔子問題

狼追兔子問題 用C語言編程

#include stdio.h

創(chuàng)新互聯(lián)建站主營象山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),象山h5微信小程序搭建,象山網(wǎng)站營銷推廣歡迎象山等地區(qū)企業(yè)咨詢

void main()

{

bool dong[10]={0};

int lang=0;

for(int i=0;i100;i++)

{

dong[lang]=true;

lang++;

lang+=i;

lang=lang%10;

}

for(int i=0;i10;i++)

if(!dong[i]) printf("兔子可能在第%d洞中\(zhòng)n",i+1);

}

狼追兔子的c語言實現(xiàn)

其實不用循環(huán)1000次的,我有個思路

按照兔子給出的算法,把得出的結(jié)果存到一個單鏈表或者數(shù)組中(用來檢索重復(fù)),

然后定義一個數(shù)據(jù)結(jié)構(gòu)存儲每一個過程,還要定義一個單鏈表或者數(shù)組來存儲每一個過程,如果發(fā)現(xiàn)某一個過程,和以前的出現(xiàn)過的某個過程重復(fù)就可以退出循環(huán)了,因為一個過程總是可以由它的前一個過程推算出來的。

最后,結(jié)果集合中不包含的洞數(shù)就是結(jié)果了。

說具體點就是

1+2 是 第一個過程 3 是第一個結(jié)果

3+3 是 第二個過程 6 是第二個結(jié)果

6+4 是 第三個過程 10 是第三個結(jié)果

0+5 是 第4個過程 5 是第4個結(jié)果

5+6 是 第5個過程 1 是第5個結(jié)果

1+7 是 第6個過程 8 是第6個結(jié)果

8+8 是 第7個過程 6 是第7個結(jié)果

6+9 是 第8個過程 5 是第8個結(jié)果

5+0 是 第9個過程 5 是第9個結(jié)果

5+1 是 第10個過程 6 是第10個結(jié)果

以此類推

由上可知,用來存儲過程的結(jié)構(gòu)體只需要包含一個加數(shù)成員

和一個被加數(shù)成員,如果兩個過程的加數(shù)成員和被加數(shù)成員都是相同的,就可以退出循環(huán)了,這樣最多循環(huán)10×10次就可以得到結(jié)果,實際上只需要20次,就會退出循環(huán)。

過程中加數(shù)成員和被加數(shù)成員以及結(jié)果一旦超過或者等于10,就減去10,這是因為按照兔子的算法,11+12和1+2根本就是一樣的。

利用高階常微分方程模型—餓狼追兔問題

基于高階常微分方程模型餓狼追兔問題分析

;type=1

- 1 -

基于高階常微分方程模型餓狼追兔問題分析

朱云龍1,趙娜2,孫利杰1,王勃1,程明1,白海滔1,

王建1,李開1,趙福興1,王鐵柱1

1 遼寧工程技術(shù)大學(xué)采礦工程系,遼寧阜新(123000)

2 遼寧工程技術(shù)大學(xué)生物工程(食品科學(xué))系,遼寧阜新(123000)

E-mail:zyl275887234@163.com

摘要:利用高階常微分模型餓狼是否能追上兔子。首先,建立狼和兔子的運動軌跡模型,

兔子是向正北方向的洞穴直線跑去,狼沿曲線追去。接著,利用matlab 畫出狼和兔子的運

動軌跡圖形。然后,利用解析方法求解x=0時y 的值,依次來判斷狼是否能夠追上兔子。最

后,再用數(shù)值微分方法求解x=0時y 的值判斷狼是否能夠在兔子進(jìn)洞之前將其擒獲,美餐一

頓。常微分方程在很多學(xué)科領(lǐng)域內(nèi)有著重要的應(yīng)用,自動控制、各種電子學(xué)裝置的設(shè)計、彈

道的計算、飛機(jī)和導(dǎo)彈飛行的穩(wěn)定性的研究、化學(xué)反應(yīng)過程穩(wěn)定性的研究等。這些問題都可

以化為求常微分方程的解。

關(guān)鍵詞:高階常微分;數(shù)值微分;數(shù)學(xué)模型

中圖分類號:O172.1

1 引言

在我們現(xiàn)實生活中,有很多追擊問題,如賽車比賽,田徑比賽,鷹抓兔子等等追擊現(xiàn)象。

那么這些問題是否成立,是否能成功呢?再次將要論述與驗證狼和兔子的模型,看看是否能

追的上,并通過MATLAB 畫出狼和兔子曲線[1]。在我們實現(xiàn)實生活中有很多地方要用到這

些追擊模型。雖然狼無暇顧及兔子的洞穴所在,并計算怎樣才能追上兔子,可它丟掉的僅僅

是一頓美餐而已,再尋其它獵物即可??墒俏覀?nèi)祟惥筒煌?,如在軍事上,跟中?dǎo)彈追擊

敵機(jī)問題,恰與餓狼追兔問題模型相似。根據(jù)追擊者和被追擊者相差距離和被追擊者得逃亡

范圍,通過計算,適當(dāng)調(diào)整速度,即可追上。倘若不假思索的追擊,后果將不堪設(shè)想,失去

的將不僅僅時一頓每餐那么簡單。所以,通過本模型分析將要得到清晰的MATLAB 曲線,

使結(jié)果明確的顯現(xiàn)在計算機(jī)上,一目了然,希望此模型能用到我們現(xiàn)實生活中,得到一定用

處,提高國民經(jīng)濟(jì)和科學(xué)技術(shù)的應(yīng)用。

2 問題的提出

神秘的大自然里,處處暗藏殺機(jī),捕獵和逃生對動物的生存起著至關(guān)重要的作用,而奔

跑速度和路線是能否追上和逃生的關(guān)鍵因素。這里就討論一對老冤家的追逃問題,快速奔跑

的狼能否追上不遠(yuǎn)處有洞穴的兔子。

有一只兔子、一匹狼,兔子位于狼的正西100 米處,假設(shè)兔子與狼同時發(fā)現(xiàn)對方并一起

起跑,兔子往正北60 米處的巢穴跑,而狼在追兔子。已知兔子、狼是勻速跑且狼的速度是

兔子的兩倍。試建立數(shù)學(xué)模型[2]研究以下問題:

(1)根據(jù)已知條件,建立狼的運動軌跡微分模型。

(2)畫出兔子與狼的運動軌跡圖形。

(3)用解析方法求解,判斷兔子能否安全回到巢穴。

(4)用數(shù)值方法求解,判斷兔子能否安全回到巢穴。

3 模型建設(shè)

假設(shè)狼不知道兔子遠(yuǎn)處是否有洞穴,故狼的速度方向應(yīng)該始終是朝向兔子,而兔子是不

中國科技論文在線

- 2 -

斷奔跑的,所以狼的速度方向不斷的改變,運動軌跡應(yīng)該是一條光滑的曲線。設(shè)兔子的速度

為v,以t=0 時刻兔子的位置為原點,兔子朝向狼的方向為x 軸,逆時針旋轉(zhuǎn)90 度的方向

為y 軸方向建立平面直角坐標(biāo)系,t 時刻狼的坐標(biāo)為(x,y),兔子的坐標(biāo)為(0,vt),狼的速

度方向與x 軸負(fù)半軸的夾角為θ。

3.1 問題的分析與模型建立

3.3.1 建立狼的運動軌跡微分模型

作出狼的運動軌跡草圖如下:

圖1 狼的運動軌跡草圖

Figure 1 the trajectories of a wolf plan

t 時刻y 對x 求導(dǎo)等于曲線在點(x,y)處的切線斜率,即

Y= ? tanθ (1)

又由于狼的運動方向指向兔子,所以,

x

vt ? y

tanθ = = ? tanθ

dx

dy

(2)

由(1)和(2)得,

x

y vt

dx

dy ?

=

(3)

將狼的速度分解成為沿x 軸和y 軸方向,即x v =

dx

dt ,

y

v dy

dt

=

,所以,

2

2 2

(2v)

dt

dx

dt

dy = ??

?

??

+ ? ??

?

??

?

(4)

由(3)式可得,

y = x dx

dy

+ vt (5)

兩邊對t 求導(dǎo)得,

中國科技論文在線

- 3 -

v

dt

dx

dx

x d y

dx

dy

dt

dx

dx

dy = ? + ? + 2

2

(6)

整理,得

dt

dx

dx

x d y ? 2

2

= ?v (7)

將(4)式左右兩邊同乘以

2 dt

dx

? ?

? ?

? ?

,得

2 dy

dx

? ?

? ?

? ?

+1=

2

2 4 ??

?

??

?

dx

v dt (8)

由(7)、(8)兩式得

2

2

dx

d y

v

x

dx

dt = ?

(9)

(9)式即為狼的運動軌跡微分模型。

3.3.2 畫出兔子與狼的運動軌跡圖形

根據(jù)上述微分方程,利用 matlab 軟件中的ode45 函數(shù)即可求出二階微分方程(9)中x

值對應(yīng)的y 值,再利用繪圖函數(shù)plot 即可畫出狼的運動軌跡圖像[3]。程序如下:

先建立matlab 函數(shù):

function f=odefun(x,y)

f(1,1)=y(2);

f(2,1)=sqrt(1+y(2).^2)./(2.*x);

再在主程序中輸入下列程序:

t=100:-0.1:0.1;

y0=[0 0];

[T,Y] = ode45('odefun',t,y0);

plot(T,Y(:,1),'-')

即可得到如下曲線,即為狼的運動軌跡圖形。

中國科技論文在線

- 4 -

圖2 狼的運動軌跡圖形

Figure 2 the trajectories of a wolf graphics

兔子的運動軌跡是一條從(0,0)點到其洞穴(0,60)的直線,所以,再在主程序中

輸入以下程序即可將兔子和狼的運動軌跡繪制出來。

x1=[0 0];

y1=[0 60];

plot(T,Y(:,1),'-',x1,y1,’r’)

繪制出來的圖像如下圖:

(其中藍(lán)色代表狼的運動軌跡,紅色代表兔子的運動軌跡)

中國科技論文在線

- 5 -

圖3 狼和兔子的運動軌跡圖形

Figure 3 wolves and rabbits trajectories graphics

4 模型求解

4.1 用解析法求解兔子能否安全回到巢穴

判斷狼是否能追上兔子,可先假設(shè)沒有洞穴,看看狼再什么位置可以追上兔子,若追上

時兔子運動的距離已經(jīng)超過60 米,那就是說再狼追上兔子之前,兔子已經(jīng)安全的逃回洞穴

之中。用解析法判斷狼是否能追上兔子的具體過程[4]如下:

可假設(shè)

p dx

dy

= ,則

2

2

dp d y

dx dx

= ,那么(9)式可變?yōu)?/p>

2

2 2 4 1 ??

?

??

+ = ?? ?

dx

dp

v

p v x (10)

整理得

2

2 2 4 1 ??

?

??

+ = ?

dx

p v dp (11)

dx

p2 +1 = 2x dp (12)

x

dx

p

dp

2 1 2

=

+

(13)

再對等式兩邊積分,得

( ) '

1 ln p + p2 +1 = ln x + C (14)

也即

中國科技論文在線

- 6 -

p + p2 +1 =C x 1 (15)

因為x=100 時,狼的速度方向沿y 軸負(fù)向,所以此時p=0,可求得1 C =

1

10

(15)式可變?yōu)?/p>

p + p2 +1 = x

10

1

(16)

兩邊平方

100

2 p2 +1+ 2 p p2 +1 = x (17)

移項

2 p p2 +1 = (2 1)

100

x ? p2 +

(18)

再次平方

(2 1)

100

4 4 1 2

10000

4 4 4 2 2

2

p4 + p2 = x + p + p + ? x p + (19)

整理

( ) 1 0

100

4 2

10000

2

2

x ? p + x + =

(20)

求p

2

2

2 10

10

100 2

100

2

100

1

4 10000 ? ?

?

?

? ?

?

?

? = + ? = ?

+

=

x

x

x

x

x

x

p

(21)

x

p x 5

20

= ? (22)

因為

p dx

dy

= ,所以(22)式可變?yōu)?/p>

x

x

dx

dy 5

20

= ? (23)

兩邊積分即可得到y(tǒng) 與x 的函數(shù)關(guān)系式

3 1

2 2

2

1 10

30

y = x ? x +C (24)

因為x=100 時,y=0,所以

3 1

2 2

2

0 1 100 10 100

30

= ? ? ? +C

解得

2 C =

200

3

=66.67

中國科技論文在線

- 7 -

故(24)式可變?yōu)?/p>

3 1

1 2 10 2 200

30 3

y = x ? x + (25)

令x=0,可求得y=

200

3

=66.67

因為y=66.6760,所以在狼追上兔子之前,兔子已經(jīng)安全逃回到洞穴之中,餓狼只能

干瞪眼了。

4.2 用數(shù)值方法求解兔子能否安全回到巢中

前面已經(jīng)用解析法判斷出狼并沒有追上兔子,那么我們現(xiàn)在再用數(shù)值微分法求出(9)

式中x=0 時y 的值,再將y 值與60 比較,若y 大于60,則也說明在兔子安全逃回洞穴之前,

狼沒有追上兔子,下面就是用數(shù)值微分法并借助matlab 軟件判斷狼是否能夠追上兔子的方

法:

利用matlab 軟件中的ode45 函數(shù)求出二階常微分方程的初值,并求出x=100 時y 的值

即可判斷出狼是否能夠追上兔子[5]。具體matlab 程序如下:

先建立odefun 函數(shù):

function f=odefun(x,y)

f(1,1)=y(2);

f(2,1)=sqrt(1+y(2).^2)./(2.*x);

再在主程序中輸入如下程序:

t=100:-0.1:0.1;

y0=[0 0];

[T,Y] = ode45('odefun',t,y0);

n=size(Y,1);

Y(n,1)

即可輸出結(jié)果:

ans =63.5007

x=0.1 時,y=63.500760,而當(dāng)x=0 時y63.5007 當(dāng)然也大于60,所以狼在兔子進(jìn)洞之前

并沒有能夠追上兔子,一頓美餐就這樣從它眼前沒了。

5 結(jié)果分析

從圖 2 可以粗略的看出x=0 時y 的值大于60,用數(shù)學(xué)解析法也算出y 值等于66.67 大于

60,用數(shù)值微分法算出來的y 值也大于60。所以,從種種計算方法表明,在兔子就如洞穴

之前,狼時無法將其擒獲的。

如果換個角度考慮,假設(shè)狼知道兔子的洞穴所在,直接跑向其洞穴處守洞待兔。那么根

據(jù)勾股定理[6],狼運動的距離s= 6 0 2 + 1 0 0 2 =116.6m,此時兔子運動距離為s/2=58.360。

也就是說兔子還沒有逃進(jìn)洞里,而狼已經(jīng)再其洞口等待,那么兔子就不敢進(jìn)洞,只要兔子沒

法進(jìn)洞,狼的速度是兔子的2 倍,狼就可將其擒獲??上?,饑餓而又貪婪的狼只想著怎么樣

快速的追上兔子美餐一頓,哪里有時間而且也不會進(jìn)行這么復(fù)雜的計算,并且很多情況下狼

是不知道兔子的洞穴所在,所以,狼只能在快要追到兔子的時候看著兔子溜掉而干瞪眼了

分享文章:c語言狼追兔子用函數(shù) c語言狐貍找兔子問題
標(biāo)題鏈接:http://chinadenli.net/article10/dodcpdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、微信公眾號、網(wǎng)站設(shè)計定制開發(fā)、網(wǎng)站維護(hù)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)