2015年第四届数学建模国际赛小美赛B题南极洲的平均温度解题全过程文档及程序

2015年第四届数学建模国际赛小美赛

B题 南极洲的平均温度

原题再现:

  地表平均温度是反映气候变化和全球变暖的重要指标。然而,在以前的估计中,在如何界定土地平均数方面存在一些方法上的差异。为简单起见,我们只考虑南极洲。请建立一个数学框架,用以根据气象站温度计数据定义和估计平均表面温度,并描述南极温度随时间的变化。
  所需数据可从附件或公布的数据库获取,如英国南极调查局网站:https://legacy.bas.ac.uk/met/reader/.

整体求解过程概述(摘要)

  为了探索南极洲的平均温度,我们分别建立了三个不同的模式。第一个模型是南极的温度分析模型。第二个模型是南极洲平均地表温度分析框架。第三个模型描述了南极温度随时间的变化。

  在第一个模型中,完成数据采集任务,获得24828组数据,并进行数据预处理,获得5884组数据。同时,为了获得有效的数据,通过对站点信息的分析,定义了评价数据可用性的指标。然后分析了各因子对温度的贡献,建立了时间、纬度、经度、站压、风速、风向等因子对南极温度的多元线性回归模型。变量的系数依次为0.013、-0.509、-0.065、0.286、-0.431和0.050。模型的拟合优度为0.499。通过对第一个模型的分析,明确了各因素的作用,得到了各有效因素的贡献信息。

  在第二个模型中,通过插值确定地表平均温度,建立多元非线性回归模型和BP神经网络模型。通过对温度、气压和风场数据进行插值,得到特定时间段的平均地面数据。同时,考虑到第一类模型拟合优度较低,采用多元非线性回归方法。因此,我们构造了时间的正弦周期函数,并用Levenberg-Marquardt方法对数据进行拟合。得到了时间、气压、风速和风向的线性项系数分别为0.019、0.008、-0.053和0.006的十参数函数的拟合结果。模型的拟合优度为0.626。此外,针对BP神经网络在非线性拟合方面的优越性,本文还训练了BP神经网络模型。通过对100组数据的检验,六隐层BP神经网络模型的拟合优度为0.802。

  在第三个模型中,我们定义了一个非线性回归模型,利用一个5参数的正弦周期函数来获取南极温度随时间变化的信息。周期项系数为-6.283,线性关系为0.185。模型的拟合优度为0.707。分析了年平均气温随年份的变化规律,得出年平均气温的斜率为0.038。这意味着南极洲的平均气温每十年上升0.38℃。对模型进行了检验,平均绝对误差为1.527℃。

  总之,南极洲的平均温度与某些因素有关。气温呈周期性变化,并随年份变化缓慢上升。

模型假设:

  我们假定站点的经纬度是恒定的。
  网站提供的黑色、蓝色和绿色数据均有效。
  网站的红色数据无效。

问题重述:

  在这个问题上,我们只需要考虑南极洲。在此基础上,提出了一个由气象站温度计数据定义和估算南极平均温度的数学框架,并描述了南极温度随时间的变化。从这个问题给我们的网站上,我们可以得到很多南极不同站点的数据,这些数据来自SCAR阅读器项目。这些数据包括20世纪中叶至21世纪初不同月份的气温、平均海平面气压(MSL压力)、气压、风速和风向。然而,我们所得到的数据仅仅反映了站点周围的温度,不能反映整个南极洲的平均温度。因此,我们采用插值法来计算平均表面温度。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

clear;
clc;
data = [];
%load data sheet1-44
%Observatory latitude and longitude data
latitude = 
[67.8,90,62.5,71.5,78,77.9,62.2,80,52,66.3,68.6,63,66.7,63.4, ...
 
65.4,62.1,40.4,62.2,54.3,75.5,62.2,62.2,69.5,54.5,64.2,66.5,46.8, ...
 
62.4,67.6,77.9,66.5,67.7,70.7,70.8,63.3,60.7,67.5,74.8,68.1,77.9, ...
 60.7,69,78.5,69.4];
