微分方程应用 – Application of ODE
之前我们写了微分方程相关的内容,那么数学建模这种东西完全就只是应用的学科,所以我们写两个案例。
狗追兔子 – Dog Hunt Rabbit
假设在大平原上有一只野兔和一只猎狗,在某一时刻同时发现对方,野兔立即向洞穴跑去,而猎狗也立即向野兔追去,在追击过程中,双方均全力奔跑,即双方速度大小不变,方向可变,问:
(1) 若野兔始终沿直线向洞穴跑去,求猎狗的运动方程和轨迹;
(2) 若野兔始终沿直线向洞穴跑去,试确定猎狗的初始位置范围G,使得猎狗在这一范围内,总可以在兔子进洞前追上它;
(3) 若猎狗已处于问题(2)所述的范围G,则兔子在进洞前肯定会被追上,那么兔子是否可以采取曲线跑向洞穴(速度大小不变)而安全进入洞中?画出两者的运动轨迹;
(4) 若猎狗经过训练,追击时不是直接追向兔子,而是追向兔子的前方,试给出一种计算提前量的方法,并画出两者的运动轨迹.
这个很明显就是使用微分方程进行解决的问题,因为这里有各种变量,不过感觉使用其他的方法当然也未尝不可,比如我最爱的概率模型。但是由于是微分方程的应用,所以还是使用微分方程进行解决
假设在任意的时刻$t$,兔子$R$的位置是$(x_{r},y_{r})$,奔跑的方向与$x$轴的夹角为$\theta_{r}$,而狗$D$的位置是$(x_{d},y_{d})$,奔跑的方向是$D\to R$,假设$v_{r},v_{d}$分别是兔子和猎狗的速度,并且$\frac{v_{r}}{v_{d}}<1$,假设兔子$R$的初始位置是$(x_{r_{0}},y_{r_{o}})$,如下图所示
那么兔子在$t$时刻的位置满足
$$\begin{cases} x_{r} & =x_{r_{0}}+\int_{0}^{t}v_{r}\cos \theta_{r} dt \\ y_{r} & =y_{r_{0}}+\int_{0}^{t}v_{r}\sin \theta_{r} dt \end{cases}$$
而对于猎狗来说,如果记
$$\begin{cases}x_{d}’ & = \frac{v_{d}(x_{r} – x_{d})}{\sqrt{(x_{r}-x_{d})^{2}+(y_{r} – y_{d})^{2}}}\\ y_{d}’ & =\frac{v_{d}(y_{r} – y_{d})}{\sqrt{(x_{r}-x_{d})^{2}+(y_{r} – y_{d})^{2}}} \end{cases}$$
那么他的位置满足
$$\begin{cases} x_{d} & =x_{d_{0}}+\int_{0}^{t} x_{d}’ dt\\ y_{d} & =y_{r_{0}}+\int_{0}^{t}y_{d}’ dt \end{cases}$$
由于现在对于兔子的逃跑的方向具有不确定性,所以两个方程组都不存在解析解。
第一问 – Q1
现在来解决问题,第一问假设野兔始终按照直线向洞穴跑去。那么我们就可以简化问题为下面的这样
以兔子$R$的初始位置作为远点,其奔跑的方向为$y$轴,将其带入狗的运动之中,可以得到
$$\begin{cases}x_{d}’ & = \frac{v_{d}(x_{r} – x_{d})}{\sqrt{(x_{d})^{2}+(y_{r} – y_{d})^{2}}}\\ y_{d}’ & =\frac{v_{d}(y_{r} – y_{d})}{\sqrt{(x_{d})^{2}+(y_{r} – y_{d})^{2}}} \end{cases}$$
然后将他带到上面的那个狗的位置的方程之中
$$\begin{cases} x_{d} & =x_{d_{0}}+\int_{0}^{t} x_{d}’ dt\\ y_{d} & =y_{r_{0}}+\int_{0}^{t}y_{d}’ dt \end{cases}$$
就可以进行求解了。假设兔子的速度是1,而狗的速度是1.5
则在狗的初始位置分别是(5,15),(10,10),(15,5)的结果如上图所示。
第二问 : Q-2
可以想象,一定存在一个范围$T$,如果猎狗的初始位置在$T$内,猎狗就可以在兔子进洞之前追上他,如果猎狗的初始位置在$T$之外,猎狗就不能在兔子进洞之前追上他。现在就是求解$T$的范围
我们仍假定兔子的初始为原点,洞穴在y轴上,以$O$为原点,给出一组$\rho,\theta$,假设猎狗的初始的位置满足
$$\begin{cases}x_{d_0}’ & = \rho \cos \theta \\ y_{d_{0}}’ & = \rho \sin \theta \end{cases}$$
利用之前的方法,在确定$\theta$的情况下,模拟二者的运动,如果兔子成功安全进洞,那么就减小$\rho$如果猎狗追上兔子,那么我们就增加$\rho$。直到找到一组临界的$\rho ,\theta$的组合。那么对于每一个$\theta$都可以找一个对应的$\rho$的临界状态。
如果我们假设猎狗的追击的速度提升一下,假设是1.6米每秒,而兔子是1米每秒,其他的条件保持不变,那么猎狗的初始点如果在下面的这个范围之内就可以追上兔子
而如果改变一下猎狗的速度,很明显的这个圈的范围就会缩小,现在如果是以1.4米每秒的速度追击的话,其范围$T$的表示,在图中使用蓝色进行标记。
Q3 – 第三问
兔子采用曲线跑会不会有什么不同?这个感觉还是比较有意思的话题,那么这个曲线是什么呢?我们假设一开始往某一个地方跑然后再改方向?还是加高斯噪声?那么就假设跑一米,也就是一百次迭代后加一个高斯噪声的扰动,看看结果会不会有什么不同
这时候我们随机给兔子加上高斯噪声,而绿线是如果没有高斯噪声的情况,也就是在之前的情况之下的猎狗的追击的情况,可以发现再加了高斯噪声之后,猎狗就追不上兔子了,而在之前的情况之中,猎狗是可以在兔子进洞之前的最后一秒抓住他的。
Q4 -第四问
如果猎狗经过了训练的话,可以预判兔子的运动方向,我们怎么说这个预判呢?假定兔子刚准备变化下一步的运动的时候,猎狗就可以发现兔子的下一个运动的目的地了。那么猎狗的目标就不是兔子的当前的位置,而是兔子的下一个运动的目的地,此时的某一个结果如下
上图显示的结果是在第909次迭代时的结果,此时的抓住的坐标点(-0.058,9.007) 。需要注意的是,就算是猎狗经过了训练,也不能够保证每一次都抓的住随机奔跑的兔子,甚至在大部分的时间之中也是无法成功的抓住的。
而如果将兔子的变化方向的频率改成每10次就更改一次目的地的话,那么被抓住的可能性会更大,但是被抓住的时间点会靠后,个人推测可能是由于高频的方向变动不仅很难迷惑猎狗,同时使得兔子自己也被自己绕晕了,也就很难达到躲避捕食的宿命。如果是数学解释的话,可能是由于我加入扰动的方式是基于标准的正态分布,那么根据大数定律,我所加的这些随机数,在一定次数之后就相当于没有加入扰动,那么其结果就与一开始的情况下兔子直接向洞出发的情况类似,所以被抓住的时间点会靠后,而且被抓住的可能增加。
而关于其他的计算提前量的方法,可以每过20次迭代根据兔子在这20个迭代之中的运动的方向判断兔子接下来的运动方向,再基于这个运动方向和二者之间的距离进行调整,而不是像本文使用的方法,直接让狗知道兔子的下一步运动并让狗进行调整。
Comments
Leave a Comment