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

本文主要是介绍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 dataa_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 dataif 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 datastr_2 = num2str(ii);str = strcat(str_1,str_2);[num_2,txt,raw] = xlsread('P_deal.xlsx',str);%Remove the sheet ii effective dataa_2 = num_2(1:2:end,:);flag_1 = 1;end%Read P_MSL_deal dataif 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 dataa_3 = num_3(1:2:end,:);flag_2 = 1;end%Data read speed dealif ii ~= 5 && ii ~= 8%Read sheet datastr_2 = num2str(ii);str = strcat(str_1,str_2);[num_4,txt,raw] = xlsread('speed_deal.xlsx',str);%Remove the sheet ii effective dataa_4 = num_4(1:2:end,:);flag_3 = 1;end%Reads the data direction dealif ii ~= 27%Read sheet datastr_2 = num2str(ii);str = strcat(str_1,str_2);[num_5,txt,raw] = xlsread('direction_deal.xlsx',str);%Remove the sheet ii effective dataa_5 = num_5(1:2:end,:);flag_4 = 1;endb = [];%The first column of data making the year, the number for the year 
* monthfor j = 1:m%Copy the Year 12 timesfor k = 1:12%From left to right, respectively, for the year, month, 
latitude, %longitude, altitude, observatories pressure, MSL pressure, %wind speed, wind direction, temperatureb((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 == 1if ii ~= 6 && ii ~= 13 && ii ~= 14 && ii ~= 17&& ii ~= 21 && ii ~= 25 && ii ~= 26 && ii ~= 28 ...&& ii ~= 36 && ii ~= 39 && ii~= 42b((j-1)*12+k,6) = a_2(j,k+1);elseif j > dif_1(ii)b((j-1)*12+k,6) = a_2(j-dif_1(ii),k+1);endendendif flag_2 == 1if ii ~= 4 && ii ~= 10 && ii ~= 18 && ii ~= 39 && ii ~= 44b((j-1)*12+k,7) = a_3(j,k+1);elseif j > dif_2(ii)b((j-1)*12+k,7) = a_3(j-dif_2(ii),k+1);endendendif flag_3 == 1if 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 ~= 41b((j-1)*12+k,8) = a_4(j,k+1);elseif j > dif_3(ii)b((j-1)*12+k,8) = a_4(j-dif_3(ii),k+1);endendendif flag_4 == 1if 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 ~= 44b((j-1)*12+k,9) = a_5(j,k+1);elseif j > dif_4(ii)b((j-1)*12+k,9) = a_5(j-dif_4(ii),k+1);endendend
b((j-1)*12+k,10) = a_1(j,k+1);endenddata = [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:10A(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:9A2_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名片即可

这篇关于2015年第四届数学建模国际赛小美赛B题南极洲的平均温度解题全过程文档及程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/541014

相关文章

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE