2022年亚太杯APMCM数学建模大赛
C题 全球是否变暖
为方便各位阅览及了解掌握亚太杯的写作技巧,这里非技术使用中文,公式部分由于翻译过程繁琐使用英文来撰写此文章.
原题再现:
加拿大的49.6°C创造了地球北纬50°以上地区的气温新纪录,一周内数百人死于高温;美国加利福尼亚州死亡谷是54.4°C,这是有史以来地球上记录的最高温度;科威特53.5°C,甚至在阳光下超过70°C,在中东的许多国家超过50°C。
自今年以来,我们已经看到了大量惊人的温度报告。地球正在燃烧的事实是毫无疑问的。在6月底到7月初这些地区出现可怕的高温之后,意大利再次创下欧洲气温纪录,达到惊人的48.8°C,许多国家宣布意大利处于高温状态紧急事件,全球气候变暖是一种与自然有关的现象。这是由于温室效应的持续积累,导致地球大气系统吸收和释放的能量不平衡,以及能量在地球大气系统中的不断积累,导致温度上升和全球气候变暖。
在工业革命之前,二氧化碳(CO2)在大气中一直在百万分之280(ppm)左右。CO的浓度22004年3月,大气中达到了377.7 ppm,导致了当时10年的最大平均增长。[1]根据美国国家海洋和大气管理局(NOAA)和斯克里普斯海洋研究所(SIO)的科学家称,每月平均CO2浓度水平在2022年5月达到421 ppm。[2]的一个经济合作与发展组织(OEC
D)的报告预测了一个CO2到2050年,该水平为685 ppm。[3]
APMCM组委会已经要求您的团队解决当前报告和未来全球温度水平的预测。他们提供了数据集2022_APMCM_C_Data。csv,其中包含239177条记录,以协助您的研究。
要求
1.你同意有关全球气温的说法吗?使用2022_APMCM_C_Data。附件中的csv和其他您的团队收集的数据集,以分析全球温度变化。
a)你同意2022年3月全球气温的上升导致了比过去10年期间更大的上升吗?为什么或为什么不呢?
b)根据历史数据,请建立两个或两个以上的数学模型来描述过去,并预测未来的全球温度水平。
c)使用1个(b)中的每个模型来分别预测2050年和2100年的全球气温。你们的模型是否同意2050年或2100年全球观测点的平均温度将达到20.00°C的预测?如果
不是在2050年或2100年,那么您的预测模型中的观测点的平均温度何时会达到20.00°C?
d)你认为1(b)的模型最准确?为什么
2.影响温度变化的原因是什么?
a)使用问题1的结果和附件2022_ APMCM_C_ Data中的数据。csv和您的团队收集的其他数据集,建立一个数学模型来分析全球温度、时间和位置之间的关系(如果有的话),并解释这种关系或证明它们之间没有关系。
b)请收集相关数据,分析自然灾害的因素(如火山爆发、森林火灾、COVID-19等)。这对全球温度有什么影响吗?
c)你认为影响全球温度变化的主要原因是什么?
d)你认为有什么措施来遏制或减缓全球变暖吗?
3.准备一篇非技术性的文章(最多1页),请写一篇非技术性的文章文章(最多1页)给APMCM组委会,解释你的团队的发现和对未来的建议。
您的PDF解决方案总共不超过25页,应该包括:
一页汇总表。
目录。
你的完整解决方案。
有一页纸的非技术性文章。
注:APMCM竞赛的页面限制版数为25页。您提交的所有方面都达到了25页的限制(摘要,表,目录,文章)。但是,参考文献列表和附录的页面并不受限制。
整体求解过程概述(摘要)
为解决问题我们首先将提供的数据进行数据处理,将数据转换成年月日参数,对题中数据进行基本的可视化处理。之后我们发现所提供的数据不足以支撑,因此在伯利克网搜集了2013-2022年全球各个国家的气温信息。我们将数据利用统计学知识进行分析并计算出每一年全球气温平均变化温度。通过分析最后我们可以得出2016年、2017年、2019年、2020年3月份气温平均变化温度高于2022年3月气温平均变化温度,因此过去10年观察到的气温增幅更大的说法为正确的。
随后我们利用控制变量法发现:温度和时间成周期性变化,温度和时间之间成强相关,跟位置成弱相关。这是基于现实基础的,如四季更替导致的气温上涨下降。我以跨度较大的时间周期如1744年-1996年美国纽约八月份气温变化情况的时间为例,从中可以证明位置对于与气温的变化是不明显的。因为在时间长河之中,沧海桑田般发展变化,过去的海洋现在可能已是高山。但在较短时间段内如同一年内南半球的夏天和北半球的夏天比,南半球比北半球的平均气温低一些。因为北半球陆地面积大,陆地比热容小,热得快,冷得快。因此位置因素对于相同时间情况下的气温也存在一定联系。为了准确得出三者关系,我们进一步将前面的数据进行二次处理,将经纬度转换成location单一变量,绘制出皮尔逊相关系数热力图,进一步证明了:温度和时间成周期性变化,温度和时间之间成强相关,跟位置成弱相关的结论。
通过数据处理分析们进一步发现了影响全球气温的主要因素有COVID-19、冰川融化、海平面上升、极端自然灾害等。
问题分析:
问题一分析
为了分析全球气温上升变化,我们首先需要进行数据处理分析。由于提供的数据支撑不足,我们将题中所给的数据加上团队所搜集获取的数据进行数据处理分析。将日期信息转化成年月日变量参数,然后筛选出来2012年至2022年十年内3月份的气温数据情况,并通过时间变化阶段内的气温波动情况绘制了拟合曲线图,通过代入均值的方式表示出气温数据集变化率情况,通过这些变化率情况的比较,对2022年3月全球气温上升导致的增幅与过去10年的增幅的情况分析对比进行评价得出结论。随后我们通过多项式拟合法将2012年至2022年十年内的气温数据绘制成函数曲线建立预测模型,通过分析判断某时间段的变化趋势,增加实际问题背景所带来影响因素的权比。通过建立周期性变化的时间序列模型并在模型中加入适当熵权参数 λ 以修正其模型的正确性,最后通过此模型预测出未来的全球温度水平。 通过增加背景影响因子对两个模型进行分析预测出2050年和2100年的全球温度水平,最后判断出哪个模型更为精确并进行评价。
问题二分析
为了分析并寻找出影响全球温度变化的原因。我们首先要将题中附加所给的数据加上团队所搜集的数据进行汇总并绘制气温堆叠面积图,依据不同年份、不同温度和不同国家地区位置的信息建立基于控制变量法的数学模型。选取发达国家中心城市中美国纽约和日本东京作为典型,先控制时间的不变,通过数据的分析寻找他们之间温度和位置关系,之再控制位置不变,通过不同数据的分析寻找时间和温度关系,并推广至自然灾害等因素对全球气温变化的关系。最终得出结论并对模型进行评价,提出对减缓全球变暖的相关建议。
问题三分析
为了提出发现和给出对未来的建议,我们需要考虑造成全球变暖的人为因素和造成全球变暖的自然因素。人们焚烧化石燃料,如石油,煤炭等,或砍伐森林并将其焚烧时会产生大量的二氧化碳。自然因素如火山爆发喷射出火山灰和有害气体等。火山的喷发会直接导致温度的提高,而且它所释放出的气体也会造成温室效应。这些温室气体对来自太阳辐射的可见光具有高度透过性,而对地球发射出来的长波辐射具有高度吸收性,能强烈吸收地面辐射中的红外线,导致地球温度上升。由于自然条件下太阳的活动影响远大于人为的影响并且不可控,因此我们的建议是从人类文明自身的可持续发展方面入手。
模型假设:
(1) 假设2022年3月全球气温上升导致比过去10年观察到的增幅更大是正确的。
(2) 假设2050年或2100年观测点的全球平均气温将到20.00C的预测是错误的。
(3) 假设时间序列模型比控制变量法模型更为精确。
(4) 假设全球平均气温、时间和位置之间存在正相关联系。
(5) 假设COVID-19因素对于全球平均气温的影响是最大的。
(6) 假设人类文明的不和谐发展是导致全球气温上升的主要原因。
(7) 假设有效控制碳排放可以使未来全球气温上升幅度控制在1.5℃内。
模型的建立与求解整体论文缩略图
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码:
部分Matlab程序如下:
clc, clear
load a w;
b=zscore(a);
w=repmat(w,n,1);
c=b.*w
cstar=max(c)
c0=min(c)
for i=1:n
sstar(i)=norm(c(i,:)-cstar);
s0(i)=norm(c(i,:)-c0);
end
f=s0./(sstar+s0);
xlswrite('book3.xls',[sstar' s0' f'])
[sc,ind]=sort(f,'descend')
function r1 = gld_gjjd(x)
s = size(x);
len = s(2);
num = s(1);
for i = 1: num
x(i,:) = x(i,:)./x(i,1);
end
dx(num,len-1) = 0;
for i = 1 : num
for j = 1 : len - 1
dx(i,j) = x(i,j+1) - x(i,j);
end
end
c = 1;
beta(1,1:len-1) = 0;
w(1,1:len-1) = 0;
for i = 2 : num
temp = sum(abs(x(i,:) - x(1,:)),2);
for k = 1 : len - 1
beta(i,k) = atan((dx(i,k) - dx(1,k))/(1 + dx(i,k)*dx(1,k)));
if beta(i,k) < 0
beta(i,k) = pi + beta(i,k);
end
w(i,k) = 1 - abs(x(i,k) - x(1,k))/temp;
end
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