猎狗追兔子问题仿真实验报告

巡山小妖精
671次浏览
2020年09月14日 09:33
最佳经验
本文由作者推荐

北京民族大学学费-关于端午节的作文


1. 有一只猎狗在B点位置发现了一只兔子在正东北方距离它200米的地方O处,
此 时兔子开始以8米秒的速度向正西北方距离为120米的洞口A全速跑去,假
设猎狗在追赶兔子的时候始 终朝着兔子的方向全速奔跑,用计算机仿真法等多
种方法完成下面的实验:
(1) 问猎狗能追上兔子的最小速度是多少
(2) 在猎狗能追上兔子的情况下,猎狗跑过的路程是多少
(3) 画出猎狗追赶兔子奔跑的曲线图。
(4) 假设在追赶过程中,当猎狗与兔
子之间的距离为30米时,兔子由于害怕,
奔跑的速度每秒减半,而猎狗却由于兴
奋奔跑的速度每秒增加倍,在这种情
况下,再按前面的(1)—(3)完成实验任务。


问题分析:
(1) 以O点为原点,OA为y轴正方向建立平面直角坐标系。用T(X,Y),G(x,y)
分别表示兔子和狗的位置。用
e
来表示猎狗速度方向的单位向量。则

则有,。
由于兔子的速度是8ms,狗要追上兔子,速度一定大于8ms。我们根据
常识估算狗的速度不会超过100ms。不妨建立一个for循环,逐个尝试
从8开始的速度。直到得到 一个可以使追击到时,T的纵坐标小于等于120
的速度。
(2) 由于狗是匀速运动,路程s即(1)中得到的v和t的积。
(3) 根据(1)中的思路,以dt=为 时间步长我们可以算得每个时间点T与G
的坐标。这里为了方便描点,不再用向量表示,而是直接用坐标 x,y,X,Y
表示。
(4) 只需要在前面的基础上加上:①一个if条件,当距离d≤3 0时,狗的速
度v
k+1
=v
k
·^dt,兔子的速度u
k +1
=u
k
·^dt;②s的计算改为s
k+1
=s
k+vdt。


程序设计:
(1)~(2)问:
流程图:
速度


兔子猎狗的距离是否大于
否 否


求下一个点
兔子的纵坐标是否≤120



输出v



程序代码:
G=[-200,0];
T=[0,0];%用向量G,T分别表示狗和兔子的坐标
d=;
t=0;dt=;
for v=8::100
G=[-200,0];
T=[0,0];
t=0;
while (norm(G-T)>d&&norm(T)<120)
t=t+dt;
e=T-G;
D=norm(T-G);
e=eD;
G=G+v*dt*e;
T(2)=8*t;
end
if T(2)<=120
break
end
end
fprintf('狗的最小速度是:%.2f',v)
s=v*t;
fprintf('狗跑过的距离是:%.2f',s)

第(3)问:
流程图:

坐标

x,y,X,Y


描每一个(X,Y),(x,y)




求新的x,y,X,Y坐


程序代码:
c=-200;
u=8;
v=;
xb=[];yb=[];Xb=[];Yb=[];
d=1;
dt=;
t=0;


x=c;y=0;X=0;Y=0;
hold on
axis([-200,0,0,150])
title('猎狗追兔子')
text(0,120,'A')
text(-200,0,'B')
text(0,0,'O')
while (sqrt((x-X)^2+(y-Y)^2)>d)
t=t+dt;
x=x-v*dt*xsqrt(x^2+(u*t-y)^2);
xb=[xb,x];
y=y+v*dt*(u*t-y)sqrt(x^2+(u*t-y)^2);
yb=[yb,y];
Y=u*t;
Yb=[Yb,Y];
end
xb;
yb;
Yb;
Xb=zeros(length(Yb));
plot(xb,yb,'m*',Xb,Yb,'c*')
gtext('猎狗')
gtext('兔子')

第(4)问:
① 最小速度:
流程图:在(1)的高亮部分后方加上:

距离是否≤30

是 否


v=v*^dt

求下一个点


u=u*^dt

程序代码:
u=8;
G=[-200,0];
T=[0,0];% 用向量G,T分别表示狗和兔子的坐标
d=;
t=0;dt=;
for v=8::100
G=[-200,0];
T=[0,0];
t=0;


