资源描述
船只追线问题
o
X
y
c
走私船方向
我缉私舰雷达发现距c公里处有一艘走私船正以匀速a沿直线行驶。缉私舰立即以最大的速度b追赶,若用雷达进行跟踪,保持船的瞬时速度方向始终指向走私船,试求缉私舰追逐路线和追上的时间。
1.模型建立:走私船初始位置在点(0,0),行驶方向为y轴正方向,缉私艇的初始位置在点(c,0),缉私艇行驶的路程为s 。
在时刻t:
走私船的位置到达点
缉私艇到达点
则由条件有:
2.模型求解:
已知条件:
解:令:
有:
1)、r=(a/b)<1
当 x = 0 时,
c=3千米,a=0.4千米/分,
分别取b=0.6,0.8,1.2千米/分时,
缉私艇追赶路线的图形。
追赶时间分别是:t=9,5,2.8125(分钟)
2)、
当x接近零时,y接近正无穷,缉私船不可能追上走私船。
3)、r=1,
当x接近零时,y接近正无穷,缉私船不可能追上走私船。
3.用MATLAB软件求解析解
(1)、MATLAB软件5.3以上版本提供的解常微分方程解析解的指令是
dsolve,完整的调用格式是:
dsolve(‘方程1’, ‘方程2’,…‘方程n’, ‘初始条件’, ‘自变量’)
微分方程的书写格式规定:当y是因变量时,用“Dny”表示y的n阶导数。
(2)、 注意: 1、在解n个未知函数的方程组时,x0和x均为n维向量,m-文件中的待解方程组应以x的分量形式写成.
2、使用Matlab软件求数值解时,高阶微分方程必须等价地变换成一阶微分方程组.
4.Matlab软件仿真法:
走私船初始位在点(0,0),方向为y轴正方,缉私艇的初始位在点
走私船的位置:
缉私艇的位置:
追赶方向可用方向余弦表示为:
缉私艇的位置:
则:
, 速度a, b及初始位置
第一步:设置时间步长
仿真计算:
时的坐标
计算动点缉私艇D在时刻
第二步:
计算走私船R在时刻
时的坐标
第三步:计算缉私艇与走私船这两个动点之间的距离:
根据事先给定的距离,判断缉私艇是否已经追上了走私船,从而判断退出循环还是让时间产生一个步长,返回到第二步继续进入下一次循环;
第四步:当从上述循环退出后,由点列 和可分别绘制成两条曲线
即为缉私艇和走私船走过的轨迹曲线。
取c=3千米,a=0.4千米/分钟,b=0.8千米/分钟,
故有程序:
c=3; a=0.4/60; b=0.8/60;
d=0.01;dt=2;t=0;
jstx=c;jsty=0;zscx=0;zscy=0;
hold on
axis([0,3,0,2])
while (sqrt((jstx-zscx)^2+(jsty-zscy)^2)>d)
t=t+dt;
jstx=jstx-b*dt*jstx/sqrt(jstx^2+(a*t-jsty)^2);
jsty=jsty+b*dt*(a*t-jsty)/sqrt(jstx^2+(a*t-jsty)^2);
zscy=a*t;
plot(jstx,jsty,'r+',zscx,zscy,'b*')
pause(0.2)
end
jstx,jsty,zscx,zscy,t
显示船与艇行进路线程序
c=3; a=0.4/60; b=0.8/60;
d=0.01;dt=2;t=0;
jstx=c;jsty=0;zscx=0;zscy=0;
while (sqrt((jstx-zscx)^2+(jsty-zscy)^2)>d)
pause(0.01)
hold on
axis([0,3,0,2])
t=t+dt;
jstx=jstx-b*dt*jstx/sqrt(jstx^2+(a*t-jsty)^2);
jsty=jsty+b*dt*(a*t-jsty)/sqrt(jstx^2+(a*t-jsty)^2);
zscy=a*t;
plot(jstx,jsty,'rO',zscx,zscy, 'b*')
end
5.结果分析:用求解析解的方法算得的解是最为精确的;用数值方法计算的结果依赖于迭代终值的设定,减小迭代终值可以提高计算精度;用计算机仿真法计算的结果依赖于时间迭代步长的选取和程序终止条件的设定,修改终止条件的设定和减小时间迭代步长可以提高计算精度,减小误差。
展开阅读全文