初窥数学建模

学术   2024-11-19 10:46   重庆  

数学建模是一个将现实世界的复杂问题转化成数学形式来对问题进行分析和求解的过程。这个过程涉及将实际问题中的复杂因素简化为数学结构,并用数学语言描述这些因素及其相互关系。


数学建模过程

引入经典问题:长方形(四角连线呈长方形)的椅子可以在地面上放稳吗?

这是一个现实世界的问题,数学建模的过程就是需要将其转化成数学形式进行分析和求解。主要分为以下五个步骤。

1.提出问题


大家可能会想,题目不是已经给出问题了吗? 是的,但是这里的提出问题是指用数学语言去表达。

首先分析问题,列出问题中涉及的变量,包括适当的单位。经过分析,我们可以用变量表示椅子的位置,用函数表示椅子四脚与地面的距离,进而用数学语言把问题表达出来。

                                                 ”

接着模型假设,我们要抛开一些非主干的问题,因此需要对问题做一些假设。模型假设是我们对问题增加的约束条件,在做模型假设是我们要考虑假设的合理性和特殊性。例如我们不能假设地面时完全水平的或是阶梯,这种假设没有意义。

  1. 假设椅子的四条腿一样长,椅子腿与地面接触处抽象为一个点,,四脚的连线呈长方形。

  2. 地面高度是连续变化的,沿周围任意方向都不会出现间断 (高度突变),即地面是连续曲面。这个假设相当于给出了椅子能放稳的必要条件。

  3. 对于椅子脚的间距和椅子腿的长度而言,地面是相对平坦的,使椅子在任何位置至少有三只脚同时着地。

然后数学表达,根据模型假设和涉及的变量将问题数学化。这一步通常要结合考虑我们可能会用到的模型。

我们知道当椅脚与地面的竖直距离为零时,椅脚就着地了,而当距离大于零时,椅脚不着地。假设椅子的四脚记作A,B,C,D。根据假设3至少由三只脚同时着地,那么椅子在地面上移动对问题没有影响,只考虑椅子旋转的情况。因此我们假设某一时刻A,B,C着地,以AC与BD连线的交点为原点,AC为X轴建立平面直角坐标系,设OA与X轴的夹角为θ,因为长方形的旋转可代表椅子位置的改变,则旋转角度θ这一变量可表示椅子的位置。A、B两脚与地面竖直距离之和为f(θ),C、D两脚与地面竖直距离之和为g(θ),其中θ∈[0,π]。

在更多复杂的现实问题中,我们在问题分析和模型假设之前,可能还需要进行数据集处理工作。例如我们希望建立模型来预测房价,需要进行一下工作:

  1. 数据收集:通过各个平台收集包含多个房屋特征的数据集,例如房屋面积、卧室数量、位置、房价等。

  2. 数据清洗:收集的数据集可能存在很多问题,数据清洗的目标是处理数据中的问题,使数据质量达到可用的标准。包括缺失值处理,比如数据集中有些房屋的“面积”特征缺失,可以用均值、中位数或最频繁值填充缺失值,或者使用插值方法填补缺失值;异常值处理,比如发现一些房屋的“面积”值异常大,可能是录入错误,通过统计分析(如箱线图)识别异常值,并根据业务规则决定是否删除或修正这些值;重复数据处理,比如数据集中存在重复的房屋记录。我们要删除重复记录,以确保每个房屋只有一个数据条目;

  3. 数据标准化:房屋价格可能使用了不同的货币单位。我们要统一所有价格数据的单位,以便进行比较和分析。

  4. 特征工程:目标是从原始数据中提取有用的信息,创建新的特征,或者转换现有特征,以提高模型的性能。特征提取,例如数据集中没有包含房屋的“楼层”信息,但这可能对房价有影响。可以从房屋的描述字段中提取出“楼层”信息,并作为一个新特征添加到数据集中;特征归一化,一些特征(如房屋面积和房龄)具有不同的量纲,这可能会影响模型训练。可以对特征进行标准化或归一化,以确保所有特征在相同的尺度上。

最终房屋价格可能与房屋面积、卧室数量、位置、房价、楼层等特征因素有关,我们再列出变量和数学关系。


2.选择建模方法

选择解决问题的一个一般的求解方法。一般地,这一步需要有一定的数学建模经验和技巧。同时需要熟悉相关的文献。要求我们对常见的数学模型和算法有一定的了解。下图列出来针对不同问题的常见模型。

常用模型

例如回归拟合预测模型就是房价预测中常用的一种方法。它通过建立一个数学模型来描述房价与其他特征变量(房屋面积、卧室数量、位置、房价、楼层)之间的关系,从而进行预测。