longitude = 
[-67.9,0,-59.7,24.1,-38.8,-34.6,-58.9,-120,169,110.5,78, ...
 
-60.7,140,-57,-64.4,-58.4,-9.9,-59,-36.5,-26.4,-58.6,-58.7,159.4, ...
 
158.9,-56.7,93,37.8,-58.9,62.9,166.7,93,45.9,-8.4,-11.8,-57.9,-44.7, 
...
 -68.1,-136.9,-67.1,166.7,-45.6,-39.6,106.9,76.4];
height = 
[26,2835,5,931,50,256,16,1515,19,42,13,8,43,13,11,20,54,10,3,30, ...
 
4,11,304,8,198,30,24,10,16,24,30,40,50,119,10,6,16,124,4,16,6,21,3490
,18];
%Station Pressure for the presence of 11 observation stations start year 
%and Temperature discrepancies (Station_Pressure night)
dif_1 = 
[0,0,0,0,0,10,0,0,0,0,0,0,38,36,0,0,46,0,0,0,8,0,0,0,25,55,0, ...
 37,0,0,0,0,0,0,0,93,0,0,17,0,0,2,0,0];
%For MSL Pressure stations exist seven years starting with the discrepancies 
%Temperature, whichever is later processed 5 (Station_Pressure nights)
dif_2 = 
[0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, ...
 0,0,0,0,0,0,0,5,0,0,0,0,1];
%Wind Speed existence for 14 years and does not match the initial 
%observation station Temperature (Wind_Speed night)
dif_3 = 
[0,0,21,0,0,0,0,0,0,1,0,0,0,27,2,0,46,0,54,0,0,0,0,0,13,55,0, ...
 18,0,0,0,0,0,0,24,84,0,0,5,40,9,0,0,0];
%Wind Direction existence for 24 years starting with the observation 
%station Temperature discrepancies (Wind_Direction night)
dif_4 = 
[0,0,21,0,45,2,0,43,0,1,0,0,0,27,2,0,44,2,54,0,0,12,2,0,17,52, ...
 0,18,0,0,34,0,0,0,24,84,0,1,8,40,9,0,5,1];
for ii = 1:44
 %Read T_deal data
 %Read sheet data
 [num_1,txt,raw] = xlsread('T_deal.xlsx',ii);
 %Remove the sheet ii effective data
 a_1 = num_1(1:2:end,:);
 %Get valid data sheet ii dimension m rows and n columns
 %Obtained sheet ii m in total
 [m,n] = size(a_1);
 flag_1 = 0;
 flag_2 = 0;
 flag_3 = 0;
 flag_4 = 0;
 str_1 = 'Sheet';
 %Read P_deal data
 if ii ~= 3 && ii ~= 5 && ii ~= 8 && ii ~= 9 && ii ~= 12 && ii ~= 15 ...
 && ii ~= 16 && ii ~= 19 && ii ~= 20 && ii ~= 22 && ii ~= 33 ...
 && ii ~= 35 &&ii ~= 37 && ii ~= 40 && ii ~= 41
 %Read sheet data
 str_2 = num2str(ii);
 str = strcat(str_1,str_2);
 [num_2,txt,raw] = xlsread('P_deal.xlsx',str);
 %Remove the sheet ii effective data
 a_2 = num_2(1:2:end,:);
 flag_1 = 1;
 end
 %Read P_MSL_deal data
 if ii ~= 2 && ii ~= 8 && ii ~= 43
 %Read sheet data
