基于高阶常微分方程模型饿狼追兔问题分析 1 -基于高阶常微分方程模型饿狼追兔问题分析朱云龙1,赵娜2,孙利杰1,王勃1,程明1,白海滔1,王建1,李开1,赵福兴1,王铁柱11 辽宁工程技术大学采矿工程系,辽宁阜新(123000)2 辽宁工程技术大学生物工程(食品科学)系,辽宁阜新(123000)E-mail:摘要:利用高阶常微分模型饿狼是否能追上兔子。首先,建立狼和兔子的运动轨迹模型,兔子是向正北方向的洞穴直线跑去,狼沿曲线追去。接着,利用matlab 画出狼和兔子的运动轨迹图形。然后,利用解析方法求解x=0时y 的值,依次来判断狼是否能够追上兔子。最后,再用数值微分方法求解x=0时y 的值判断狼是否能够在兔子进洞之前将其擒获,美餐一顿。常微分方程在很多学科领域内有着重要的应用,自动控制、各种电子学装置的设计、弹道的计算、飞机和导弹飞行的稳定性的研究、化学反应过程稳定性的研究等。这些问题都可以化为求常微分方程的解。关键词:高阶常微分;数值微分;数学模型中图分类号:O172.11 引言在我们现实生活中,有很多追击问题,如赛车比赛,田径比赛,鹰抓兔子等等追击现象。那么这些问题是否成立,是否能成功呢?再次将要论述与验证狼和兔子的模型,看看是否能追的上,并通过MATLAB 画出狼和兔子曲线[1]。在我们实现实生活中有很多地方要用到这些追击模型。虽然狼无暇顾及兔子的洞穴所在,并计算怎样才能追上兔子,可它丢掉的仅仅是一顿美餐而已,再寻其它猎物即可。可是我们人类就不同了,如在军事上,跟中导弹追击敌机问题,恰与饿狼追兔问题模型相似。根据追击者和被追击者相差距离和被追击者得逃亡范围,通过计算,适当调整速度,即可追上。倘若不假思索的追击,后果将不堪设想,失去的将不仅仅时一顿每餐那么简单。所以,通过本模型分析将要得到清晰的MATLAB 曲线,使结果明确的显现在计算机上,一目了然,希望此模型能用到我们现实生活中,得到一定用处,提高国民经济和科学技术的应用。2 问题的提出神秘的大自然里,处处暗藏杀机,捕猎和逃生对动物的生存起着至关重要的作用,而奔跑速度和路线是能否追上和逃生的关键因素。这里就讨论一对老冤家的追逃问题,快速奔跑的狼能否追上不远处有洞穴的兔子。有一只兔子、一匹狼,兔子位于狼的正西100 米处,假设兔子与狼同时发现对方并一起起跑,兔子往正北60 米处的巢穴跑,而狼在追兔子。已知兔子、狼是匀速跑且狼的速度是兔子的两倍。试建立数学模型[2]研究以下问题:(1)根据已知条件,建立狼的运动轨迹微分模型。(2)画出兔子与狼的运动轨迹图形。(3)用解析方法求解,判断兔子能否安全回到巢穴。(4)用数值方法求解,判断兔子能否安全回到巢穴。3 模型建设假设狼不知道兔子远处是否有洞穴,故狼的速度方向应该始终是朝向兔子,而兔子是不中国科技论文在线- 2 -断奔跑的,所以狼的速度方向不断的改变,运动轨迹应该是一条光滑的曲线。设兔子的速度为v,以t=0 时刻兔子的位置为原点,兔子朝向狼的方向为x 轴,逆时针旋转90 度的方向为y 轴方向建立平面直角坐标系,t 时刻狼的坐标为(x,y),兔子的坐标为(0,vt),狼的速度方向与x 轴负半轴的夹角为θ。3.1 问题的分析与模型建立3.3.1 建立狼的运动轨迹微分模型作出狼的运动轨迹草图如下:图1 狼的运动轨迹草图Figure 1 the trajectories of a wolf plant 时刻y 对x 求导等于曲线在点(x,y)处的切线斜率,即Y= − tanθ (1)又由于狼的运动方向指向兔子,所以,xvt − ytanθ = = − tanθdxdy(2)由(1)和(2)得,xy vtdxdy −=(3)将狼的速度分解成为沿x 轴和y 轴方向,即x v =dxdt ,yv dydt=,所以,22 2(2v)dtdxdtdy = ⎟⎠⎞⎜⎝+ ⎛ ⎟⎠⎞⎜⎝⎛(4)由(3)式可得,y = x dxdy+ vt (5)两边对t 求导得,中国科技论文在线 3 -vdtdxdxx d ydxdydtdxdxdy = ∗ + ∗ + 22(6)整理,得dtdxdxx d y ∗ 22= −v (7)将(4)式左右两边同乘以2 dtdx⎛ ⎞⎜ ⎟⎝ ⎠,得2 dydx⎛ ⎞⎜ ⎟⎝ ⎠+1=22 4 ⎟⎠⎞⎜⎝⎛dxv dt (8)由(7)、(8)两式得22dxd yvxdxdt = −(9)(9)式即为狼的运动轨迹微分模型。3.3.2 画出兔子与狼的运动轨迹图形根据上述微分方程,利用 matlab 软件中的ode45 函数即可求出二阶微分方程(9)中x值对应的y 值,再利用绘图函数plot 即可画出狼的运动轨迹图像[3]。程序如下:先建立matlab 函数: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’)绘制出来的图像如下图:(其中蓝色代表狼的运动轨迹,红色代表兔子的运动轨迹)中国科技论文在线 5 -图3 狼和兔子的运动轨迹图形Figure 3 wolves and rabbits trajectories graphics4 模型求解4.1 用解析法求解兔子能否安全回到巢穴判断狼是否能追上兔子,可先假设没有洞穴,看看狼再什么位置可以追上兔子,若追上时兔子运动的距离已经超过60 米,那就是说再狼追上兔子之前,兔子已经安全的逃回洞穴之中。用解析法判断狼是否能追上兔子的具体过程[4]如下:可假设p dxdy= ,则22dp d ydx dx= ,那么(9)式可变为22 2 4 1 ⎟⎠⎞⎜⎝+ = ⎛− ∗dxdpvp v x (10)整理得22 2 4 1 ⎟⎠⎞⎜⎝+ = ⎛dxp v dp (11)dxp2 +1 = 2x dp (12)xdxpdp2 1 2=+(13)再对等式两边积分,得( ) '1 ln p + p2 +1 = ln x + C (14)也即中国科技论文在线 6 -p + p2 +1 =C x 1 (15)因为x=100 时,狼的速度方向沿y 轴负向,所以此时p=0,可求得1 C =110(15)式可变为p + p2 +1 = x101(16)两边平方1002 p2 +1+ 2 p p2 +1 = x (17)移项2 p p2 +1 = (2 1)100x − p2 +(18)再次平方(2 1)1004 4 1 2100004 4 4 2 22p4 + p2 = x + p + p + − x p + (19)整理( ) 1 01004 21000022x − p + x + =(20)求p222 1010100 2100210014 10000 ⎟ ⎟⎠⎞⎜ ⎜⎝⎛− = + − = −+=xxxxxxp(21)xp x 520= − (22)因为p dxdy= ,所以(22)式可变为xxdxdy 520= − (23)两边积分即可得到y 与x 的函数关系式3 12 221 1030y = x − x +C (24)因为x=100 时,y=0,所以3 12 220 1 100 10 10030= ∗ − ∗ +C解得2 C =2003=66.67中国科技论文在线 7 -故(24)式可变为3 11 2 10 2 20030 3y = x − x + (25)令x=0,可求得y=2003=66.67因为y=66.67>60,所以在狼追上兔子之前,兔子已经安全逃回到洞穴之中,饿狼只能干瞪眼了。4.2 用数值方法求解兔子能否安全回到巢中前面已经用解析法判断出狼并没有追上兔子,那么我们现在再用数值微分法求出(9)式中x=0 时y 的值,再将y 值与60 比较,若y 大于60,则也说明在兔子安全逃回洞穴之前,狼没有追上兔子,下面就是用数值微分法并借助matlab 软件判断狼是否能够追上兔子的方法:利用matlab 软件中的ode45 函数求出二阶常微分方程的初值,并求出x=100 时y 的值即可判断出狼是否能够追上兔子[5]。具体matlab 程序如下:先建立odefun 函数: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)即可输出结果:ans =63.5007x=0.1 时,y=63.5007>60,而当x=0 时y>63.5007 当然也大于60,所以狼在兔子进洞之前并没有能够追上兔子,一顿美餐就这样从它眼前没了。5 结果分析从图 2 可以粗略的看出x=0 时y 的值大于60,用数学解析法也算出y 值等于66.67 大于60,用数值微分法算出来的y 值也大于60。所以,从种种计算方法表明,在兔子就如洞穴之前,狼时无法将其擒获的。如果换个角度考虑,假设狼知道兔子的洞穴所在,直接跑向其洞穴处守洞待兔。那么根据勾股定理[6],狼运动的距离s= 6 0 2 + 1 0 0 2 =116.6m,此时兔子运动距离为s/2=58.3<60。也就是说兔子还没有逃进洞里,而狼已经再其洞口等待,那么兔子就不敢进洞,只要兔子没法进洞,狼的速度是兔子的2 倍,狼就可将其擒获。可惜,饥饿而又贪婪的狼只想着怎么样快速的追上兔子美餐一顿,哪里有时间而且也不会进行这么复杂的计算,并且很多情况下狼是不知道兔子的洞穴所在,所以,狼只能在快要追到兔子的时候看着兔子溜掉而干瞪眼了