目录
摘要
本文研究的是导弹追踪敌舰问题。通过建立合理的数学模型,利用matlab软件模拟导弹追踪敌舰的过程,通过matlab编程绘图得到导弹击中敌舰的时间和位置。
首先我们建立平面直角坐标系,利用在任意时刻导弹的飞行方向指向敌舰的位置,
取时间间隔为Δt,计算每一点在各个时刻的坐标,对每一个点,连接它在各时刻的位置,即得所求运动轨迹。
一 问题重述
设位于坐标原点的甲舰向位于x轴上点A(1, 0)处的乙舰发射导弹,导弹的速度是5v0,导弹头始终对准乙舰。如果乙舰以最大的速度v0(是常数) 与导弹方向成固定夹角的方向逃逸, 问导弹何时何地击中乙舰? 并选择若干特殊角度进行计算.你发现乙舰与导弹方向成何夹角逃逸才好?
二 模型假设
- 导弹飞行过程中速度方向始终指向敌舰。
- 导弹和敌舰长度可以忽略,均可看成物理质点。
- 外界对导弹和敌舰的运动没有影响。
- 导弹飞行的轨迹和敌舰航行的轨迹始终在同一平面内。
三 分析与建立模型
1.符号说明:
(x1,y1) 导弹坐标
(x2,y2) 敌舰坐标
v 导弹飞行的速度
u 敌舰航行的速度
d 导弹和敌舰之间的距离
Δt 时间间隔
φ 敌舰与导弹所成的固定夹角(为与x轴正向夹角)
2.建立平面直角坐标系,初始时,导弹位于(0,0)处,敌舰位于(1,0)处。
3.取时间间隔为Δt,计算每一点在各个时刻的坐标。
对于导弹,在t时刻的坐标为:(x1,y1)
则在t+Δt时刻的坐标为:
导弹和敌舰之间的距离:
所以可得:
对于敌舰,在t时刻的坐标为:(x2,y2)
则在t+Δt时刻的坐标为:
由几何关系易知:
所以可得:
4.取足够小的,时,结束算法。
5. 对每一个点,连接它在各时刻的位置,即得导弹和敌舰运动轨迹。
四 模型求解
使用matlab软件,编写m文件:
v=5;
u=1;
dt=0.001;
x=[0,1];
y=[0,0];
for i=1:2
plot(x(i),y(i),'.'),hold on
end
d=1;
a=1/3*pi;
t=0;
while(d>0.01)
d=sqrt((x(2)-x(1))^2+(y(2)-y(1))^2);
x(1)=x(1)+v*dt*(x(2)-x(1))/d;
y(1)=y(1)+v*dt*(y(2)-y(1))/d;
plot(x(1),y(1),'.'),hold on
x(2)=x(2)+u*dt*((x(2)-x(1))/d*cos(a)-(y(2)-y(1))/d*sin(a));
y(2)=y(2)+u*dt*((y(2)-y(1))/d*cos(a)+(x(2)-x(1))/d*sin(a));
plot(x(2),y(2),'.'),hold on
t=t+dt;
end
改变程序中a(即固定角)的值,分别取a=0,1/6π,1/3π,1/2π。
角度 | 击中位置 | 击中时间 |
0 | (1.24,0) | 0.2480 |
1/6π | (1.19,0.14) | 0.2400 |
1/3π | (1.07,0.20) | 0.2210 |
1/2π | (0.97,0.19) | 0.2000 |
综上,由表格以及轨迹图中得到的数据可知,当敌舰航行的方向为x轴正方向(即固定角为0)时间最长。
五 模型检验和模型推广
易知当敌舰航行的方向和导弹速度的方向一致时,敌舰被击中的时间最长,这与编程所得的结果相同。但实际情况中导弹追踪敌舰,以及敌舰躲避导弹的过程不会这么简单,本文所做的假设也有很大的局限性。所以这个模型只能反应一个大致的导弹追踪敌舰的过程,更多更复杂的细节问题还有待完善。
六 参考文献
[1] 赵静等 数学建模与数学实验 (第三版)