str_2 = num2str(ii);
 str = strcat(str_1,str_2);
 [num_3,txt,raw] = xlsread('P_MSL_deal_2.xlsx',str);
 %Remove the sheet ii effective data
 a_3 = num_3(1:2:end,:);
 flag_2 = 1;
 end
 %Data read speed deal
 if ii ~= 5 && ii ~= 8
 %Read sheet data
 str_2 = num2str(ii);
 str = strcat(str_1,str_2);
 [num_4,txt,raw] = xlsread('speed_deal.xlsx',str);
 %Remove the sheet ii effective data
 a_4 = num_4(1:2:end,:);
 flag_3 = 1;
 end
 %Reads the data direction deal
 if ii ~= 27
 %Read sheet data
 str_2 = num2str(ii);
 str = strcat(str_1,str_2);
 [num_5,txt,raw] = xlsread('direction_deal.xlsx',str);
 %Remove the sheet ii effective data
 a_5 = num_5(1:2:end,:);
 flag_4 = 1;
 end
 b = [];
 %The first column of data making the year, the number for the year 
* month
 for j = 1:m
 %Copy the Year 12 times
 for k = 1:12
 %From left to right, respectively, for the year, month, 
latitude, 
 %longitude, altitude, observatories pressure, MSL pressure, 
 %wind speed, wind direction, temperature
 b((j-1)*12+k,1) = a_1(j,1);
 b((j-1)*12+k,2) = k;
 b((j-1)*12+k,3) = latitude(ii);
 b((j-1)*12+k,4) = longitude(ii);
 b((j-1)*12+k,5) = height(ii);
 if flag_1 == 1
 if ii ~= 6 && ii ~= 13 && ii ~= 14 && ii ~= 17
 && ii ~= 21 && ii ~= 25 && ii ~= 26 && ii ~= 28 ...
 && ii ~= 36 && ii ~= 39 && ii~= 42
 b((j-1)*12+k,6) = a_2(j,k+1);
 else
 if j > dif_1(ii)
 b((j-1)*12+k,6) = a_2(j-dif_1(ii),k+1);
 end
 end
 end
 if flag_2 == 1
 if ii ~= 4 && ii ~= 10 && ii ~= 18 && ii ~= 39 && ii ~= 44
 b((j-1)*12+k,7) = a_3(j,k+1);
 else
 if j > dif_2(ii)
 b((j-1)*12+k,7) = a_3(j-dif_2(ii),k+1);
 end
 end
 end
 if flag_3 == 1
 if ii ~= 3 && ii ~= 10 && ii ~= 14 && ii ~= 15 ...
 && ii ~= 17 && ii ~= 19 && ii ~= 25 && ii ~= 26 ...
 && ii ~= 28 && ii ~= 35 && ii ~= 36 && ii ~= 39 ...
 && ii ~= 40 && ii ~= 41
 b((j-1)*12+k,8) = a_4(j,k+1);
 else
 if j > dif_3(ii)
 b((j-1)*12+k,8) = a_4(j-dif_3(ii),k+1);
 end
 end
 end
 if flag_4 == 1
 if ii ~= 3 && ii ~= 5 && ii ~= 6 && ii ~= 8 && ii ~= 10 ...
 && ii ~= 14 && ii ~= 15 && ii ~= 17 && ii ~= 18 ...
 && ii ~= 19 && ii ~= 22 && ii ~= 23 && ii ~= 25 ...
 && ii ~= 26 && ii ~= 28 && ii ~= 31 && ii ~= 35 ...
 && ii ~= 36 && ii ~= 38 && ii ~= 39 && ii ~= 40 ...
 && ii ~= 41 && ii ~= 43 && ii ~= 44
 b((j-1)*12+k,9) = a_5(j,k+1);
 else
 if j > dif_4(ii)
 b((j-1)*12+k,9) = a_5(j-dif_4(ii),k+1);
 end
 end
 end
b((j-1)*12+k,10) = a_1(j,k+1);
 end
 end
 data = [data;b];
 disp([num2str(ii),' data have been loaded']);
end
xlswrite('data.xls',data);
data_p = data(:,6:9);
data_p(data_p==0) = NaN;
xlswrite('data_p.xls',data_p);
clear
clc
A = xlsread('dataf.xls');
for ii = 6:10
 A(isnan(A(:,ii)),:) = [];
