导弹跟踪问题数学建模题目 - matlab数学建模 - 谷速源码
下载频道> 资源分类> matlab源码> 数学建模> 导弹跟踪问题数学建模题目

标题:导弹跟踪问题数学建模题目
分享到:

所属分类: 数学建模 资源类型:文档 文件大小: 117.31 KB 上传时间: 2019-07-11 20:25:24 下载次数: 1 资源积分:1分 提 供 者: zhangsan456 导弹跟踪问题数学建模题目
内容:
实验四 导弹跟踪问题
 
一.实验目的
   本实验主要涉及常微分方程。通过实验复习微分方程的建模和求解,介绍两种求解微分方程的数值方法:Euler法和改进的Euler法,还介绍了仿真方法。
二.实际问题
   某军的一导弹基地发现正北方向120km处海面上有敌艇一艘以90km/h的速度向正东方向行驶。该基地立即发射导弹跟踪追击敌艇,导弹的速度为450km/h,自动导航系统使导弹在任一时刻都能对准敌艇。试问导弹在何时何处击中敌艇?
 
三.数学模型
   设坐标系如下,取导弹基地为原点0(0,0)。 轴指向正东方,y轴指向正北方。
 
当t=0时,导弹位于O,敌艇位于点(0,H),(H=120(km))设导弹t时刻的位置为P( ),由题意,
                           (4.1)
其中 。
另外在t时刻,敌艇位置应该为 ,其中 =90(km/h)。由于导弹轨迹的切线方向必须指向敌艇,即直线PM的方向就是导弹轨迹上点P的切线方向,故有
                                                    (4.2)
                                                 (4.3)
方程(4.3)初值条件想 
            x(0)=0,y(0)=0                                       (4.4)
构成了一个关于时间变量t的一阶微分方程组的初值问题。
由(4.2)得
 
两边对t求导得
 
即有 
 
把(4.1)写为 代入上式,就得到轨迹方程。这是一个二阶非线性微分方程,加上初值条件,则初值问题
                       
上式分别为(4.5),(4.6),(4.7)。
就是导弹的轨迹的数学模型。
四.解释方法
方程(4.5)可以降阶。令 ,则式(4.5)化为一介可分离变量方程
 
易得
 
由式(4.7)得 ,从而
 
于是有
                                    (4.8)
于是积分又可以得到
 
利用式(4.6)得 ,于是导弹轨迹方程为
 
                         (4.9)
设导弹击中敌艇于B(L,H),以y=H代入(4.9)得
                                             (4.10)
而导弹击中敌艇的时刻
                                                (4.11)
将数据代入(4.10),(4.11)式,得
L=25(km), T 0.2778(h)
五.数值方法
1.Euler方法
     Euler方法十分简单,就是用差商代替微商,即将 代之以 ,而将 代之以 。
设导弹到达( )处的时刻为tk,那么得到计算的迭代格式为 
 
上式分别为(4.15)(4.16)(4.17)
于是
     
使用MATLAB,编辑文件m4_.m:
function m4_1(n)
H=120;
h=H/n;
lamda=90/450;
x(1)=0;p(1)=0;
y=0:h:H;
for i=0:n-1
    x(i+2)=x(i+1)+h*p(i+1);
    p(i+2)=p(i+1)+h*(lamda*sqrt(1+p(i+1)^2)/(H-y(i+1)));
end
[x;p]’
L=x(n+1)
T=x(n+1)/90
输入m4_1(4)得到
 
 
ans =
         0         0
         0    0.0500
    1.5000    0.1167
    5.0025    0.2174
   11.5254    0.4221
L =
   11.5254
T =
0.1281
使用MATLAB,建立m4_2.m:
function m4_2(N)
k=1;
for n=N
    H=120;
    h=H/n;
    lamda=90/450;
    x0=0;p0=0;
    for i=0:n-1
        x1=x0+h*p0;
        p1=p0+h*(lamda*sqrt(1+p0^2)/(H-i*h));
        x0=x1;
        p0=p1;
    end
   L(k)=x1;
   T(k)=x1/90;
   k=k+1;
end
[N;L;T]'
        
键入m4_2([4,8,12,24,48,96,120,240])得到
ans =
 
    4.0000   11.5254    0.1281
    8.0000   15.9537    0.1773
   12.0000   17.9732    0.1997
   24.0000   20.5508    0.2283
   48.0000   22.2494    0.2472
   96.0000   23.3286    0.2592
  120.0000   23.5803    0.2620
  240.0000   24.1510    0.2683
 
由方程(4.1),(4.3)解出 的表达式,取时间步长 ,对应 
时导弹轨迹上点的坐标为 ,则Euler格式为
 
上式分别为(4.21)(4.22)(4.23)
当计算到 即停止,于是,
 
使用matlab,编辑m文件:
function m4_3(t)
H=120;Ve=90;Vw=450;
x(1)=0;y(1)=0;T(1)=0;
for i=1:10e6
    M=(Ve*T(i)-x(i))/(H-y(i));
    x(i+1)=x(i)+Vw*t/sqrt(1+1/M.^2);
    y(i+1)=y(i)+Vw*t/sqrt(1+M.^2);
    T(i+1)=t+T(i);
    if y(i+1)>=H
     break;
    end
end
[T;x;y]'
L=x(i+1)
T=x(i+1)/Ve
 m4_3(0.1)
