资源描述
题目1:导弹跟踪问题
某军一导弹基地发现正北方向120km处海面上有敌艇一艘以90km/h的速度向正东方向行驶,该基地立即发射导弹追击敌艇,导弹速度为450km/h,自动导航系统使导弹在任一时刻都能对准敌艇。
1) 试问导弹在何时何处击中敌艇?
2) 如果当基地发射导弹的同时,敌艇立即由仪器发觉,假定敌艇为高速快艇,它即刻以135千米/小时的速度向与导弹方向垂直的方向逃逸,问导弹何时何地击中敌艇?
3) 敌艇与导弹方向成何夹角逃逸才好?从结论中你能得到些什么启示?
思考:敌艇的逃跑策略是什么?在什么样的情形下可能逃脱?
1问题分析:
此问题涉及到得因素主要有:时间、敌艇逃逸速度、导弹追击速度、敌艇行驶方向、敌艇的位置等等因素。
2假设及模型
1) 记导弹击中敌艇的时间为t,敌艇逃逸的速度为m,导弹追击速度为n,敌艇行驶方向与导弹的方向的夹角为θ,敌艇与基地的距离为H。
2) 先分析第一问,根据题意建立坐标系,设基地的为坐标原点(0,0),敌艇的坐标为(0,120),x轴指向正东方向,y轴指向正北方向。假设经过时间t后,导弹的位置为P(x(t),y(t)),则由题意可得:
(dxdt)2+(dydt)2=n2; ①
其中 n=450km/h
另外在t时刻,敌艇的位置为(mt,H),其中m为90km/h,由于导弹轨迹的切线方向必须指向敌艇,即直线PM的方向就是导弹轨迹上的P点的切线方向,所以有
dydx=(H-y)(mt-x) ②
公式①和公式②可得到一个微分方程组:
dxdt2+(dydt)2=n2;dydx=(H-y)(mt-x) ;
又已知x(0)=0,y(0)=0。
1、 模型求解
采用数值解,这里用差分方法:
dx=x(k+1)-x(k),dy=y(k+1)-y(k),dt=t(k+1)-t(k)=h;其中h为时间的步长。
Matlab程序如下:
画出的函数图形如下:
2、 结论分析
第一个问中,导弹会在经过0.277秒后,在(25.0058,120.0031)处击中敌艇。
题目2:数据拟合Malthus人口指数增长模型中的参数
1970年到1980年间美国每隔10年的人口记录如下表:
年份
1790
1800
1810
1820
1830
1840
1850
人口(×106)
3.9
5.3
7.2
9.6
12.9
17.1
23.2
年份
1860
1870
1880
1890
1900
1910
1920
人口
31.4
38.6
50.2
62.9
76
92
106.5
年份
1930
1940
1950
1960
1970
1980
人口
123.2
131.7
150.7
179.3
204
226.5
问题:用以上数据检验马尔萨斯人口指数增长模型,根据检验结果进一步讨论马尔萨斯人口模型的改进。
在matlab命令窗口中输入程序如下:
画出的拟合曲线和差值曲线如下:
其中,标有‘+’的是已知数据点,连接数据点的红色实线是线性插值函数曲线,光滑的蓝色函数曲线是最佳拟合曲线。
题目3:现收集了华北地区不同行业的职工工资水平及年平均收入,如下表:
地区
工业
建筑业
交通运输、邮电通讯业
教育、文化艺术和广播电视事业
北京
1327
1737
1529
1244
天津
1161
1631
1503
1162
河北
1113
1428
1245
1026
山西
1210
1493
1297
1108
内蒙
1246
1499
1332
1199
试问:1)不同行业的职工工资水平是否有显著差异?
2)不同地区、不同行业的职工工资水平是否有显著差异?
解:1)先提出零假设H0:各行业因素总体均值相等。
在matlab下计算程序和结果如下:
>> clear
>> fish=[1327 1737 1529 1244;
1161 1631 1503 1162;
1113 1428 1245 1026;
1210 1493 1297 1108;
1246 1499 1332 1199];
>> save liu fish
>> load liu
>> fish
fish =
1327 1737 1529 1244
1161 1631 1503 1162
1113 1428 1245 1026
1210 1493 1297 1108
1246 1499 1332 1199
>> anoval(fish)
??? Undefined command/function 'anoval'.
>> anova1(fish)
ans =
6.8562e-005
单因素方差分析表:
因为p= 6.8562e-005<0.05=ɑ,故拒绝H0故可认为不同行业的职工工资水平有显著差异。
解2):首先提出零假设,H1:不同行业因素的效应值为0;H2:不同地区因素的效应值为0;H12:行业因素和地区因素交互效应值为0。
双因素方差分析表:
检验结果:由双因素方差分析表可知,计算得到的p值分别为1.0e-003*[0.0002,0.2886],都小于0.05,所以可拒绝零假设H1和假设H2认为不同地区、不同行业的职工工资水平有显著差别,且行业因素和地区因素没有交互作用。
题目4 :导弹跟踪问题
某军一导弹基地发现正北方向120km处海面上有敌艇一艘以90km/h的速度向正东方向行驶,该基地立即发射导弹追击敌艇,导弹速度为450km/h,自动导航系统使导弹在任一时刻都能对准敌艇。
4) 如果当基地发射导弹的同时,敌艇立即由仪器发觉,假定敌艇为高速快艇,它即刻以135千米/小时的速度向与导弹方向垂直的方向逃逸,问导弹何时何地击中敌艇?
解:
3、 问题分析:
此问题涉及到得因素主要有:时间、敌艇逃逸速度、导弹追击速度、敌艇行驶方向、敌艇的位置等等因素。
4、 假设及模型
设t时刻导弹和敌艇的位置分别为(x1,y1),(x2,y2);导弹和敌艇的速度垂直,设在t时刻导弹的行驶方向和x轴所成角度记为a(为方便编程a已经用pi换算过),则此时敌艇与x轴所成角度为(a-1.5708),1.5708=pi/2。取时间间隔h,在t+h时刻有:
X1=x1+450*h*cos(a);y1=y1+450*sin(a);x2=x2+135*h*cos(a-0.15708);
y2=y2+135*sin(a-1.5708)
cos(a)=(x2-x1)/d,sin(a)=(y2-y1)/d,d=sqrt((x2-x1)^2+(y2-y1)^2)
设当d<0.1时,导弹击中敌艇。
5、 matlab求解
先建立m文件:
function[x,y,z]=fm(h,p)
k=1;
hold on
x1=0;y1=0;x2=0,y2=120;
while k<500
plot(x1,y1,'r')
plot(x2,y2)
a=atan((y2-y1)/(x2-x1));
x1=x1+450*h*cos(a);
y1=y1+450*h*sin(a);
x2=x2+135*h*cos(a-1.5708);
y2=y2+135*h*sin(a-1.5708);
if(sqrt((x1-x2)^2+(y1-y2)^2)<p)
break;
end
k=k+1;
end
hold off
z=k*h;
x=x1;
y=y1;
再工作空间执行以下命令:
>> h=0.001;
>> p=0.1;
>> [x,y,z]=fm(h,p)
结果如下:
x =
35.0550
y =
116.4064
z =
0.5000
得到图形如下:
6、 结论
导弹将会在向东35.055米,向北146.4064处击中敌艇。
题目5 求出教科书P232页图14.2中从点1到顶点6的最短路径极其长度。(使用dijkstra算法求解)
先建立dijkstra.m文件:
function [d,DD]=dijkstra(D,s)
[m,n]=size(D);
d=inf.*ones(1,m);
d(1,s)=0;
dd=zeros(1,m);
dd(1,s)=1;
y=s;
DD=zeros(m,m);
DD(y,y)=1;
counter=1;
while length(find(dd==1))<m
for i=1:m
if dd(i)==0
d(i)=min(d(i),d(y)+D(y,i));
end
end
ddd=inf;
for i=1:m
if dd(i)==0&&d(i)<ddd
ddd=d(i);
end
end
yy=find(d==ddd);
counter=counter+1;
DD(y,yy(1,1))=counter;
DD(yy(1,1),y)=counter;
y=yy(1,1);
dd(1,y)=1;
end
再在命令窗口中输入如下程序:
>> D=[0,6,inf,5,8,inf;
6,0,4,2,inf,inf;
inf,4,0,2,inf,3;
5,2,2,0,inf,7;
8,inf,inf,inf,0,10;
inf,inf,3,7,10,0];
>> s=1;
>> [d,DD]=dijkstra(D,s)
运行结果为:
d =
0 6 7 5 8 10
DD =
1 0 0 2 0 0
0 0 4 3 0 0
0 4 0 0 5 0
2 3 0 0 0 0
0 0 5 0 0 6
0 0 0 0 6 0
展开阅读全文