猎狗追兔子问题的分析

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

% z 为猎狗与兔子的距离
if z<0.5
%如果距离小于 0.5,则认为己追上兔子
注意: 经实验发现比较值不能设得太小,否则
猎狗以任何速度都观察不出它能在 15 秒之前
追上兔子
break
%跳出 for 循环
end
Xt=-sqrt(2)*4*i,Yt=sqrt(2)*4*i
%在 t=i 时刻,定义兔子的位置
参考
hold on
for i=0 :dt :15
z=sqrt((Xt-xt)^2+(Yt-yt)^2)
%z 为猎狗与兔子的距离
if z<0.5
%如果距离小于 0.5,则认为己追上兔子,注意比
较值不能设得过小,当然太大也更不准确
break
%跳出 for 循环
elseif z<30
vt=vt-dt*0.5*vt
yt=yt+ w*(Yt-yt)/sqrt((Xt-xt)^2+(Yt-yt)^2)*dt
plot(xt,yt,'r',Xt,Yt,'b'),hold on
%画出兔子和猎狗的轨迹
else
Xt=-sqrt(2)*4*i,Yt=sqrt(2)*4*i
%在 t=i 时刻,定义兔子的位置
xt=xt+w*(Xt-xt)/sqrt((Xt-xt)^2+(Yt-yt)^2)*dt %在 t=i 时刻,猎狗的位置
yt=yt+ w*(Yt-yt)/sqrt((Xt-xt)^2+(Yt-yt)^2)*dt
plot(xt,yt,'r',Xt,Yt,'b'),hold on
%画出兔子和猎狗的轨迹
end
end
通过以上程序发现对于问题 3,猎狗以大约 16.2 米/秒的最小速度可追上兔子 若 i<15,则 i 的数值就是猎狗追上兔子的时间,若 i=15,这时可能追上了也可能没有追上,要具体 分析.
%在一个时间间隔 dt 之内,兔子的速率为前一
时间间隔的速率减去 0.5*v*dt
w=w+0.1*w*dt
%定义猎狗的速率
Xt=Xt-vt*dt*sqrt(2)/2
%兔子的新坐标
Yt=Yt+vt*dt*sqrt(2)/2
xt=xt+w*(Xt-xt)/sqrt((Xt-xt)^2+(Yt-yt)^2)*dt %猎狗的新坐标
(15 秒时兔子刚好到洞口)
P1
E
W
a
P2
Ox
B
S
2
2
t=0 时,X=0,Y=0;x=- 200,y=- 200
2
2
追到时:X=x,Y=y
2
2
t 时刻兔子的速度 dX/dt=- 8,dY/dt= 8
2
2
2
2
t 时刻兔子的位置 X(t)=- 8t,Y(t)= 8t
2
2
t 时刻猎狗的速度 dx/dt=wcos(a)=w*(X-x)/ ( X x)2 (Y y)2 dy/dt=wsin(a)=w*(Y-y)/ ( X x)2 (Y y)2
. 如图:有一只猎狗在 B 点位置,发现了一只兔子在正东
北方距离它 200m 的地方 O 处,此时兔子开始以 8m/s 的速度正 向正西北方向,距离为 120m 的洞口 A 全速跑去. 假设猎狗在追 赶兔子的时候,始终朝着兔子的方向全速奔跑,回答下面的问 题:
⑴ 猎狗能追上兔子的最小速度是多少? ⑵ 在猎狗能追上兔子的情况下,猎狗跑过的路程是多少? ⑶ 假设猎狗在追赶过程中,当猎狗与兔子之间的距离为 30m 时,兔子由于害怕导致奔跑速度每秒减半,而猎狗却由于 兴奋奔跑速度每秒增加 0.1 倍,在这种情况下回答前面两个问题.
程序:dog.m
function dy=dog(t,y)
w=8*2.135
% w 为猎狗的速度,2.135 指猎狗是兔子速度的 2.135 倍
dy=zeros(2,1)
dy(1)=w*(-sqrt(2)/2*8*t-y(1))/sqrt((-sqrt(2)/2*8*t-y(1))^2+(sqrt(2)/2*8*t-y(2))
A W
B
N OE
S
设:
t 时刻兔子的坐标:X(t),Y(t)
t 时刻猎狗的坐标:x(t),y(t)
兔子 p1 的速率 v1=8: 两坐标轴上的速度分量为 (dX/dt,dY/dt)
猎狗 p2 的速率 w: 两坐标轴上的速度分量为 (dx/dt,dy/dt) A
Ny
兔子从 0 点开始运动时记时:t 假定 1:兔子恒往 OA 方向匀速运动 假定 2:猎狗的速率恒不变 假定 3:猎狗的方向恒朝兔子方向 假定 4:0A,0B 与 x 轴反向为 45 度 假定 5:0<t<15
(3) 当猎狗和兔子距离小于 30 米时,猎狗速率增加,而兔子的速率减小,此时不易列出其 微分方程模型,故采用计算机模拟,通过不断试探,确定出猎狗能追上兔子的最小速率。 假定猎狗和兔子增加或减少的速率是连续变化的 即在一秒内猎狗的速率是逐步递增到原速率的 1.1 倍 而兔子的速率是逐步递减到原速率的一半.
%以下是画出图形以便观察猎狗追上兔出的时刻
plot(t,y(:,1),'r');hold on % 猎狗的 x 坐标分量关于时间 t 的曲线
plot(t,y(:,2),'g');hold on % 猎狗的 y 坐标分量关于时间 t 的曲线
plot(t,-4*sqrt(2).*t,'b');hold on % 兔子的 x 坐标分量 X 关于 t 的曲线
将前面的式子代入则有
dx/dt=w*(- 2 8t-x)/ ( 2 8t x)2 ( 2 8t y)2
2
2
2
dx/dt=w*(
2
8t-y)/
(
2 8t x)2 (
2 8t y)2
2
2
2
2
x(0)= -200*
2
2
y(0)=-200*
2
方法一:用 ode45 求解上述微分方程的数值解
%猎狗的初始位置
Xt=0,Yt=0
%兔子的初始位置
vt=8
%vt 为兔子的速率,vl 为猎狗的速率
dt=0.01
%定义时间间隔--在该时间间隔内猎狗速度
方向认为是不变
tt=-150:0
%定义 tt 是为了画 x 轴
plot(tt,0,-60*sqrt(2),60*sqrt(2),'*b') %画出 x 轴和兔子的洞口所在位置以便作为观察时的
xt=xt+w*(Xt-xt)/sqrt((Xt-xt)^2+(Yt-yt)^2)*dt %在 t=i 时刻,猎狗的位置
yt=yt+ w*(Yt-yt)/sqrt((Xt-xt)^2+(Yt-yt)^2)*dt
plot(xt,yt,'r',Xt,Yt,'b'),hold on
%画出兔子和猎狗的轨迹
end
通过观察修改 w 的值,发现猎狗以大约在 w=17 时的最小速度可以追上兔子。 我们可以发现这两种不同的方法得出的结果比较接近。 若 i<15,则 i 的数值就是猎狗追上兔子的时间,若 i=15,这时可能追上了也可能没有追上,要具体 分析.
(2) 当猎狗以 w=8*2.135=17.08(米/秒)的最小速度追兔子时,它运动的时间为 15 秒,所 以它的路程为 w*15=256.2 米
见 MATLAB 程序 dog3.m
clear
Biblioteka Baidu
w=16.22
%定义猎狗的速度---不断修改 W 的值使其达到
要求:先令 w=17,能追上,再令 w=16,发现不能追上,所以值应该介于这两者之间,再不断修改 w
发现 w=16.2 时可使猎狗大约在 t=15 时刻追上兔子
xt=-100*sqrt(2), yt=-100*sqrt(2)
方法二:采用计算机模拟得出猎狗的运动轨迹,再不断观察得出结果。
clear
w=20
%定义猎狗的速度---不断修改 W 的值使其
达到要求
xt=-100*sqrt(2), yt=-100*sqrt(2)
%猎狗的初始位置
Xt=0,Yt=0
%兔子的初始位置
dt=0.01
%定义时间间隔--在该时间间隔内猎狗速度
plot(t,4*sqrt(2).*t,'k')
% 兔子的 y 坐标分量关 Y 于 t 的曲线
% 因为追上时有 X=x,Y=y,所以观察图形中 X=x,和 y=Y 的交点处的时间 t 不断修改猎狗的速度 w,使得恰好在 t=15 秒处追到兔子。 通过取 w=2*8 ,2.5*8,3*8,发现 w 应该介于 2---2.5 之间 逐步更改 w 的值,观察发现 w=8*2.135=17.08 的结果可以使猎狗在大约 t=15 秒时追上兔 子.
^2)
dy(2)=w*(sqrt(2)/2*8*t-y(2))/sqrt((-sqrt(2)/2*8*t-y(1))^2+(sqrt(2)/2*8*t-y(2))^
2)
主程序 :dogmain.m clear [t,y]=ode45('dog',[0 15],[-100*sqrt(2) -100*sqrt(2)])
方向认为是不变
tt=-150:0
%定义 tt 是为了画 x 轴
plot(tt,0,-60*sqrt(2),60*sqrt(2),'*k') %画出 x 轴和兔子的洞口所在位置以便作为
观察时的参考
hold on
for i=0 :dt :15
%猎狗应该在 15 秒内追上兔子
z=(Yt-yt)/sqrt((Xt-xt)^2+(Yt-yt)^2)
相关文档
最新文档