常用的十大算法

  1. 蒙特卡罗算法(该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法)

  2. 数据拟合、参数估计、插值等数据处理算法(比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用Matlab作为工具)

  3. 线性规划、整数规划、多元规划、二次规划等规划类问题(建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo软件实现)

  4. 图论算法(这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决需要认真准备)

  5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法(这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中)

  6. 最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法(这些问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用)

  7. 网格算法和穷举法(网格算法和穷举法都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具)

  8. 一些连续离散化方法(很多问题都是实际来的,数据可以是连续的,而计算机只认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的)

  9. 数值分析算法(如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用)

  10. 图象处理算法(赛题中有一类问题与图形有关,即使与图形无关,论文中也应该要不乏图片的,这些图形如何展示以及如何处理就是需要解决的问题。

模型和算法之间的关系

模型使用算法来实现和优化:

  • 实现模型:许多模型的实现依赖于算法。例如,支持向量机(SVM)模型需要通过算法来找到最优的分割超平面。

  • 优化模型:优化模型中的参数或结构通常使用算法。例如,线性回归模型通过最小二乘算法来确定回归系数。

模型定义了问题,算法提供了解决方案:

  1. 模型定义:模型描述了问题的结构和关系。它定义了要分析的变量、参数及其相互作用。

  2. 算法解决:算法提供了解决模型中问题的方法和步骤。例如,决策树模型定义了分类规则,而构建决策树的算法(如ID3或C4.5)决定了如何生成树结构。

模型和算法的结合:

  1. 模型构建:在构建模型时,需要选择和设计合适的算法来实现模型的功能。例如,在机器学习中,选择模型(如神经网络)时,需要应用相应的训练算法(如反向传播算法)。

  2. 模型评估和优化:模型的效果可以通过算法来评估和优化。例如,交叉验证算法可以用来评估模型的性能,超参数优化算法(如网格搜索、随机搜索)可以用来调整模型的参数


3.推导模型的公式

将第一步中得到的问题重新表达成第二步选定的建模方法所需要的形式,从而构建模型,确保第一步中的变量名与第二步的一致。记下任何补充假设,这些假设是为了使第一步中描述的问题与第二步中选定的数学结构相适应而做出的。

在房价预测问题中,数学模型构建:通过线性函数用于建模多个自变量 x1,x2,……xp 和一个因变量 y 之间的线性关系。其中自变量X可以表示房屋面积、卧室数量、位置、房价、楼层等特征变量,y是房价。

在椅子平稳性问题中,数学模型构建:已知f(θ)和g(θ)是θ的非负连续函数,对∀θ,f(θ)•g(θ)=0,证明:∃θ0∈[0,π],使得f(θ0)=g(θ0)=0成立。


4.求解模型

将第二步中所选方法应用于第三步得到的表达式,再求解过程中注意数学推导,确保推导过程无误且结果有意义。并采用适当的方法扩大解决问题的范围并减少计算错误。

在椅子平稳性问题中,①若f(0)=g(0)=0,那么结论成立。②若f(0)与g(0)不同时为零,不妨设f(0)>0,g(0)=0。将长方形ABCD绕点O逆时针旋转角度π后,A,B与C,D互换,但长方形ABCD在地面上所处的位置不变,由此可知,f(π)=g(0),g(π)=f(0).∴f(0)>0,g(0)=0 → g(π)>0,f(π)=0。

令h(θ)=f(θ)-g(θ),由f(θ)和g(θ)的连续性知h(θ)也是连续函数。又h(0)=f(0)-g(0)>0,h(π)=f(π)-g(π)<0,根据连续函数介值定理,必存在θ0∈(0,π)使得h(θ0)=0,即f(θ0)=g(θ0) ;又因为f(θ0)•g(θ0)=0,所以f(θ0)=g(θ0)=0。即四只脚同时着地,稳定。

在预测房价问题中,需要是预测的房价和真实的房价的误差趋于最小,使用最小二乘法作为损失函数优化模型,即使图中Q值趋于最小。也就是当梯度为零的时候取最小值


这一过程需要对建模工具有一定的掌握。

  • 统计模型:SPSS,Eviews,Stata 。

  • 数据分析:R,数据库SQL Server,IBM,DB2

  • 微分方程:Maple, Mathematic, MATLAB

  • 运筹规划:Matlab,Lingo

  • 智能算法:Matlab,R

  • 时间序列:R,Matlab

  • 图像处理:Matlab,C++


5.回答问题

最终在论文中我们需要用非技术性的语言将第四步的结果重新表述,表述过程中需要避免数学符号和术语。这部分是对你整篇论文成果的总结,一定要写的有深度。除此之外,通常还要写上一些灵敏度分析,如果是统计模型的话,要有模型检验。论文通常会需要画一些图表,可以使用Matlab、R等软件来画跟数据有关的图,使用Visio或者PPT画流程图之类的图。

在椅子平稳性问题中,椅子在旋转过程中,至少存在一个点能使椅子能在不平的地面上放稳。

在预测房价问题中,根据我们推导出的模型,当已知特征变量时,能够预测房屋价格。


总结

在建模的五步法中,整个建模需要的工作包括:

  1. 数据收集:要构建有效的模型,首先需要获得相关的数据。这些数据可以来自多种渠道。

  2. 数据清理:原始数据往往包含噪声、缺失值和异常值,因此在建模之前必须对数据进行清理。数据清理的过程包括:

  3. 特征工程:特征工程是指从原始数据中提取和构造有助于模型预测的特征

  4. 模型选择与建立:根据问题的性质和数据的特点,选择合适的数学或统计模型。

  5. 模型求解:在模型建立之后,需要对模型进行求解、训练和验证。

  6. 模型评估:评估模型的性能是检验模型有效性的重要步骤。

  7. 问题回答:用非技术语言解释模型的预测结果和模型的原理和假设等

掌握必备知识

1.理论基础

高数、线性代数和概率论与统计基础。在数学建模过程中我们要能够掌握函数的变化、极值、导数、积分等概念,对于优化问题和动态系统建模非常重要。而矩阵运算、特征值、特征向量、线性方程组等概念在处理数据、优化问题和统计分析中至关重要。同时还需要处理不确定性和随机性,涉及概率分布、期望值、方差、假设检验等问题。

掌握常见模型和算法。只有对常见模型和算法有一定的了解,才能在选择解决问题的一个一般的求解方法时,找到合适和模型。不一定要对模型有很深的了解,但要知道不同模型能够用在哪些问题上。



2.工具掌握

编程代码

  1. Matlab:交互式编程软件,将海量算法或工具进行封存,能仿真、能绘图、能求解,可直接调用。

  2. Python:主要针对机器学习算法和深度学习,以及数据分析是非常方便的。

  3. SPSS:专业的统计数据分析软件,有大量统计模型可直接使用。

  4. Lingo:交互式的线性和通用优化求解器,可以用于求解各类规划模型。


写作排版

  1. Word(或WPS):论文写作专用,并可以导成PDF格式。

  2. EXCEL:分析数据、并绘制数据走势图等精美图片。

  3. Mathtype:公式编辑器,用于编写各类数学公式和特殊符号。

  4. Mathpix:公式提取软件,用于将其他论文的公式提取到自己论文中。

  5. Checker:英文文章语言免费检查软件,可分析语法、拼写等错误。

  6. LaTeX:论文排版软件,主要利用编程语言对论文进行排版。

文献检索

文献检索也是很重要的,数模竞赛题目往往具有一定的专业性,需要学会查到相关领域的论文并加以利用


数学建模竞赛

只有参加比赛在实践中才能帮助我们快速提升,通过比赛熟悉从数据收集、建立模型到论文撰写的整个流程;提示文献查阅、工具使用和代码编写的能力;感受团队协作、学术讨论、全力以赴的氛围。刚开始的时候要端正好心态,不要盲目的追求获奖,以学习练兵为目标。

1.如何组队

建模比赛都是是三个人组队,一般来说为:一人负责编程、一人负责建模、一人负责论文。

队长通常由建模手担任,需要具备的是领导力、沟通协调能力、时间管理能力和决策能力。他不仅要掌控比赛进度,建立有效的沟通机制,合理分配各阶段的任务和时间,还要激发团队士气,综合团队意见,做出明智的决策。

建模手的首要任务深入解析题目要求,确保对问题的全面准确理解。随后需广泛搜集并研读相关领域的最新文献,提炼出关键的研究方法和理论框架。基于这些资料设计并构建数学模型,明确模型假设、参数设定及逻辑推导过程,形成模型初稿。在编程手和写作手的反馈下不断迭代优化模型,确保其既符合题目要求又便于编程实现和论文撰写。

赛前,写作手要熟悉论文写作规范,准备好论文模板和必要的写作工具(如Word、LaTeX)。根据建模手提供的模型初稿和深入分析,展开详细的论述,包括背景介绍、文献综述、模型构建、结果分析等多个部分,确保论文内容充实、逻辑严谨。在编程手完成编程工作后,将结合编程结果和模型理论,进行深入的分析和讨论,提升论文的学术价值和说服力。最后全面审查论文,修正语法错误、优化排版布局,确保论文的整洁美观。

编程手要做好技术准备,赛前熟练掌握至少一种编程语言(如Python、MATLAB)并安装调试好运行环境。在明确建模手M的模型求解需求后,要迅速制定编程方案,编写高效、准确的代码来实现模型求解。在编程过程中应注重代码的可读性和可维护性,并在适当位置添加注释和输出中间结果,以便于调试和后续分析。在编程完成后,整理编程结果,并将其转化为易于理解和分析的表格、图形等形式,为写作手提供有力的数据支持。


数学中国
数学中国 (数学建模)-最专业的数学理论研究、建模实践平台.
 最新文章