当前位置:文档之家› 数学建模追逐问题

数学建模追逐问题

实验追逐问题
Matlab程序如下:
%取v=1,t=12,A,B,C,D点的坐标分另为(0,10),(10,10),(10,0),(0, 0) v=1;
dt=0.05;
d=20;
x=[0 0 0 10 10 10 10 0];
x(9)=x(1);
x(10)=x(2);
hold
axis('equal')
axis([0 10 0 10]);
for k=1:2:7
plot(x(k),x(k+1),'.' )
end
while(d>0.1)
for i=1:2:7
d=sqrt((x(i)-x(i+1))^2+(x(i+1)-x(i+3))^2);
x(i)=x(i)+v*dt*(x(i+2)-x(i))/d;
x(i+1)=x(i+1)+v*dt*(x(i+3)-x(i+1))/d;
plot(x(i),x(i+1),'.')
end
x(9)= x(1);
x(10)= x(2);
end
hold
运行结果如下:
狼追击兔子的问题狼追击兔子问题是欧洲文艺复兴时代的著名人物达.芬奇提出的一个数学问题。

当一个兔子正在它的洞穴南面60码处觅食时,一只恶狼出现在兔子正东的100码处。

当两只动物同时发现对方以后,兔子奔向自己的洞穴,狼以快于兔子一倍的速度紧追兔子不放。

狼在追赶过程中所形成的轨迹就是追击曲线。

狼是否会在兔子跑回洞穴之前追赶上兔子?
为了研究狼是否能够追上兔子,可以先考虑求出狼追兔子形成的追击曲线,然后根据曲线来确定狼是否能够追上兔子。

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

模拟程序如下,程序文件名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)
end%for
dis%兔子到达窝边时,狼兔之间的距离
P %兔子到达窝边时,狼的坐标
Q %兔子到达窝边时,兔子的坐标
(二)模拟程序运行结果
dis =
7.0619
P =
1.6805 53.1410
Q =
0 60
注:如果修改程序中的step赋值,则结果稍有不同。

程序结束后,输出狼兔的位置图如下。

通过下图可以直观的看到,当兔子回到窝边时,狼还与兔子有一段距离,这表示兔子成功逃脱。

相关主题