高分求MATLAB追击问题,明天急需
有一只猎狗在B点位置发现了一只兔子在正东北方距离它200米的地方O处,此时,此时兔子以8米每秒的速度向正北方向距离为120米的洞口A全速奔跑。问:1.猎狗能追上兔子的最小...
有一只猎狗在B点位置发现了一只兔子在正东北方距离它200米的地方O处,此时,此时兔子以8米每秒的速度向正北方向距离为120米的洞口A全速奔跑。问:
1.猎狗能追上兔子的最小速度。
2.选取猎狗的速度分别为15、18米每秒,计算猎狗追上兔子时跑过的路程和时间
3.画出猎狗追赶兔子奔跑的曲线图
做得好双倍财富值,明天急要,做好后把文件发到我的邮箱里303310268@qq.com 展开
1.猎狗能追上兔子的最小速度。
2.选取猎狗的速度分别为15、18米每秒,计算猎狗追上兔子时跑过的路程和时间
3.画出猎狗追赶兔子奔跑的曲线图
做得好双倍财富值,明天急要,做好后把文件发到我的邮箱里303310268@qq.com 展开
展开全部
%(1)最小速度就是猎狗在洞口追上兔子
vmin=sqrt( (200*sqrt(2)/2+120)^2 + (200*sqrt(2)/2)^2 )/(120/8) %得到的结果为19.8148
%(2)和(3)题
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dxdt=zhidao_rk4_303310268(t,x)
%x(1),x(2)分别代表兔子的横坐标、纵坐标
%x(3),x(4)分别代表猎狗的横坐标、纵坐标
global v0 v1
%v0,v1分别是兔子、猎狗速度
delta_x=x(1)-x(3); %兔子与猎狗水平距离
delta_y=x(2)-x(4); %兔子与猎狗垂直距离
r=sqrt(delta_x^2+delta_y^2); %兔子与猎狗距离
dxdt=[
0;
v0;
v1*delta_x/r;
v1*delta_y/r;
];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [value,isterminal,direction]=zhidao_rk4_303310268_event(t,x)
%x(1),x(2)分别代表兔子的横坐标、纵坐标
%x(3),x(4)分别代表猎狗的横坐标、纵坐标
global v0 v1 endy
value=[sqrt((x(3)-x(1))^2+(x(4)-x(2))^2),x(2)-endy];
isterminal=[1,1];
direction=[0,0];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下面输入:
%%%%注意时间要设置对
global v0 v1 endy
v0=8; %兔子速度
v1=15; %猎狗速度
xrabbt=200*sqrt(2)/2; %兔子的初始位置x
yrabbt=200*sqrt(2)/2; %兔子的初始位置y
xdog=0; %猎狗的初始位置x
ydog=0; %猎狗的初始位置y
hole=120;
endy=yrabbt+hole; %洞的位置
t_end=hole/v0; %最迟这个时间追上免子
x0=[xrabbt;yrabbt;xdog;ydog]; %初始位置
opt=odeset('Events',@zhidao_rk4_303310268_event);
[t,x]=ode45(@zhidao_rk4_303310268,[0,t_end],x0,opt);
figure;
for i=1:length(t)-1
plot([x(i,3),x(i+1,3)],[x(i,4),x(i+1,4)],'r',[x(i,1),x(i+1,1)],[x(i,2),x(i+1,2)],'b');
axis([0,150,0,300])
pause(0.02);
hold on
end
plot(xrabbt,yrabbt+hole,'bo') %
if x(end,2)>=endy
disp('兔子逃脱')
else
disp('成功捕获')
end
h=legend('猎狗','兔子'); set(h,'Location','NorthWest')
xlabel('x');
ylabel('y');
在第二题中,
修改v1的值(分别取15、18都不能捕获到兔子),但是由第一题可知,只要速度高于19.8148,兔子就能脱跑,但如果猎狗每时每刻的速度方向都朝着兔子跑地话,即使速度达到19.9,兔子亦可以逃脱。
至于猎狗速度为15,18时,都无法追上兔子
vmin=sqrt( (200*sqrt(2)/2+120)^2 + (200*sqrt(2)/2)^2 )/(120/8) %得到的结果为19.8148
%(2)和(3)题
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dxdt=zhidao_rk4_303310268(t,x)
%x(1),x(2)分别代表兔子的横坐标、纵坐标
%x(3),x(4)分别代表猎狗的横坐标、纵坐标
global v0 v1
%v0,v1分别是兔子、猎狗速度
delta_x=x(1)-x(3); %兔子与猎狗水平距离
delta_y=x(2)-x(4); %兔子与猎狗垂直距离
r=sqrt(delta_x^2+delta_y^2); %兔子与猎狗距离
dxdt=[
0;
v0;
v1*delta_x/r;
v1*delta_y/r;
];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [value,isterminal,direction]=zhidao_rk4_303310268_event(t,x)
%x(1),x(2)分别代表兔子的横坐标、纵坐标
%x(3),x(4)分别代表猎狗的横坐标、纵坐标
global v0 v1 endy
value=[sqrt((x(3)-x(1))^2+(x(4)-x(2))^2),x(2)-endy];
isterminal=[1,1];
direction=[0,0];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下面输入:
%%%%注意时间要设置对
global v0 v1 endy
v0=8; %兔子速度
v1=15; %猎狗速度
xrabbt=200*sqrt(2)/2; %兔子的初始位置x
yrabbt=200*sqrt(2)/2; %兔子的初始位置y
xdog=0; %猎狗的初始位置x
ydog=0; %猎狗的初始位置y
hole=120;
endy=yrabbt+hole; %洞的位置
t_end=hole/v0; %最迟这个时间追上免子
x0=[xrabbt;yrabbt;xdog;ydog]; %初始位置
opt=odeset('Events',@zhidao_rk4_303310268_event);
[t,x]=ode45(@zhidao_rk4_303310268,[0,t_end],x0,opt);
figure;
for i=1:length(t)-1
plot([x(i,3),x(i+1,3)],[x(i,4),x(i+1,4)],'r',[x(i,1),x(i+1,1)],[x(i,2),x(i+1,2)],'b');
axis([0,150,0,300])
pause(0.02);
hold on
end
plot(xrabbt,yrabbt+hole,'bo') %
if x(end,2)>=endy
disp('兔子逃脱')
else
disp('成功捕获')
end
h=legend('猎狗','兔子'); set(h,'Location','NorthWest')
xlabel('x');
ylabel('y');
在第二题中,
修改v1的值(分别取15、18都不能捕获到兔子),但是由第一题可知,只要速度高于19.8148,兔子就能脱跑,但如果猎狗每时每刻的速度方向都朝着兔子跑地话,即使速度达到19.9,兔子亦可以逃脱。
至于猎狗速度为15,18时,都无法追上兔子
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询