end
xlswrite('data_nancut.xls',A);
A1(:,1) = A(:,1) + 0.01 * A(:,2);
A1(:,2:9) = A(:,3:10);
xlswrite('data_nancut_dotmonth.xls',A1)
A2(:,1) = A(:,1) + A(:,2) / 12;
A2(:,2:9) = A(:,3:10);
xlswrite('data_nancut_nomonth.xls',A2);
for ii = 1:9
 A2_max = max(A2(:,ii));
 A2_min = min(A2(:,ii));
 A3(:,ii) = (A2(:,ii) - A2_min) / (A2_max - A2_min);
end
xlswrite('data_nancut_nomonth_norm.xls',A3);
T_max = max(A(:,10));
T_min = min(A(:,10));
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/271592.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字大师:数据可视化助力企业智慧成本管理

在当今竞争激烈的商业环境中,企业要想取得成功,不仅需要不断创新,还需要高效管理资源,降低成本。数据可视化作为一项强大的工具,为企业提供了更清晰、更直观的经营洞察,从而帮助企业实现成本的有效控制和节…

美股60年牛熊周期启示,紧扣周期特点和产业趋势才是王道

2023年,美股在地缘政治时间频发、美联储加息以及银行危机中扶摇直上,标普500指数迄今已攀升超过24%,令投资者感到惊讶。回顾美股近60年历史,美股今年的表现也并不算特别。 《XM平台新用户注册最新操作流程(2023年&…

stm32项目(15)——基于stm32的LED闪烁试验protues仿真

1.功能设计 使用stm32的软件定时器功能,控制PA口的两个LED灯轮流闪烁。 仿真图如下所示 2.设计思路 首先是LED灯的GPIO口初始化,设置为输出模式。 然后是定时器的初始化 最后 在中断服务函数里面,对LED进行闪烁操作 3.软件介绍 protues …

vsetvli/vsetivli/vsetvl

转载自:【《RISC-V “V“ Vector Extension Version 1.0》阅读笔记】_risc v的rvv-CSDN博客 上述指令的作用:快速配置 vl 和 vtype 中的值以匹配应用程序需求; vset{i}vl{i} 指令根据参数设置 vtype 和 vl CSR,并将 vl 的新值写入…

element步骤条<el-steps>使用具名插槽自定义

element步骤条使用具名插槽自定义 步骤条使用具名插槽: <el-steps direction"vertical" :active"1"><el-step><template slot"description">//在此处可以写你的插槽内容</template>/el-step> </el-steps>步骤…

LeetCode-环形链表问题

1.环形链表&#xff08;141&#xff09; 题目描述&#xff1a; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统…

【前端技术】Vite vs Webpack

✨专栏介绍 在当今数字化时代&#xff0c;Web应用程序已经成为了人们生活和工作中不可或缺的一部分。而要构建出令人印象深刻且功能强大的Web应用程序&#xff0c;就需要掌握一系列前端技术。前端技术涵盖了HTML、CSS和JavaScript等核心技术&#xff0c;以及各种框架、库和工具…

Linux:查询当前进程或线程的资源使用情况

目录 一、/proc/[PID]/下的各个文件1、proc简介2、/proc/[PID]/详解 二、通过Linux API获取当前进程或线程的资源使用情况1、getrusage2、sysinfo3、times 在工作中&#xff0c;我们排除app出现的一些性能/资源问题时&#xff0c;通常要先知道当前app的资源使用情况&#xff0c…

基于ssm小区物业管理系统论文

摘 要 如今的时代&#xff0c;是有史以来最好的时代&#xff0c;随着计算机的发展到现在的移动终端的发展&#xff0c;国内目前信息技术已经在世界上遥遥领先&#xff0c;让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#x…

Flink 输出至 Redis

【1】引入第三方Bahir提供的Flink-redis相关依赖包 <!-- https://mvnrepository.com/artifact/org.apache.bahir/flink-connector-redis --> <dependency><groupId>org.apache.bahir</groupId><artifactId>flink-connector-redis_2.11</arti…

奔骝三千六百五

奔骝三千六百五 2013年12月26日奔骝定位成立&#xff0c;至今整整十年&#xff0c;三千六百五十天。这是一段极短暂又漫长的时光&#xff0c;短暂到犹如一颗流星在宇宙的长河里连一粒尘埃的空间都占据不到&#xff0c;倏忽之间就走过了&#xff1b;漫长到好像等待冬天过去的北…

禁止选择当天及以后的时间

这篇文章编辑与2023.12.26&#xff0c;所以可以选择的时间为包含2023.12.25以及之前的时间 实现思路&#xff1a;1、获取当天时间的年月日&#xff0c;然后默认时分秒为23&#xff1a;59&#xff1a;59&#xff1b; 2、获取到时间转为时间戳减去 一天&#xff08;1*24*3600*10…

阅读2023:让每一天都徜徉于书海之中

阅读&#xff0c;是中华民族的优良传统&#xff0c;也是创新发展的永续动力。2023年初&#xff0c;教育部、中央宣传部等八部门印发《全国青少年学生读书行动实施方案》&#xff0c;推动青少年学生阅读深入开展&#xff0c;促进全面提升育人水平。 阅读不仅是文化传承的重要手…

ubuntu18设置开机自启动

项目需求&#xff1a;机器人开机上电后工控机首先运行机械臂控制代码&#xff0c;再运行算法代码 1.终端执行以下代码 gnome-session-properties 2.设置开机自启动选项 在弹出界面点击添加&#xff0c;名称随便填&#xff0c;命令填入要启动的脚本&#xff0c;注释随便填。 …

2024 年 11 款最佳 ANDROID 数据恢复软件应用

Android 设备上的数据丢失可能是一种令人痛苦的经历&#xff0c;通常会导致不可替代的信息瞬间消失。 意外删除、系统崩溃或格式错误都可能发生&#xff0c;重要数据的丢失可能会扰乱日常工作并影响您的工作效率。 幸运的是&#xff0c;技术进步带来了多种恢复解决方案&…

Golang 面试大揭秘:吸引 50 万播放,涨粉 3000+的原创笔记曝光

大家好&#xff0c;我是木川 去年&#xff0c;我做了一份 Golang 原创面试视频&#xff0c;当时依靠着些视频&#xff0c;B站 从 0 到 1&#xff0c;涨粉 3000&#xff0c;接近 50 万播放量 在过去半年的时间&#xff0c;我一直在思考&#xff1a;怎么才能做得更好&#xff1f;…

2024,华为重塑笔记本的“创新周期”

作者 | 曾响铃 文 | 响铃说 谈及电脑PC&#xff0c;相信不少消费者都会下意识地给行业贴一个标签&#xff1a;夕阳行业。毕竟当下已经是移动互联网时代&#xff0c;传统PC的使用场景不断萎缩&#xff0c;市场研究机构Gartner报告显示&#xff0c;截至2023年第三季度&#xff…

CMakeLists.txt

源码结构 生成可执行程序 # CMake最小版本号 cmake_minimum_required(VERSION 3.15.0)#增加-stdc11 set(CMAKE_CXX_STANDARD 11)#设置工程名称 project(calculate)#[[ #方法一&#xff1a;添加源码文件 #aux_source_directory(< dir > < variable >) #dir&#xf…

算法学习系列(十二):区间合并

目录 引言一、题目描述二、解题思路三、代码实现四、测试 引言 这个区间合并顾名思义就是把区间给合并起来&#xff0c;所以说也就只有这一种题型&#xff0c;然后这个一般面试或者笔试可能会考&#xff0c;所以说总结一下还是好的&#xff0c;那就开始吧。 一、题目描述 给…

数据智慧:C#中编程实现自定义计算的Excel数据透视表

前言 数据透视表&#xff08;Pivot Table&#xff09;是一种数据分析工具&#xff0c;通常用于对大量数据进行汇总、分析和展示。它可以帮助用户从原始数据中提取关键信息、发现模式和趋势&#xff0c;并以可视化的方式呈现。 在数据透视表中&#xff0c;数据分析师通常希望进…