狼 兔

时间:2022-07-26 01:04:35 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。






实验名称:饿狼追兔问题 时间:2011.11.6

一、实验目的和要求:

理解二阶微分法在建模过程中的应用,熟悉利用MATLAB软件求解微分方程的方法。注意模型的普遍性和模型的广泛性。

二、实验内容:

现有一只兔子、一匹狼,兔子位于狼的正西100米处,假设兔子与狼同时发现对方并一起起跑,兔子往正北60米处的巢穴跑,而狼在追兔子。已知兔子、狼是匀速跑且狼的速度是兔子的两倍。问兔子能否安全回到巢穴? 三、实验步骤: 1)变量说明

v1

兔子的速度(单位:/秒)r狼与兔子速度的倍数;v2狼的速度(单位:/秒)显然有v2rv1

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

码)s1s1(t)

s2:在时刻t,狼跑过的路程(单位:码)s2s2(t) Q(x1,y1):表示在时刻t时,兔子的坐标 P(x,y):表示在时刻t时,狼子的坐标 2 模型假设

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

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

yy(x)

3)模型建立

(一)建模准备

t0时,兔子的位置作为直角坐标原点,兔子朝向狼的方向为x轴正向;则显然有兔子位置的横坐标x10。对狼来说,当x100y0,即yx1000t0刚开始追击时,狼的奔跑方向朝向兔子,此时即x轴负方向,则有

yx1000



(二)建立模型

由于狼始终朝向兔子,则在狼所在位置P(x,y)点过狼的轨迹处的切线方向在y轴上的截距为y1 设切线上的动点坐标为(XY,则切线方程为

Yyy(Xx) ………… 1

在(1)中,令X0,则截距Yyyx。此时y1v1t。则此时截距等于兔子所跑过的路程,即:Yy1,从而可得 Yy1yyx …………. 2 t时刻,兔子跑过的路程为

s1y1v1t …………… 3

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

s2rs1ry1 …………… 4

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



s

100

2x

1y2dx ……………. 5

联立(245)得





100

x

1y2dxry1r(yyx) ………… 6

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

y1y2

rx

…………………. 7

微分方程(7)式的初始条件有:



yx1000 yx1000

要判定狼是否追上兔子,可以通过(7)式判定。 对(7)式,

x0,如果计算求解得到y60,则视为没有追上;

x0,如果计算求解得到y60,则视为兔子被追上;

4 模型求解

由微分方程得到其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)时,狼的纵坐标 5)模型结果与分析 运行结果:

狼的坐标(x=0.1) 62.1932

通过上面运行结果可知,狼并没有追上兔子。 6)模型改进

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

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) end%for

dis%兔子到达窝边时,狼兔之间的距离 P %兔子到达窝边时,狼的坐标 Q %兔子到达窝边时,兔子的坐标 模拟程序运行结果 dis =

7.0619 P =

1.6805 53.1410 Q =

0 60

程序结束后,输出狼兔的位置图如下。通过下图可以直观的看到,当兔子回到窝边时,狼还与兔子有一段距离,这表示兔子成功逃脱。

60

50

40

30

20

10

0

0102030405060708090100





了解了二次微分法的求解过程;

学会了一些函数应用; 对追击问题有了进一步的了解。



2012 116












本文来源:https://www.wddqw.com/doc/0e2821711711cc7931b71643.html