2017年第六届数学建模国际赛小美赛
A题 飓风与全球变暖
原题再现:
飓风(也包括在西北太平洋被称为"台风"的风暴以及在印度洋和西南太平洋被称为"严重热带气旋")具有极大的破坏性,往往造成数百人甚至数千人死亡。
许多气象学家一致认为,在过去的几十年里,全球变暖(大约半摄氏度)已经发生在地球表面,而且这种趋势可能会继续下去。问题是,全球变暖对飓风活动意味着什么?请构造一个合理的模型,测量全球变暖的程度和全球飓风活动的强度,并估计两者之间的关系。
整体求解过程概述(摘要)
全球变暖被认为是影响飓风强度的重要因素之一。全球变暖对飓风影响的研究已经展开,但尚未得出确切的结论。
本文通过建立模型来衡量全球变暖的程度和飓风的强度,并得出它们之间的关系。
在模型1中,建立了反映全球变暖程度的评价指标体系。采用熵权法计算各变量的权重。然后类比动量方程,建立一个综合指标来表征全球变暖的程度。
在模式2中,我们对海温如何影响单个飓风进行了微观分析。建立运动方程,分析速度梯度和温度梯度之间的关系。然后应用回归分析方法,求出海温、强度、速度、加速度、压力、运动方向之间的相关关系。通过聚类分析将模型推广到一般情况。结果表明,海温直接影响飓风的运动路径,改变加速度的方向和值。海温对飓风的压力和速度也有影响。在此基础上,进一步得出温度与飓风频率密度分布关系不大的结论。
在模式3中,分别分析了不同地区的飓风强度特征,计算出全球变暖程度的相关性。结果表明,飓风强度与全球蠕虫的关系因地区而异。尤其在东太平洋地区,飓风强度与全球变暖呈负相关。这可以用厄尔尼诺现象来解释。
在模型4中,我们定义了一个基于总能量耗散的飓风潜在破坏性(PDI)指数来表示飓风的强度,然后进行回归以确定与全球变暖的关系。结果表明,PDI与热带海表温度相关,反映了已有的气候信号,但与飓风频率的关系更为显著。
在模型5中,我们建立了预测模型,并对PDI和GWD的趋势进行了预测,结果表明全球GWD面临急剧增长,而PDI仍将处于波动之中。最后给出了未来PDI和GWD的可能值。
最后,分析了本文提出的方法的优缺点。该研究在现实世界中也具有一定的应用价值。
模型假设:
(1) 数据来源真实可靠
(2) 全球变暖的程度主要体现在海平面、冰山数量和高度、海表温度、全球温度等方面。
(3) 全球变暖的程度主要受人口、温室气体排放、森林覆盖率等因素的影响。
(4) 飓风强度的大小主要受强度等级、飓风频次、各等级飓风频次的影响。
问题分析:
现将问题分为以下具体分析,根据要求可分为两个子部分:
建立模型,了解全球变暖对飓风活动的影响。
构建一个合理的模型,测量全球变暖的程度和全球飓风活动的强度,并估计两者之间的关系。
解决问题可分为3个步骤:
分别分析了飓风的运动特征,得出了温度变化对飓风的影响。
分析全球变暖与不同地区飓风强度的关系。比较得出结论。
分析全球变暖对全球飓风强度的影响。
为了解决每个环节的问题,我们建立了综合评价指标体系,定义了三个体系的层次:
全球变暖影响全球变暖的因素,这些因素表达了飓风强度的程度。每个索引包含不同的对应变量。通过分析各指标之间的关系,可以得出全球变暖对飓风强度的影响。
模型的建立与求解整体论文缩略图
全部论文请见下方" 只会建模 QQ名片" 点击QQ名片即可
部分程序代码:(代码和文档not free)
bash
D=[];
D0=DC;
D1=D0(1:,6);
D2=D0(1:,7);
D3=D0(1:,8);
D4=D0(1:,9);
e1=mean(D1);
e2=mean(D2);
e3=mean(D3);
e4=mean(D4);
d1=std(D1);
d2=std(D2);
d3=std(D3);
d4=std(D4);
for i=1:6349
if abs(D1(i)
-e1)>3*d1
D0(i,:)=
-1;
end
if abs(D2(i)
-e2)>3*d1
D0(i,:)=
-1;
end
if abs(D3(i)
-e3)>3*d1
D0(i,:)=
-1;
end
if abs(D4(i)
-e4)>3*d1
D0(i,:)=
-1;
end
end
for i=1:6349
if D0(i,1)~=
-
1
D=[D;D0(i,:)];
end
end
bash
clc,clear
gmr=xlsread('data'
,'V2:X30');
ppl=gmr(:,1);
carb=gmr(:,2);
forest=gmr(:,3);
sst=xlsread('data'
,'I2:I30');
ssh=xlsread('data'
,'Q2:Q30');
ice=xlsread('data'
,'N2:N30') ;
sst_entropy=xlsread('data'
,'J2:J30');
gmf=[sst ssh ice sst_entropy];
temp=xlsread('data'
,'B2:B30');
gmr_min=min(gmr);
gmr_max=max(gmr);
gmf_min=min(gmf);
gmf_max=max(gmf);
for i=1:length(gmr);
for j=1:3
if j==3
gmr_nor(i,j)=(gmr_max(j)-gmr(i,j))/(gmr_max(j)-gmr_min(j));
else
gmr_nor(i,j)=(gmr(i,j)-gmr_min(j))/(gmr_max(j)-gmr_min(j));
end
end
end
for i=1:length(gmf)
for j=1:4
if j==3
gmf_nor(i,j)=(gmf_max(j)-gmf(i,j))/(gmf_max(j)-gmf_min(j));
else
gmf_nor(i,j)=(gmf(i,j)-gmf_min(j))/(gmf_max(j)-gmf_min(j));
end
end
end
EWr=EntropyWeight(gmr_nor);
EWf=EntropyWeight(gmf_nor);
alpha=gmr_nor*EWr';
beta=gmf_nor*EWf';
GWD=0.5*alpha.*alpha.*beta;
figure
t=1980:2008;
plot(t,beta,'k',t,alpha,'r')
xlabel('year')
hold on
[ax,h1,h2]=plotyy(t,GWD,t,temp)
set(ax(2),'ytick',[14:0.1:14.7])
set(ax(1),'ytick',[0:0.1:1])
set(h1,'color','m');
set(h2,'color','b');
legend('The Present Index of Global Warming','The Motivation of Global Warming','The Extent
of Global Warming','Global Average Temperature')
%xlabel('year'), ylabel('global average temperature '),title('Global Average Temperature')
%figure
%t=1980:2008;
%plot(t,beta,'k')
%xlabel('year'), ylabel('the present index of global warming beta'),title('The Present Index of
Global Warming')
%figure
%plot(t,alpha,'r')
%xlabel('year'), ylabel('the motivation of global warming alpha'),title('The Motivation of Global
Warming')
%figure
%plot(t,GWD)
%xlabel('year'), ylabel('GWD'),title('The Extent of Global Warming')
%figure
%plot(t,temp,'m')
%xlabel('year'), ylabel('global average temperature '),title('Global Average Temperature')
function weights = EntropyWeight(R)
[rows,cols]=size(R);
k=1/log(rows);
f=zeros(rows,cols);
sumBycols=sum(R,1);
for i=1:rows
for j=1:cols
f(i,j)=R(i,j)./sumBycols(1,j);
end
end
lnfij=zeros(rows,cols);
for i=1:rows
for j=1:cols
if f(i,j)==0
lnfij(i,j)=0;
else
lnfij(i,j)=log(f(i,j));
end
end
end
Hj=-k*(sum(f.*lnfij,1));
weights=(1-Hj)/(cols-sum(Hj));
end
clc
clear
I=xlsread('飓风数据.xlsx','Sheet1','I2:T61');
yyy=xlsread('飓风数据.xlsx','Sheet1','A2:A61');
E=zeros(60,1);
for ii=1:60
E(ii)=entropy(I(ii,:));
end
clc
clear
I=xlsread(' 飓风数据.xlsx','I2:T61');
yyy=xlsread('飓风数据.xlsx','Sheet1','A2:A61');
E=zeros(60,1);
for ii=1:60
E(ii)=entropy(I(ii,:));
end