> In m4_3 at 6
 
ans =
 
         0         0         0
    0.1000         0   45.0000
    0.2000    5.3615   89.6795
    0.3000   22.6750  131.2155
L =22.6750
T =0.2519
 
m4_3(0.05)
Warning: Divide by zero.
> In m4_3 at 6
 
ans =
 
         0         0         0
    0.0500         0   22.5000
    0.1000    1.0374   44.9761
    0.1500    3.4121   67.3504
    0.2000    7.6462   89.4484
    0.2500   14.8679  110.7580
    0.3000   29.1948  128.1070
L =
 
   29.1948
T =
 
0.3244
2.改进的Euler方法
改进的Euler迭代式
 
上式分别为(4.24)(4.25)(4.26)(4.27)(4.28)
六.仿真方法
设导弹和敌艇在初始时刻分别位于 。此时,导弹指向 。而在 时,导弹的位置 ,其中 ,敌艇的位置则为 。这时导弹沿 方向飞行, 的倾角为 ;在 时导弹的位置为 。
以此方式,当 时,导弹的位置为 ,其中
                                       (4.33)
                                           (4.34)
                              (4.35)
                              (4.36)
而敌艇的位置为 。
如之前一样,当 时,仿真停止。这时
 ,   
七.实验任务
1.用改进的Euler方法取步长 为0.1和0.05时计算,用MATLAB验证结果。
m.文件
function m4_5(t)
H=120;Ve=90;Vw=450;
x(1)=0;y(1)=0;T(1)=0;
for i=1:10e6
    M=(Ve*T(i)-x(i))/(H-y(i));
    x1(i+1)=x(i)+Vw*t/sqrt(1+1/M.^2);
    y1(i+1)=y(i)+Vw*t/sqrt(1+M.^2);
    T(i+1)=i*t;
    x(i+1)=0.5*(x1(i+1)+x(i)+Vw*t/sqrt(1+((H-y1(i+1))/(Ve*T(i+1)-x1(i+1))).^2));
    y(i+1)=0.5*(y1(i+1)+y(i)+Vw*t/sqrt(1+((Ve*T(i+1)-x1(i+1))/(H-y1(i+1))).^2));
    if y(i+1)>=H
        break;
    end
end
[T;x;y]'
L=x(i+1)
T=x(i+1)/Ve
运行结果:
 m4_5(0.1)
Warning: Divide by zero.
> In m4_5 at 6
ans =
 
         0         0         0
    0.1000    2.6808   44.8397
    0.2000   12.5752   88.2868
0.3000   27.0724  130.2557
L =
    27.0724
T =
0.3008
 
m4_5(0.05)
Warning: Divide by zero.
> In m4_5 at 6
 
ans =
      0         0         0
  0.0500   0.5187   22.4880
  0.1000   2.1060   44.9219
  0.1500   5.0982   67.2021
  0.2000   10.1610  89.0691
  0.2500   19.6565  108.9880
  0.3000   24.2409  130.9903
L =
      24.2409
T =
      0.2693
 
得到的结果与书上表4.6和4.7结果一致。
2.验证仿真方法和Euler迭代格式,当输入相同的步长后,结果完全一致。
建立m文件:
function m4_4(t)
H=120;Ve=90;Vw=450;
x(1)=0;y(1)=0;
for i=1:10e6
    M=sqrt(((i-1)*Ve*t-x(i)).^2+(H-y(i)).^2);
    ctheta=((i-1)*Ve*t-x(i))./M;
    stheta=(H-y(i))./M;
    x(i+1)=x(i)+Vw*t*ctheta;
    y(i+1)=y(i)+Vw*t*stheta;
    if y(i+1)>=H
        break;
    end
end
[x;y]'
L=x(i+1)
T=x(i+1)/Ve
运行结果:
 m4_4(0.1)
 
ans =
 
         0         0
         0   45.0000
    5.3615   89.6795
   22.6750  131.2155
L =
   22.6750
T =
   0.2519
 
 m4_4(0.05)
ans =
 
         0         0
         0   22.5000
    1.0374   44.9761
    3.4121   67.3504
    7.6462   89.4484
   14.8679  110.7580
   29.1948  128.1070
L =
   29.1948
T =
   0.3244
根据运行结果可知,这两种迭代格式实际上确实是相同。
 
3.由于Euler法或改进的Euler法的计算格式中每一步值的取得仅仅依赖上一步的值,因此在计算过程中改变步长是可行的,即当计算到 而 远大于H时可缩小步长(例如原来的十分之一)以 作为新起点继续进行迭代。试用这种变步长方法来改进用Euler法和改进的Euler方法过得到的结果。

文件列表(点击上边下载按钮,如果是垃圾文件请在下面评价差评或者投诉):

导弹跟踪问题数学建模题目.doc

关键词: 导弹跟踪问题

Top_arrow
回到顶部
联系方式| 版权声明| 招聘信息| 广告服务| 银行汇款| 法律顾问| 兼职技术| 付款方式| 关于我们|
网站客服网站客服 程序员兼职招聘 程序员兼职招聘
沪ICP备19040327号-3
公安备案号:沪公网安备 31011802003874号
库纳格流体控制系统(上海)有限公司 版权所有
Copyright © 1999-2014, GUSUCODE.COM, All Rights Reserved