数学建模初体验----记第一次数学建模比赛

前言

今年9月份要搞数学建模国赛了,我们学校也组织了同学参加,在这之前,学校也组织了一次校级赛。因为学校水平的原因,题目也不算难,各位大佬如果有好的建议,欢迎指出,小弟不胜感激。
这个比赛一共有ABC三道题
数学建模初体验----记第一次数学建模比赛_第1张图片

这是A题

数学建模初体验----记第一次数学建模比赛_第2张图片

这是B题

数学建模初体验----记第一次数学建模比赛_第3张图片

这是c题
我选择的是b题,而这道题实际上是没有给数据的,需要我们自己去查询数据

开始

题目中已知,我们需要在中国海事服务网中去查询潮汐数据,由于题目所需的数据量较大(40天)手动查询不现实,于是我采用PHP爬虫的方式,请求json数据。采用三层for循环,拿到数据,进行数据清洗以后,存入数据库,再从数据库导出(比较懒,没有用PHPExcel)
代码如下
数学建模初体验----记第一次数学建模比赛_第4张图片
这些就是为了判断月份和天数
数学建模初体验----记第一次数学建模比赛_第5张图片
前期分析,这个网站通过请求一个对应日期的json文件来获取数据,那我就请求这个json文件。因为还不会什么高阶用法,这里全部都是面向过程的语法,因为也只需要爬一次嘛,也不会重复利用。
数学建模初体验----记第一次数学建模比赛_第6张图片
数据抓下来之后,处理,格式化就是这个样子了。

数据分析

抓到数据之后,就可以完成第一个问了,之后呢就是分析数据,去拟合函数。这里我选择的是matlab,之前并没有接触过matlab,但我想,都是处理数据的编程语言,肯定有共同性,变量声明,语法,函数这些都大差不差,简单学习之后,便投入实战

在这里插入图片描述
首先,肯定是要将excel里的数据导入matlab中,然后使用matlab自带的非线性拟合工具cftool进行拟合,这里有一个坑,cftool不能识别cell类型的数据而我当时导入的日期是cell数组,自然不能作为自变量,需要去进行数据类型转换
数学建模初体验----记第一次数学建模比赛_第7张图片
数学建模初体验----记第一次数学建模比赛_第8张图片
这里我采取的是for循环,将cell数组转换成string类型,再将string类型转换成数值时间戳。导入cftool中进行函数拟合。
数学建模初体验----记第一次数学建模比赛_第9张图片

最小潮汐出现的时间

数学建模初体验----记第一次数学建模比赛_第10张图片

最大潮汐出现的时间

数学建模初体验----记第一次数学建模比赛_第11张图片

最大潮汐

数学建模初体验----记第一次数学建模比赛_第12张图片

最小潮汐

将cftool拟合出的函数保存到工作空间,输入2019-12-11~2019-12-14日的时间戳得出结果
数学建模初体验----记第一次数学建模比赛_第13张图片

预测的结果

在这里插入图片描述

这是用脚本查询的真实数据

可以看出还是有不小的误差,但是时间基本具有可用性,由此,第二问完成。

第三问

根据之前分析的数据,发现潮汐是个周期函数,而给出旅游建议这种题,更多的的就是潮汐的大小,潮汐的时间,高潮每十天左右,到达最高,低潮每40天左右达到最高,那么就在最高潮和最低潮之间,风平浪静,平稳,旅游是最好的。

总结

作为自己的数学建模初体验,发现很多还是需要数学的基础,线性代数,这些,函数拟合也需要数学,以后会更加关注这些。加油。!如果有更好的建议,欢迎各位大佬来评论哦,谢谢大家

你可能感兴趣的:(数学建模初体验----记第一次数学建模比赛)