2011年认证杯SPSSPRO杯数学建模
A题 客机水面迫降时的姿态
原题再现:
2009 年 1 月 15 日下午(美国东部时间),US Airways 所属第 1549 航班(空中客车 A320 客机)在起飞后不久在纽约哈德逊河紧急迫降。经及时救助,机上 155 人(其中包括两名机师和三名乘务人员)在飞机沉没之前全部获救。该起事故造成 78 人受伤,无人死亡。
这架客机从纽约长岛拉瓜迪亚机场起飞约 90 秒后遭飞鸟撞击,导致两个发动机损坏。机长萨伦伯格凭借着出色的驾驶技术和冷静的判断使飞机迫降在哈德逊河河面。而飞机上的乘客在乘务员的指挥下,有秩序地逃出紧急舱门并全部获救。
第二阶段问题:
问题: 在越洋飞行的航班中,曾有个别航班出现过由于重大故障或意外原因,被迫在海面迫降的情况。在有风浪的条件下,飞机在海面的迫降具有更大的难度和危险性。请你建立合理的数学模型,对客机在海面的迫降进行分析,指出在有风浪的条件下,飞机以何种姿态和航向接触海面是相对安全的选择。
整体求解过程概述(摘要)
本题要求我们分析在风浪条件下,飞机在海面迫降相对安全的姿态和航向。通过对问题的细致分析,本模型利用攻角θ(触海瞬间速度方向和海平面的夹角)和仰角φ(触海瞬间机身和海平面的夹角)来描述飞机迫降的姿态。
为了确定飞机迫降的最佳攻角θ,我们建立了宏观的运动学模型:
1. 我们假设飞机的迫降轨迹可以用多项式描述。
2. 通过受力分析,得到飞机入水后的运动学方程,并进一步定量求解出飞机最大入水深度和飞机迫降轨迹的关系。
3. 最后利用遗传算法,计算出最佳迫降轨迹的多项式参数,进而得到飞机迫降的最佳攻角 。
为了求解飞机海面迫降的最佳仰角φ,我们建立了机壳的微观振动模型:
1. 为了简化海面风浪的波动情况,我们采用量纲法,证明在飞机和海面接触的过程中,海水对飞机的作用可以等效为一个弹簧,其弹性系数与飞机的仰角及风浪大小有关。
2. 我们利用弹性力学的知识,建立了机壳振动的四阶偏微分方程,并结合量纲法的结论,确定该定解问题的边界条件,进而求解出飞机迫降时不同仰角时,各个机舱的振幅情况。
3. 最后利用 Hopfield 神经网络的联想记忆功能,从 6 个可能的仰角中选出了飞机海面迫降的最佳仰角。综上所述,我们确定了飞机在海上迫降的最佳姿态,其攻角θ=15.9°,仰角φ =10°。
本模型在评价紧急迫降的安全性时,既考虑到宏观的运动,也考虑到微观的振动,评价全面,思维严密;在简化海面波动情况时,本模型利用量纲法,建立各物理量间的关系,避免过于复杂的推导,结果直观;在对四阶偏微分方程的求解中,本模型引入了广义最小二乘的方法求解系数,实现了算法创新;此外本文还采用人工智能进行优化求解,结果稳定可靠,实现方便。
模型的假设:
1. 海水冲击飞机机体之后速度减为零。
2. 不考虑海水的粘滞阻力。
3. 由海风引起的海面波动成正弦波动,且波速一定。
4. 海水密度、正弦波的角频率均为常数。
5. 在对机体进行振动分析时,将飞机的外形近似为长圆柱体,忽略机翼对于飞机主体振动的影响
6. 长圆柱体振动的四阶偏微分方程的通解为驻波形式,即可以将通解分解为一个时间因子和空间因子相乘的形式。
7. 遗传算法和离散 Hopfield 神经网络均能收敛,结果稳定。
论文缩略图:
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
部分程序代码:(代码和文档not free)
clear ;
NIND=400; %个体数目
MAXGEN=200; %最大遗传代数
NVAR=4; %变量数目
PRECI=25; %变量的二进制位数
GGAP=0.01; %代沟
%建立区域描述器
FieldD=[rep([PRECI],[1,NVAR]);[0.143];[3];rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND, NVAR*PRECI); %创建初始种群
gen=0;
trace=zeros(MAXGEN, 2); %遗传算法性能跟踪初始值
x=bs2rv(Chrom, FieldD); %初始种群十进制转换
ObjV=chishuishendu(x(:,1)); %计算初始种群的目标函数值
while gen<MAXGEN
FitnV=ranking(ObjV); %分配适应度值
SelCh=select('sus',Chrom,FitnV,GGAP); %选择
SelCh=recombin('xovsp',SelCh,0.1); %重组
SelCh=mut(SelCh); %变异
x=bs2rv(SelCh,FieldD); %子代十进制转换
ObjVSel=chishuishendu(x(:,1));
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入
gen=gen+1;
trace(gen,1)=min(ObjV); %遗传算法性能跟踪
trace(gen,2)=sum(ObjV)/length(ObjV);
end
figure(1);
plot(a,'.');
ylim([6,10]);
title('遗传代数 10 ');
xlabel('个体数量');
ylabel('适应度值');
figure(2);
plot(trace(:,2),'>r');grid
xlabel('遗传代数');
ylabel('适应度值');
legend('适应度均值');
%% 清空环境变量
clear all
clc
%% 导入数据
load class.mat
%% 目标向量
T = [class_1 class_2 class_3 ];
%% 创建网络
net = newhop(T);
%% 导入待分类样本
load sim.mat
A = {[sim_1 sim_2 sim_3 sim_4 sim_5 sim_6]};
%% 网络仿真
Y = sim(net,{18 20},{},A);
%% 结果显示
Y1 = Y{20}(:,1:3)
Y2 = Y{20}(:,4:6)
Y3 = Y{20}(:,7:9)
Y4 = Y{20}(:,10:12)
Y5 = Y{20}(:,13:15)
Y6 = Y{20}(:,16:18)
%% 绘图
A(1,:,:)=Y1;
A(2,:,:)=Y2;
A(3,:,:)=Y3;
A(4,:,:)=Y4;
A(5,:,:)=Y5;
A(6,:,:)=Y6;
for i=1:6
for n=1:5
for m=1:3
if A(i,n,m) > 0
subplot(2,3,i);
plot(m,5‐n,'ko','MarkerFaceColor','k'),title([num2str(4+(i‐1)*3)
'degree'])
else
subplot(2,3,i);
plot(m,5‐n,'ko'),title([num2str(4+(i‐1)*3) 'degree'])
end
hold on
axis([0 4 0 6])
axis off
end
end