数学建模
第一节
1-1赛前准备
-
了解国赛
1.人数:2020年45680队、13万多人参加比赛
2.时间:每年9月,2021年9月9日(周四)18时至9月12日(周四)20时
3.赛题:本科组ABC任选一道
4.获奖:2020年本科组一等奖292队(0.698%),二等奖1201队(2.87%) -
软件安装
1.Matlab等软件安装;或在CSDN搜索
2.Mathpix:截图即可获得公式编辑(word与latex均有,付费)
3.AxGlyph:学术绘图,比matlab和excle高效(付费) -
其他
- 作息规律,赛前不熬夜
- 找好场地,最好能保证周六通宵
- 比赛期间有私事,提前和队友协商好
- 退出国赛期间没有全体禁言的交流群
- 放低心态
1-2国赛ABC该如何选题
- 赛题:本科组ABC任选一道
- A题偏向物理/工程类
- 专业性较强,往往有标准答案,非本专业不建议选择
- B题由于近两年改革,题型不定
- C题偏向经管/运筹/统计/数据分析类
- 赛题较开放易读懂
- 运筹优化类问题一般没有严格最优解
- 数据往往需要自己找
1-3你真的会“百度一下”吗
- 完全匹配搜索:查询词的外边加上双引号“ ”
- 标题必含关键字:查询词前加上intitle:
- 搜索文档:例如查询词后空格再输入filetype:文件格式(doc/pdf/xls/等等)
- 去掉不想要的:查询词后面加上空格后加减号与关键字
1-4查文献技巧
知网
- 先看知网的硕博士论文
- 高级检索:想了解神经网络在信贷策略中的应用,想找一些相关的硕博论文
1.进入高级检索界面,“+”和“-”可以自定义增加和减少检索字段
2.主题为:企业信贷
3.OR主题为信贷决策
4.AND关键词:神经网络,词频设置为“模糊”
5.检索结果可以按“相关度”或“被引"排序
其他
- 谷歌学术镜像
- Open Access Library
1-5去哪找数据
查数据平台
- 优先在知网、谷歌学术等平台搜索
- 国家统计局
1-6数据预处理
缺失值
-
比赛提供的数据,发现有些单元格时null或空的
-
缺失太多:例如调查人口信息,发现“年龄”这一项缺失了40%,就直接把该项指标删除
-
简单处理:均值、众数插补
- 适用赛题:人口的数量年龄、经济产业情况等数据统计,对个体精度要求不大的数据
-
Newton插值法:
- 适用赛题:热力学温度、地形测量、定位等只追求函数值精准而不关心变化的数据
-
样条插值法:
- 适用赛题:零件加工,水库水流量,图像“基线飘移”,机器人轨迹等精度要求高、没有突变的数据
异常值
-
样本中明显和其他数值差异很大的数据,例如一群人的身高数据中有个3米2的
-
正态分布3&原则
- 适用题目:总体符合正态分布,例如公交站人数排队论符合泊松分布
-
画箱型图
- 普遍适用
-
找到异常后,处理方法与处理缺失值相同
1-7怎么建模
到底什么是模型
-
一篇完整的数模论文
-
摘要:最重要
- 读者看完摘要,就知道论文研究的问题、用了什么方法、求得了什么结果,以及每一部分的大致步骤
-
问题重述
-
模型假设和符号说明
-
模型建立
- 一组公式,和对公式中每个变量的解释,就是一个模型
-
模型的求解
- 必须根据赛题解释清除“起始点”在本问题中究竟是什么、算法里的“节点”在本题中的实际意义是什么、最短路径意味着什么
-
不同小问
- 并不是针对题目的每一问都要建立一个模型
- 如果每个小问之间具有相似性、仅仅是增加了约束条件的话,完全可以全文建立一个模型,在针对每一个小问进行模型改进
-
模型的优缺点与改进方法
-
参考文献
-
附录
- 把查到的代码里变量名换一换就不会被查重
第二节
2-1论文排版
颜值即正义
- 各级标题与正文层次分明
- 一般标题级别不超过三级
- 正文中文字体设置宋体、英文Times News Roman
- 正文排版紧凑,看起来充实,没有大片空白
- 表格与图片
- 表格用标准的三线表
- 表的标题放在表的上方,图名放在图的下方
- 公式编辑
- 推荐mathpix,或用word的公式编辑器
- 公式需要解释清除每个变量的意义;重要的公式后面带有编号
2-2标题怎么写
-
读完标题,就能知道本文建的是什么模型
- 简明扼要、符合规范、便于检索
-
避免出现公式、非公知公用的缩写
-
字数控制在一行内
-
基于xxx模型/算法的xxx问题研究
-
xxx模型就是正文的核心模型
-
xxx问题就是赛题的中心词
-
不要过多使用修饰词
1.基于-维热传导方程的炉温曲线机理问题研究 2.基于单目标优化模型的CT系统成像问题研究 3.基于多目标化模型的系泊系统问题研究
-
2-2/3摘要该怎么写
-
基本要求
- 摘要是对论文的概括总结
- 读完摘要,就知道本文解决的问题、建立的模型和求解结果
-
注意事项
- 不要加图或表格
- 控制在3/4页到一页,字数大约800-1100
-
开头段模板:本文主要研究了XXX问题。根据XXX,利用XXX模型/方法,求解出XXX
- 第一句:说清研究的问题
- 第二句:说清全文采用的模型/算法、采取的操作
- 开头段不要写详细的求解结果
-
中间段模板:针对问题一,考虑/根据XXX,…,建立XXX模型/利用XXX方法,…求解出XXX
-
一定要写清结果!!!
- 优化类、预测类和物理类的题目,要明确写清数值
- 要求提供建议或评价的题目,写要明确写清结论和数据依据,但不要有表格;数据过多可说明数据见附录
-
如果写完后摘要超过一页了,总结可以不写
-
不要累赘重复前面写过的内容
-
写一些本文的特色、自夸的语句
-
关键词一般4-6个
-
使用的模型和算法、大家都知道的专业名词、问题的关键词
-
中间用空格分开
2-4参考文献
- 引用文献或公开资料都必须按规范列出参考文献并在正文对应出标注
- 参考文献不用自己写
- 在知网上搜索后直接引用
- 首行缩进,按照正文次序修改编号
- 在正文对应部分添加右上角的角标
- 如果需要用到博客等网站上公开的内容可以借鉴不要照抄
2-5公式编辑
- word自带公式编辑
- Mathpix(神器,付费)
- AXmath(推荐,付费)
两个合起来用Mathpix截图后点击Copy Ms Word
Word功能区选择AxMath,选择右编号公式,在弹出的窗口粘贴
2-6表格:三线表的制作与编号
2-7高逼格图片的绘制
- 常见作图软件
- 最简单:PPT、Excel、AxGlyph
- 编程类:MATLAB
- 万能神器:ECharts
2-8分页符
第三节
3-1MATLAB界面与基本操作
- 符号
- 注释:%后面写的内容都是注释
- 分号:写完一个代码,该行末尾加个分号
- 命令行输入:clc(清空命令行)、clear(清空工作区),按上方向键调用历史命令
3-2MATLAB中两种引号
MATLAB矩阵运算
创建一个1行6列的矩阵
a=[1 2 3 8 7 4]
对矩阵中每个元素都加3
b=a+3
plot函数作图,以索引为横坐标,索引就是该数字在矩阵里是“第几个”
plot(b)
grid on
多维矩阵:以空格或逗号分隔同一行元素,分号分隔各行
常见运算:转置、取逆、求特征值和特征向量
A=[3 2 1; 2 4 1; 3 9 2]
B=A` %求转置
[D,V] = eig(A) %求特征值和特征向量
E= inv(A) %求逆矩阵
F=A*E
矩阵乘法,和矩阵点乘
C= A*B %矩阵乘法
E= A.*B %矩阵点乘,对应元素相乘
使用矩阵A对方程A*x=b求解,方法是使用(反斜杠)运算符即A的逆矩阵乘以矩阵B
b=[1;3;5]
x=A\b
%验证一下
s = A*x - b
如果一个操作数是标量,而另一个操作数不是标量,则MATLAB会将该标量隐式扩展为与另一个操作数具有相同大小
H=[1 1 1; 2 2 2; 3 3 3]
K=4
L = K*H % 运算时,K变成3x3的对角矩阵,对角线上都是4
M = K+H % 运算时,K编程3x3的矩阵,每个元素都是4
不同维度的行向量和列向量相加
N = [1 2 3 4]
P = [5;6;7]
Q = N + P
一般不要进行这种不同维度的矩阵运算
3-4MATLAB的4种常见的二维图
1、线图
plot函数用来创建x和y值的简单线路图
x= 0:0.05:30; %从0到30,每隔0.05取一次值
y=sin(x);
plot(x,y) %若(x,y,"linewidth",2)可变粗
xlabel("横轴坐标")
ylabel("纵轴坐标")
%grid on % 显示网络
%axs([0 20 -1.5 1.5]) %设置纵轴坐标范围
多组函数显示在同一张图
y1=sin(x);
y2=cos(x);
plot(x,y1,x,y2)
%axis([0 20 -1.5 1.5])
2、条形图
bar函数创建垂直条形图
barh 函数用来创建水平条形图
t = -3:0.5:3;
p = exp(-t.*t);
bar(t,p)
barh(t,p)
3、极坐标图
polarplot函数用来绘制极坐标图
theta = 0:0.01:2*pi;
% abs求绝对值或复数的模
radi = abs(sin(2*theta).*cos(2*theta));
polarplot(theta,radi) %括号内是弧度和半径
4、散点图
scatter 函数用来绘制x和y值的散点图
Height = randn(1000,1);
Weight = randn(1000,1);
scatter(Height,Weight)
xlabel(”Height“)
ylabel(”weight“)
3-5三维图和子图
1、三维曲面图
surf函数可用来做三维曲面图。一般都是展示函数z=z(x,y)的图像。首先需要用meshgrid创建好空间上(x,y)点
[X,Y] = meshgrid(-2:0.2:2);
%Z = X.^2 + Y.^2
Z = X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
%colormap hsv % colormap设置颜色,可跟winter、summer,hsv是颜色调节
%colorbar
2、子图
使用subplot函数可以在同一窗口的不同子区域显示多个绘图
theta=0:0.01:2^pi;
radi=abs(sin(2*theta).*cos(2*theta))
Height=randn(1000,1);
Weight=randn(1000,1);
subplot(2,2,1);surf(X.^2);title('1st'); %subplot(第几行,第几列,第几个图);函数;标签
subplot(2,2,2);surf(Y.^2);title('2nd');
subplot(2,2,3);polarplot(theta,radi);title('3rd');
subplot(2,2,4);scatter(Height,Weight);title('4th');
3-6MATLAB导入数据
最常用的就是导入excel表格数据,主页选项卡-导入数据-选择excel文件
导入的范围
3-7MATLAB处理缺失值和异常值
清理缺失值
实时编辑器,选择任务>清理缺失数据
首先,先写一组包含缺失值和异常值的例子
第四节
4-1线性规划
- 有限的条件下,获得最大的收益
适用赛题
- Linprog函数
典型例题