c=v;
u=8;
while (norm(G-T)>d&&norm(T)<120)
if (norm(G-T)<=30)
v=v*^dt;
u=u*^dt;
end
t=t+dt;
e=T-G;
D=norm(T-G);
e=eD;
G=G+v*dt*e;
T(2)=T(2)+u*dt;
end
if T(2)<=120
v=c;
break
end
end
fprintf('狗的最小速度是:%.2f',v)

② 模拟及跑过的距离:
流程图:同上
程序代码:
u=8;
v=;
dt=;
t=0;
s=0;
D=30;
d=1;
m=0;
x=-200;y=0;X=0;Y=0;
hold on
axis([-200,0,0,150])
title('猎狗追兔子')
text(0,120,'A')
text(-200,0,'B')
text(0,0,'O')
while (sqrt((x-X)^2+(y-Y)^2)>d)
if(sqrt((x-X)^2+(y-Y)^2)>D)
t=t+dt;
x=x-v*dt*xsqrt(x^2+(u*t-y)^2);
y=y+v*dt*(u*t-y)sqrt(x^2+(u*t-y)^2);


Y=Y+u*dt;
plot(x,y,'r*',X,Y,'b*')
pause
else
t=t+dt;
if(m==0||m==1)
u=u2;
v=*v;
m=0;
end
m=m+dt;
x=x-v*dt*xsqrt(x^2+(Y+u*dt-y)^2);
y=y+v*dt*(Y+u*dt-y)sqrt(x^2+(Y+u*dt-y)^2);
Y=Y+u*dt;
plot(x,y,'r+',X,Y,'b+')
pause
end
s=s+v*dt;
end
gtext('猎狗')
gtext('兔子')
x,y,X,Y,t,s


结果分析和结论:
(1)~(2)问

第(3)问:



第(4)问:







总结和体会:
本题其实整体上采取的一个模拟的思想。通过一次一次迭代模拟追捕过
程。从本题速度和仿真时,我们可 以发现,在单纯的计算时,直接用向量计
算可以简化很多步骤。但是在仿真时,直接描述各个坐标会更为 方便。我们
要根据自己的需求选择表示方法。



2. 使用计算机仿 真方法求解下述问题:在正方形的四个顶点上各有一人,如下
图所示,在某一时刻,四人同时出发以匀速 按顺时针方向追赶下一个人,如果他
们始终保持对准目标,试确定每个人的行进路线。

问题分析:
以左边为y轴,下边为x轴建立平面直角坐标系。可以得到四个人的点坐标
为O(0,0),A(200,0),B(,200,200),C(0,200)。以点O为例:设t时刻, 点O,C
的坐标分别为
而得出
,点O的速度沿单位向量:,从
。其他四个点也 用类似的方法,即可得到所有点在每
个时间点的坐标。

程序设计:
流程图:

标出四个点坐标;

求四个方向单位向量



距离是否够小



结束


程序代码:
hold on
axis([0,200,0,200])
O = [0,0];
A = [200,0];
B = [200,200];
C = [0,200];


d1 = norm(C-O);
d2 = norm(O-A);
d3 = norm(A-B);
d4 = norm(B-C);
v = 10;
t =
while d1>2
plot(O(1),O(2),'r+');
plot(A(1),A(2),'b*');
plot(B(1),B(2),'gp');
plot(C(1),C(2),'yo');
e1 = C-O; d1 = norm(e1);
e2 = O-A; d2 = norm(e2);
e3 = A-B; d3 = norm(e3);
e4 = B-C; d4 = norm(e4);
e1 = e1d1; %表示点O的方向,下同
e2 = e2d2;
e3 = e3d3;
e4 = e4d4;
O = O+v*t*e1;
A = A+v*t*e2;
B = B+v*t*e3;
C = C+v*t*e4;
pause
end

结果分析和结论:



总结和体会:
由于题中并没有给出具体数据,在设计程序时,许多标准都要自己考虑。
因为本题我们给正方 形设定的边长为200,因此为了缩短模拟时间,速
度设定为10,同时,由于边长较大,如果按照上题 ,判别精度d设为1的话,
将会进入死循环。因此,我们在设计时应当注意模拟的精度的选择。

捐赠仪式主持词-山西会计之星


赞美教师的诗歌-论点论据大全


元阳一中-三年级小学生评语


中央广播电视大学网站-劝说口语交际


英语四级分值分配-弟子规心得


邓卓-双拥标语


河北艺术教研网-校园安全知识


描写马的作文-结婚典礼词