大学生论坛 《钔 陡 院 瓠 )2007年第4期
— 个多人追逐问
的数学模型和matlab仿真
黄会明
(铜陵学院,安徽
汪 燕
铜陵 244ooo)
摘 要:追逐 问题是现实生活 中的常见问题 ,本文就三人绕正三角形 的追逐 问题建立起 了两个数学模型 :一个充分应用运
动的周期性首先给出了三人共边的充要条件 ,然后直接给出在一个周期 内三人共边 的次数及起止时刻,另一个则
利用初等数论的
给 出了三人共边的另一个充要条件 ;利用 matlab长于计 算和强大的绘 图功能,本文分别 给出
了求解两个模型的 matlab程序 ,通过 动画仿真演示三人绕正三角形 的追逐模 型,并给 出三者共边 的时间起止 点和
共边的次数。
关键词:追逐问题;数学模型;matlab程序;动画演示
中图分类号 :O156.1 文献标识码 :A 文章编号 :1672—0547(2007)04—01 19—05
1.引言及问题
当前数学建模竞赛在世界各 国开展得如火如荼 ,我国
也不例外。数学建模竞赛涉及到 自然科学、
技术、经济、
管理等领域的方方面面,数学模型能为这些领域 中的很多
问题提供有力的数学上 的解答 .这正是数学建模竞赛 的生
命力之所在。本文解决 了如下一类多人追逐 问题,并实现 了
maflab仿真。甲乙丙三人绕着正三角形 ABC跑道(见图 1),
甲自顶点 B出发 。乙自顶点 C出
发,丙 自顶点 A出发,以同向(反时
针方 向)前进.设三 角形每边长
100米,甲每秒跑 10米 。乙每秒跑
8米 。丙每秒跑 5米。问在什么时
候开始三人第一次在三角形 的同
一 边上跑?什么时候第二次?第三
次?并推出什么时候第 20次?
B(甲) 图 l C(乙)
本文为该 问题建立了两个数学模型 :一个利用运动的
周期性直接给 出在一个周期 内三人共边 的次数及起止时
刻 :另一个则利用初等数论的方法给出了三人共边的充要
条件 。并利用 matlab长于计算和强大 的绘图功能 。分别给
出了求解两个模型的 matlab程序 。通过动 画仿真演示三人
绕正三角形的追逐模型.并给出三者共边 的时间起止点和
共边的次数。
2.数学模型
易知,甲乙丙三人绕正三角形追逐运动是周期运动 ,我
们首先求其最小正周期 T。设在一个周期内。甲、乙、丙分别
绕正三角形 ABC奔跑的圈数为 k p,其中 k P为正整
数 ,则由时间速度位移关系。得
300k 300/ 300P
下 ■ , (1) 】0 8 5 ’ L1
使得(1)式成立 的最小正 整数只 能是 k=10,/=8,p=5,
所 以最小正周期 T_300s。
关于三人追逐共边 的问题 。只要我们把第一个周期内
的共边情况讨论清楚了.三人追逐共边的问题也就迎刃而
解 了。
首先我们给出如下两个结论:
定理 1 条件如问题所述.则甲乙丙在追逐过程中不
相逢于三角形上任何一点。
证明 前面我们 已经说明 。在所给条件下 甲乙丙追逐
运动是周期运动 。最小正周期 为 T=300s。所以我们只需讨
论第一个周期 内的情形就够了。在一个周期内,甲路程为
Sl=10x3OO=30OOm。刚好从顶点 B出发沿正三角形 ABC跑了
10圈回到 B,乙路程为 S2=8x300=2400m,刚好从顶点 C出发
沿正三 角形 ABC跑 了 8圈回到
C。丙路程 为 S~=5x300=1500m,刚
好 从 顶 点 A 出 发 沿 正 三 角 形
ABC跑了 5圈回到 A。假设 甲乙
丙相逢于正三 角形 ABC上反 时
针方向距离顶点 C m处 (见图
2),则 0~
表明甲乙丙既不
相逢于 C点也不相逢于任何一点。
对上述问题证明的 matlab程序。
%甲的速度 是 10m/S,乙的速度是 8m/S,丙的速度
是 5m/s
%此程序是验证甲乙丙在三边上任何一点都不相逢。
clear
v=[];
for p=0:5
1=8·p,5;
k=2 p;
、,=[v,(300·k-600·p-300=500·1-800·P一1600/3=1200
·k-1500·1+4oo)];
end
%若 v为 O说 明方程组无解
、,==、,
定理 2 条件如问题所述 。则
(1)甲乙在追逐过程 中相逢且只能相逢于顶点 A;
(2)乙丙在追逐过程中不相逢于任何一顶点 ;
(3)丙甲在追逐过程 中相逢且只能相逢于顶点 C;
证明:(1)证 明甲乙只能相逢于顶点 A。在一个周期
内 ,甲路程 为 Sl=10x300=3000m,刚好 从顶点 B出发沿正
三角 形 ABC跑 了 1O圈 回 到 B,乙 路程 为 =8x300=
2400m.刚好从顶点 C出发沿正三角形 ABC跑了 8圈回到
C。假设甲乙相逢于正三角形 ABC上反时针方向距离顶点
A m处(见图 3),则 0~x<300。假设甲跑 了k圈到达相逢
点 .乙跑了 Z圈到达相逢点 。则
k.Z为整数。且分别取值为 k--O,
1,2,3,4,5,6,7,8,9;l--0,1,2,3,
4。5,6,7;此 时 甲所 走 路 程 为
300k+200 . 乙所 走 路 程 为
3001+100+x。由路程 速度 的关
系.我们可得如下方程:
3oo,+】oo+ 8
B(甲) 图 3 C(乙)
。 。。 。。’ —— ‘‘ 。。 。’ ’⋯ -
3oo.i}+2oo+ l0
对 k,Z用穷举法 ,解得 x--0,这表明甲乙只能相逢于顶
点 A。
同理可证明(2)(3)成立。
模型一 由上述定理,甲乙丙三人不能在任意点上相
逢,所以,稍加分析即知,甲乙丙在运动过程中共边当且仅
当下述情形之一发生 :
(一 )甲乙丙两两不相逢 ,此时根据三人在同一条边的
位置又有 6种情形 :
(1)甲进、乙中、丙出;
(2)甲进、丙中、乙出;
(3)乙进、甲中、丙出;
(4)乙进、丙中、甲出;
一 12O 一
(5)丙进 、甲中、乙出;
(6)丙进 、乙中、甲出;
(--)甲乙相逢 ,此时根据三人在同一 条边的位置又有
2种情形:
(1)甲乙进 ,丙出;
(2)N进,甲乙出;
(--)乙丙相逢 ,此时根据三人在 同一条边 的位置又有
2种情形:
(1)乙丙进 ,甲出;
(2)甲进,乙丙 出;
(四)丙甲相逢 ,此时根据 ----.K在同一条边的位置又有
2种情形 :
(1)丙甲进 ,乙出;
(2)乙进 ,丙甲出。
根据对第一个周期内以上 12种情形稍加分析(为了使
问题易于分析,对于甲 乙丙共边时有一进一出、一进两出、
两出一出三种情况 的出现 。由于此刻三者虽共边但运动方
向不同,故不考虑该共边起止时间相同的点),可得在一个
周期内甲乙丙共边 当且仅 当下述情形之一发生:
(1)甲进入该边时乙丙还没有走出该边,此时共边的起
止时刻分别就是甲进入该边的时刻和 乙走出该边的时刻;
(2)甲丙 同时进入该边时 乙还没有走出该边 ,此时共边
的起止时刻分别就是甲丙进入该边的时刻和甲乙走出该边
的时亥U:
(3)甲丙同时进入该边时乙还没有走出该边 ,此时共边
的起止时刻分别就是甲丙进入该边的时刻和乙走出该边的
时亥U:
(4)甲乙丙不相逢 ,乙进 入该 边时甲丙还没有走出该
边 .此时共边的起止时刻分别就是乙进入该边的时刻和甲
丙或甲走出该边的时刻 ;
(5)甲乙丙不相逢 ,丙进入该边 时甲乙还没有走出该
边 .此时共边的起止时刻分别就是丙进入该边的时刻和甲
走 出该边的时刻 ;
根据模型一 的描述我们得到在第一个周期内三者的共
边情形 :
(1)在 担 ×3s这一时刻 ,甲进入 BC边 ,此 时乙丙
尚未出该边 ,乙出该边的时刻是 t: ×3s,所以甲 乙丙第
一 次共 BC边,起止时刻 为[ ×3, ×3];
(2)在 at= x4s这一时刻 ,甲丙同时进入 CA ,此时
乙尚未出该边 ,甲乙出该边的时刻 t= ×5s是 ,所以甲乙
丙第二次共 cA边 ,起止时刻为[ ×4, ×51;
(3)在 t= ×16s这一时刻 ,甲丙同时进 CA ,此时
乙尚未 出该边 ,乙出 CA边 的时刻 ,即 t: ×13s,所以甲
乙丙第三次共 cA边,起止时刻为[ ×16, ×13];
维普资讯 http://www.cqvip.com
l:御 陡 浇 {f;)2007年第4期
(4)在 t: x17s这一时刻 ,乙进入 BC边 ,此时甲丙
尚未出该边,甲丙出该边的时刻是t=等 ×22s,所以甲乙丙
第四次共 Bc边 ,起止时刻为[ ×17, ×22];
(5)在 xlSs这一时刻 ,乙进入 CA边 ,此 时甲丙
尚未出该边 ,甲出该边的时亥u是 t= ×23s,所以甲乙丙第
五次共 cA边,起止时刻为[ ×18,1IO 0×23];
(6)在[110 0×23
,300]这段时间内,甲乙丙不会有共边
的情形发生。
下面我们证明这一论 断的正确性 。在 担 x23s时
刻。甲乙丙所在位置如 图 4,此时沿运动方向,乙在 甲前
240m。甲乙共边的一个必要条件是在运动 方向上甲距离乙
小于 lOOm,所以根据相对运动性 ,要达到这一必要条件甲
需要的时间须多于兰坠 :70(s);丙在甲前 250m,甲丙
共边的一个必要条件是在运动方向上甲距离丙小于 100m,
所以根据相对运动性 ,要达到这一必要条件甲需要的时间
须多于 :3o(s);同理 乙在丙前 290m,所以根据相
对运动性 。要达到必要条件需要
的时间须 多于 (s);要使 甲乙
丙三者共线 。必须同时满足上述
三种情况。则三者再次共边的时
间应该大于 7 ,而 [ 10 0x23
,
· u B
30o]这段时间只有 70s,所 以在
这段时间内不会共边。
图4 C
综上所述。我们得到如下的一般性结果 :
(1)在一个周期内共有 5次共边 ,第 k个周期第 1次共
边的起止时刻为
l 300( 1) 百1oo(“2),30o( 1) 1oo(“2)l,当 1,2时;
l 300( 1)+11~(1+13),300( 1)+ 100【,“Io)],当 时;
I 300(k-1)+ 100(.“I3),30o(k-1)+ (“l8)I,当 ,5时。
(2)记 n=5k+l,1≤Z≤5,则 /I.第次共边的起止时刻正好
是第 k+1个周期第 1次共边的起止时刻。
模型二 首先 .以ilz~_
角形 ABC顶点 B (甲所 在 的
位置)为坐标原点 ,边 BC所
在的直线为 轴建立坐标系
(见初始状态图)。甲乙丙在 t
时刻的路程分别为s。(t)=lOt,
s2(t)=8t,s3(t)= ;对 甲而
言,我们给 BC,CA,AB分别 初贻状态
(1)甲乙丙共边BC当且仅当[ 】~O(mod3),
[ ------2fro0d3)且[ ~1(mod3);
(2)甲乙丙共边CA当且仅当【 】s1(- 3),
[ ------O(m0d3)且[ 】一2(m。d3);
f300k+200<10t<300(k+1)
{300l+100<8t<300l+200
I300p<5t<300p+1O0
根据 k。l,p的取值所对应的 t的取值范围如下:
J30k+20
O
qm~oor(n/5);r=rem(n。5);
if r==0
fl=300·(q-1)+18008;tr=150·(q-1)+2300/10;
eheif r= 1
tl--300’q+300/10;tr=300‘q+300/8;
elseif r==.2
tl=300‘q+400/10;tr=-300‘q+500/10;
elseif r==3
tl--300‘q+1600/10;tr=-300‘q+1300/8;
else
tl--300’q+1700/8;tr=-300‘q+2200/10;
end
disp([ 第 num2str(n) 次共边 的起止 时刻为 [ num2str
(d) 。 num2str(tr) ] ])
end
下面我们给出模型二的 matlab程序 。该程序利用 mat—
lab强大的绘图功能,用形象的动画仿真演示追逐过程 ,并
且给出了第一个周期内的共边的次数及相应的起止时刻 。
%模型二的 maflab 程序一 动画演示追逐过程.
%追逐模型的程序——动 画演示追逐过程.
clear all;close all
format long;%数据用 lang格式 ,只是为了起止时刻记录的
更精确一点
%初始状态 :等边三角形,甲乙二人 的位置.
x=[O 100 500];)r=[O0 50·sqrt(3)0];
plot(x。Y。qinewidth',3);
text(O。-4, );text(99。-4,,C );text(49。90。 );
a 8([一10 110-10 95]);hold on
. - 122 --
%甲及其所在的位置.
hi--plot(O,O);set(hl,"color ,,r ,"marker , 0 ,"erase ,"xor 。
"LineWidth ,6);
%乙及 其所 在 的位 置.
h2=plot(100,O); set(h2,"color ,,m 。"m~ll"ker 。1l ,"erase ,
"xor ,1_Jinewidth 。4);
h3=plot(50,50★sqrt(3));set(h3,"color 。,g ,"marker ,,p ,
"erase
,
"
xor ,1_JinewidtIl ,5);
title(~秒后开始追逐 (圆圈代表 甲,六角星代表 乙,五角星
代表丙 ) );hold off;pause(3)
%下面动画演示追逐过程(一个周期的情形).
dt=l/48;t--O:dt:300%一个周期为 T=150秒.
s=zeros(3,1);c=[];ss=[];next=l;
x1=[];y1=[];x2=[];y2=[];x3=[];y3=[];
for i=l:length(t)
s(1)=10-t(i);
s(2)=8★t(i);s(3)=5★t(i);
k=floor(s/!O0);l=s-k★100;
as(:,i)-l;p=mod(k,3);
axis([一10 110—10 953);
%对甲的描述.
ifp(1)--0
xl(i)-l(1);yl(i)=0;
set(hl。"Xdata',xl(i),"Ydata',yl(i));
drawnow
elseif p(1)= 1
xl0)=100-1(1)·cos(pi/3);yl(i)-l(1)·sin(pi/3);
set(hl,"Xdata',xl(i),"Ydata',yl(i));
drawnow
else ‘
x1(i)--50-1(1)·sin(pi/6);
yl(i)--50‘sqrt(3)-l(1)·cos(pi/6);
set(hl,"Xdata ,xl(i),"Ydata 。yl(i));
drawnow
end
%对乙的描述.
ifp(2)=---O
x2(i)=100-1(2)·cos(pi/3);y2(i)::l(2)·sin(pi/3);
set(h2。"Xdata 。x2(i)。"Ydata 。y2(i));
drawnow
elseifp(2)w~ l
x2(i)=50-1(2)·sin(pi/6);
y2(i)--50·sqa(3)-l(2)·cos(pi/6);
set(h2,"Xdata 。x2(i),"Tdata 。y2(i));
drawnow
else
x2(i)-l(2);y2(i) O;
set(h2。"Xdata 。x2(i),"Ydata 。y2(i));
drawnow
end
%对丙的描述
维普资讯 http://www.cqvip.com
<局订陡 鹰 最 )2007年第4期
if p(3)--O
x3(i)=(100--1(3)) cos(pi/3);
y3(i)=(100-1(3))·sin(pi/3);
set(h3,"Xdata',x3(i),"Ydata',y3(i));
drawnow
elseif p(3)=:1
x3(i)=1(3);y3(i)=0;
set(h3,"Xdata',x3(i),"Ydata",y3(i));
drawnow
else
x3(i)=100-1(3) eos(pi/3);y3(i)=1(3)·sin(pi/3);
set(h3,"Xdata',x3(i),"Ydata',y3(i));
drawnow
end
title([ 当前时刻 ,num2str(t(i)),,s , (圆圈代表 甲,六角
星代表乙,五角星代表丙) ], Color , );
if(p(1)~----O&p(2)=2&p(3)= l I
p(1)一 1&p(2)— &p(3)一2 ⋯I
p(2)= l&xl(i)--50&yl(i)==50·sqrt(3)&x3(i)--O&y3(i)
==oI
xl(i)~ lOO&yl(i)~----0&
x2(i)~---O&y2(i)--O&
x3(i)~ lOO&y3(i)==O ⋯
Ixl(i)--50&yl(i)一50 sqrt(3)&
x2(i)==50&y2(i)--50 sqrt(3)&
x3(i)~----O&y3(i)---O ⋯
lp(2)一1&】【1(i)==o&y1(i)==0&】【3(i)一50&),3(i)一50·sqrt
(3))&
rem(t(i),50)---0
e(next)=t(i);
next=next+l;
end
pause(dO;
end
%一个周期内共边 的次数统计 。及相应的起止时刻.
nmbrs=l;nat--[];
mt(1)=e(1);%第一个周期内第一次共边的起始时刻.
for i=l:length(e)-I
if e(i+1) (i)>1
nmbrs=nmbrs+l;
rot=[mt c(i)e(i+1)];%第 i次共边终止时刻 c(i),第
i+1次共边起点时刻 e(i+1).
end
end
rot(2·nmbrs)=e(end);%第一个周期内最后一次共边 的终
止时刻.
mt
_ final=[];
fori=l:nmbrs
mLfinal=[rot_final;rot(2·i-1)rot(2·i)];
end
nmbrs %一个周期内共边的次数.
mt final %第一个周期内第一次至最后 一次共边 的起止
时刻.
程序 二的运行结果 为一个周期 内共边次数 为 nmbrs=
5。相应的共边 的起止时刻为 mr_final=1.Oe+O02·
0-37479166666667
0.499791 66666667
1.62479166666667
2.19979166666667
2.250《×××X×X}(×××} 2.2S 979166666667
从上面 的结果我们 不禁惊 叹于 maflab强大的数值计
算功能 :30、40、160、212.5和 225这五个值都为真实值而非
近似值。
3.讨论
对于引言 中提到的追逐问题 。我们建立了两个模型。模
型一给出了完整的解答 ,运动的周期性用得淋漓尽致 ,一个
周 期 内的共 边 的次 数和
起止 时刻 交待得 都很 清
楚。模型二表述简单 ,运
用初等 数论 知识 建立模
型 .能够较易地 推广到多
人 绕正 多边 形追逐 的情
形 :但模型二没 有明确 交
待 共边 的起 止时刻 和 没
有给 出相逢的判断 。即留
下了三个模糊 的东西 :一
是共边的起止 时刻 .二是
时段 [0,t]内共 边 的 次
数 .三是相逢前后都有共
边 。应算一 次共边 ,模 型
二却将其一分为二。虽然
这三 个 问题 都 可通 过计
算机程序给 以解决 。但 由
于计算机运算的近似性
起 止时刻 只是 近似 的数
字解。本文为引言中提到
的追逐 问题 所建 立 的两
追逐到第 13.5417s时刻的图像
追逐到第 30.5417s时刻的图像
个模型 ,都是一种理想化 的结果 ,即甲乙丙三人体质无差异
地绕正三角形做持续的匀速运动 ,没有考虑人 的生命特征 ,
所以理论上的结果将与实际情况有所不符。
Matlab语言具有极 强的数值计算功能和绘图功能.是
工程计算、系统仿真等领域具有广泛应用性的软件【l】。本文
没有用 maflab的仿真工具箱 simulink.也没有用动 画命令
getframe和 movie(这两个命令一般很难看到它们的使用方
法的介绍)t2a。
参考文献:
[1]薛定宇,陈阳泉.高等应用数学问题的matlab求解[M].北
京:清华大学出版社,2006.
[2]胡 良剑,孙晓君.matlab数学试验[M].北京:高等教育出版
社,2006,107_113.
. 123 .
维普资讯 http://www.cqvip.com