数学软件在数学建模中的作用
2022-08-10李三杰胡玉林王玉龙
李三杰 胡玉林 王玉龙
(1.郑州财经学院统计与大数据学院,河南 郑州450044;2.郑州财经学院信息工程学院,河南 郑州 450044)
0 引言
近年来,数学软件的出现与应用,为高校在数学建模中打开了一扇大门,给数学建模的各个环节带来了极大的便利。数学建模不仅在教学领域中得到了广泛应用,而且在人才队伍建设以及其他各个领域中也有着不可取代的价值。数学作为一门基础学科,使用数学知识解决的实际问题的过程,在本质上就是数学建模的过程。对一个大规模的实际问题而言,数学建模的各个环节都是非常重要的,同时也是非常困难的。传统的方法就是用已有的数值方法通过高级语言编程实现。完全使用手动计算是不现实的,还可以通过借助数学软件来完成。这样不但要求使用者具有一定的数学修养和专业知识,还应该具有较好的编程能力。因此,探讨数学软件在数学建模中的作用,对于教学研究、人才培养具有十分重要的价值意义。因此,探讨数学软件在数学建模中的作用,对于激发学生课外自主学习兴趣,鼓励学生自主探索数学方法在实际问题中的运用,提高学生建立数学模型和运用计算机技术解决多行业综合复杂的社会及工程问题的创新应用能力具有十分重要的价值意义。
1 数学软件简介
所谓数学软件,即制作数学动画与图形、实施数学运算以及运筹规划等行为的软件,可通过使用计算机,进行特定数学计算或者数学表述来实现功能。数学软件从功能上分类可以分为通用数学软件包和专业数学软件包,通用数学包功能比较完备,包括各种数学、数值计算、丰富的数学函数、特殊函数、绘图函数、用户图形界面交互功能,与其他软件和语言的接口及庞大的外挂函数库机制(工具箱)。常见的通用数学软件包包括Matlab、Mathematica和Maple,其中Matlab以数值计算较为常见,而Mathematica和Maple以符号运算、公式推导较为普遍。专用数学包包括:绘图 软 件 类 (MathCAD、Tecplot、IDL、Surfer、Origin、SmartDraw、DSP2000); 数 值 计 算 类(Matcom、IDL、DataFit、S-Spline、Lindo、Lingo、O-Matrix);有限元计算(ANSYS、MARC、PARSTRAN、FLUENT、FlexPDE);数理 统 计 类(SPSS、SAS、Splus、Statistica、Minitab);数 学公式排版类(MathType、Scientific Workplace)。上述分类比较笼统,很多软件的功能也有交叉,受经验和篇幅限制,不能逐一而论。
2 数学软件在辅助建模中的作用
在实际问题的建模中,由于实际问题的复杂性,直接运用数学方法和专业知识建立模型往往存在许多困难。其中一个重要的原因就是由于计算机技术和数据量获得的不断增加,许多大型和超大型的数据不断地涌现,而且所获得的各种数据往往包含许多冗余的信息和无关的信息,要透过纷繁复杂的数据本身洞察数据之间的关联和趋势,从而建立好的模型描述,仅仅掌握一些必需的统计分析知识是不够的,如果没有专业的数学软件的支持,就难以胜任。
比如,对于选拔队员问题,其目标是从20个队员中选拔18人参加比赛。通常的方法是采用层次分析法来求解,需要将问题分层次进行分析,构造层与层之间的比较矩阵与计算权重系数,计算较为复杂。如果采用聚类分析的思想,则很容易得出结果。基本思想是利用K-平均算法(K-Means Clustering)将选手集合划分为三个集合,然后根据每一组的重心(平均值的多维形式)视为划分的标准,将分别定义为优、良、差。如果差的人数超过2人,则继续对差的集合划分(根据需要化为2个或者3个集合),一直做下去,就可对所有成员作一个分类。结果如表1所示。
表1 第一次聚类的分组情况
根据每一组重心的差异,定义第3组为差,其成员为b,h,i,j,对该然后对于属于第3类集合的b,h,i,j继续做分类,结果如表2所示。
表2 第二次聚类的分组情况
根据每一组重心的差异,定义第3组为差,淘汰成员h;定义第1组为良,包括成员i,j,对行观察如表3所示。
表3 成员的情况
根据题目中对于指标的选择顺序,可知,应该淘汰成员i。由此结果可以知道:应该淘汰成员h,i,保留其他18名成员。结果与层次分析法相同。
在此建模过程中,不需要手动进行数据的标准化等处理,直接调用S-plus软件中的Statistics->Cluster Analysis->K-means过程,即可轻松实现上述过程。
这里只是利用数学软件建模的一个简单过程。事实上,数学软件的辅助建模功能是非常强大的。如利用MATLAB能够快速的对排队服务系统和随机存储系统进行模拟,并给出合理的结果分析;LINGO软件中集概念的正确使用,使得模型中各个变量之间的关系更加明确和清晰,并能帮助分析模型的可能错误之处;利用S-plus内置的数据可视化和统计方法,使得迅速洞察大量数据之间的关系成为可能。事实上,诸多数学软件有着强大而简单的数据存储、检索功能;并且提供强大的数据可视化和多媒体功能,使得问题变得更加直观,能更好地模拟;其智能化功能,更是随时提醒和帮助人们。
3 数学软件在求解模型中的作用
在数学模型建立之后,必须要求解模型,计算结果,并验证由模型得到的结果是否符合实际。在此过程中,往往需要大量的计算,不仅包括数值计算,还包括符号运算以及图形图像处理等。这些工作通过纸加笔的传统方法几乎无法完成,必须使用数学软件进行求解。而数学软件高速、高效的运算能力非常适合于数学建模中的大量的计算需要。这方面已有大量实例,如利用MATLAB求解和分析2019新型冠状病毒SEIR模型,使用MATLAB工具箱求解BP神经网络模型,利用Mathematica进行符号运算以及求解分离变量法,利用LINGO求解基于图论的自驾游路线设计等。这里,以S-plus进行曲线拟合为例说明。
曲线拟合的准则一般为最小二乘准则,多数数学软件能够很容易的实现。但是该准则受到异常点的影响,往往采用鲁棒的拟合方法,但实现起来较为困难。利用S-plus的绘图功能,能够快速地实现多种准则的曲线拟合。首先选中打开的数据,单击相应的工具栏按钮,即可轻松实现最小二乘线性拟合、最小截尾二乘线性拟合,Roubust MM拟合等多种拟合方式,并直接绘出图形,直观简单,还直接可以在图形界面下直接删除特定点做拟合。而对于一般情况下,没有足够信息来决定使用哪种参数方程,此时可以直接调用SPlus的非参数拟合,实现Kernel平滑,样条平滑、Loess平滑等,并可以通过鼠标及时调整带宽来观察平滑后的结果。
4 数学软件使用中应该注意的问题
数学软件的使用,首先要选择适合的软件。如此众多的优秀数学软件,不可能样样精通,只能根据每个软件的特点和适用的范围,有针对性地选择。对于绝大多数情况,应该首选通用的MATLAB,其强大的数值计算功能和诸多几近完美的工具箱,几乎能够适应建模中的所有问题,而且在同一个平台下,各个功能模块之间的通信非常方便。MATLAB中也可以使用符号计算。对于专业软件,优化类问题首先LINGO,其内置的建模语言能够轻易描述复杂的数学规划模型,甚至可以用来求解方程(组)、曲线拟合等;而对于近年的建模题目数据量较大的趋势,必须掌握一门统计软件,推荐使用S-Plus,该软件操作简单,可视化功能强大,兼容数据格式多,最新的统计方法均能及时体现到软件中,使得数据的处理得心应手。
其次,在软件的使用过程中必须要注意到软件毕竟是一个固定的程序,只要你能够按照软件的要求给出输入,无论选择的方法是否正确,也无论数据是否符合该算法的要求,都会得出结果,这就导致了很多论文中的错误结果。究其原因,这就造成很多人把数学软件当作一个黑箱,完全不关心求解的过程,不知道使用的条件和计算的原理,而只关心输入和输出,这就不可比避免的要出错。所以,在使用数学软件求解某个问题前,必须切实理解软件求解问题所采用的算法以及算法的基本思想的基础上,合理分析所得结果,才能避免盲目的套用软件。
最后,软件毕竟只是数学建模的辅助手段,数学建模还是应该将重点放在运用数学方法的创新上,避免形成对数学软件的依赖性。在建模过程中,不能遇到任何问题,都用软件求解,而数学软件所采用的算法未必就是求解该问题的最优的算法。长期完全依赖于数学软件,仅仅会机械的使用软件,必然导致思维的僵化,创新精神的丢失。现在甚至出现在论文中看不到创作者所建立的具体的数学模型以及求解模型的算法或者流程,而只有大段的程序代码。这是与数学建模的精神相违背的。
5 结语
数学软件是数学建模中必不可少的重要工具,在模型的建立和模型的求解中都发挥着重要的作用。只要注意数学软件所带来的负面影响,以严格谨慎的态度,合理的适度的使用数学软件,就一定能够最大限度地使数学软件服务于数学建模,在数模竞赛中收到良好的效果。