数学模型狼追击兔子的问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学模型--狼追击兔子的问题

一、问题重述与分析

(一)问题描述

神秘的大自然里,处处暗藏杀机,捕猎和逃生对动物的生存起着至关重要的作用,而奔跑速度和路线是能否追上和逃生的关键因素。

狼追击兔子问题是欧洲文艺复兴时代的著名人物达.芬奇提出的一个数学问题。当一个兔子正在它的洞穴南面60码处觅食时,一只恶狼出现在兔子正东的100码处。当两只动物同时发现对方以后,兔子奔向自己的洞穴,狼以快于兔子一倍的速度紧追兔子不放。狼在追赶过程中所形成的轨迹就是追击曲线。狼是否会在兔子跑回洞穴之前追赶上兔子?

为了研究狼是否能够追上兔子,可以先考虑求出狼追兔子形成的追击曲线,然后根据曲线来确定狼是否能够追上兔子。

(二)

1、本题目是在限定条件下求极值的问题,可以通过建立有约束条件的微分方程加以模拟。

2、通过运用欧拉公式及改进欧拉公式的原理,结合高等数学的有关知识,对微分方程进行求解。

3、将数学求解用Matlab

4、最后解方程的解结合实际问题转化为具体问题的实际结果。

二、变量说明

v:兔子的速度(单位:码/秒)

1

r :狼与兔子速度的倍数;

2v :狼的速度(单位:码/秒),显然有12rv v =

t :狼追击兔子的时刻(t =0时,表示狼开始追兔子的时刻) 1s :在时刻t ,兔子跑过的路程(单位:码),)(11t s s =

2s :在时刻t ,狼跑过的路程(单位:码),)(22t s s =

Q ),(11y x :表示在时刻t 时,兔子的坐标

P ),(y x :表示在时刻t 时,狼子的坐标

三、 模型假设

1、狼在追击过程中始终朝向兔子;

2、狼追击兔子的轨迹看作是一条光滑的曲线,即将动点P ),(y x 的轨迹看作一条曲线,曲线方程表示为)(x y y =。

3、

四、 模型建立

(一)建模准备

以t =0时,兔子的位置作为直角坐标原点,兔子朝向狼的方向为x 轴正向;

则显然有兔子位置的横坐标01=x 。

对狼来说,当x =100,y =0,即0100==x y

在t =0刚开始追击时,狼的奔跑方向朝向兔子,此时即x 轴负方向, 则有 0100='=x y

(二)建立模型

1、追击方向的讨论

由于狼始终朝向兔子,则在狼所在位置P ),(y x 点过狼的轨迹处的切线方向在y 轴上的截距为1y 。

设切线上的动点坐标为(X ,Y ),则切线方程为

)(x X y y Y -'=- (1)

在(1)中,令X =0,则截距x y y Y '-=。

此时t v y 11=。

则此时截距等于兔子所跑过的路程,即:

1y Y =,

从而可得

x y y y Y '-==1 (2)

2、狼与兔子速度关系的建模

在t 时刻,兔子跑过的路程为

t v y s 111==

(3) 由于狼的速度是兔子的r 倍,则狼跑的路程为

1

12ry rs s == (4)

狼跑过的路程可以用对弧长的曲线积分知识得到,如下。

dx y s x ⎰'+=100

221

(5) 联立(2)、(4)、(5)得

)(11100

2x y y r ry dx y x '-=='+⎰

(6) 对(6)两边求对x 的导数,化简得

rx

y y 2

1'+='' (7) 微分方程(7)式的初始条件有:

0100==x y

0100='=x y

3、是否追上的判断

要判定狼是否追上兔子,

可以通过(7)式判定。

对(7)式,

当x =0,如果计算求解得到60≥y ,则视为没有追上;

当x =0,如果计算求解得到60

五、 模型求解

由微分方程得到其Matlab 函数

function yy=odefunlt(x,y)

%以狼在追击过程中的横坐标为自变量

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

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

主程序:

tspan=100:-0.1:0.1;%以狼的x 坐标为自变量

y0=[0 0];

%下面只知道狼是否追上兔子,但是不易推得兔子刚刚到达窝边时,

狼与兔之间的距离

[T,Y] = ode45('odefunlt',tspan,y0);

n=size(Y,1);

disp('狼的坐标(x=0.1)')

disp(Y(n,1))%通过追击曲线计算当狼的横坐标为0.1(即tspan=0.1)时,狼的纵坐标

六、模型结果与分析

运行结果:

狼的坐标(x=0.1)

62.1932

通过上面运行结果可知,狼并没有追上兔子。

七、思考题

通过上面的结果已经知道狼并没有追上兔子。那么兔子跑回窝边时,狼与兔子之间的距离是多少?上面的程序不能解决此问题,那么用什么办法解决呢?

(一)解决思路

可以对狼与兔子的追击过程通过计算机进行模拟,然后从模拟结果获取。

模拟程序如下,程序文件名sim_langtu.m:

function sim_langtu

%《狼兔追击问题》

%(离散模拟)

%这里没有具体考虑狼、兔的具体速度

%主要通过二者的速度倍速关系及方向向量奔跑过程

Q=[0 0];%兔子坐标

P=[100 0];%狼坐标

PQ=Q-P;%狼兔方向向量

step =1;%模拟步长:兔子奔跑的距离,step越小就越精确

count = 60/step;%以兔子的奔跑距离划分

PQ=PQ/norm(PQ)*step;%归一化,单位向量

trackP=P;

trackQ=Q;

for k=1:count;

P = P + 2*PQ;%2倍速度

Q = Q + step*[0 1];%[0 1]为兔子奔跑方向的单位方向向量

PQ = Q - P;

trackP(1+k,:)=P;

trackQ(1+k,:)=Q;

PQ=PQ/norm(PQ)*step;%归一化,单位向量

dis= sqrt(sum((P-Q).^2));

plot(trackP(:,1),trackP(:,2),'*',Q(1),Q(2),'rp',0,60,'r+'); pause(0.5)

相关文档
最新文档