数学建模竞赛与“数值分析”教学融合

2 数学建模竞赛与“数值分析”教学融合

要以数学建模竞赛为契机,针对“数值分析”的教学现状,在计算方法课程教学中进行如下四个方面的课程改革和探索。

第一,充分利用数学建模竞赛中的案例,引入模型求解所需的数值算法。在数学建模竞赛中,其中一个重要的环节就是选择合适的算法求解模型,大量的模型求解中涉及的算法是数值算法。例如,2018年建模竞赛中关于防火服的设计,其最终模型是一组热传导方程,需要用使用偏微分方程数值解法求解,其中涉及有限元方法、三对角方程组追赶法、三次样条插值等方法,这些方法是数值分析课程重点讲解的内容。在以往的教学中,教师教学时苦于没有合理的模型,通常是根据课本上给出的几个方程作为例题。这种例题设计非常完美,求解中几乎不会遇到稳定性、收敛性等问题,学生不明白这样的例子在何处可以遇到,因而也就失去了对真实世界中数学问题的兴趣。因此,在教学中引入建模竞赛试题,让算法不再是凭空设计,而是为解决实际问题而设计,极大地丰富了教学的素材。

第二,利用建模竞赛中涉及的新算法,适当拓展课程的内容。从近年来的数学建模竞赛试题中我们可以看出,虽然模型思想非常简单,但它却能以数据驱动建立模型,这种模型的难点是大量处理和分析、训练数据。例如,2012年的葡萄酒评价等试题,更多是统计建模,涉及层次分析等方法。这些方法应用非常广泛,不仅仅在建模竞赛中,而且在实际应用中也常有出现,但是在“数值分析”课程中却鲜有介绍。为此,结合建模竞赛试题介绍一些新算法是十分必要的。此外,还有一些算法是“数值分析”课程中重点向学生介绍的,如非线性方程求根的各类方法,但由于实现的难度、稳定性和计算时长的限制,难以针对建模竞赛的问题进行应用。而近些年来发展的人工智能算法,如粒子群算法、差分进化算法、蚁群算法、模拟退火算法等却能在有限时间内很好地解决这类问题。结合建模中使用到的这些算法,拓展数值分析课堂教学内容是十分必要的。这可以让学生在现有课程的基础上,掌握最新的研究动态,有助于他们开阔视野,今后继续深造。

第三,以数学建模竞赛为引导,开展高级程序语言编程训练。在数值分析课程中,算法描述通常用伪代码给出,要求学生运用相应的程序语言编程实现,以C、FORTRAN语言等编写而成。这些程序语言语法严格,不同平台的编译器及数据库要求均不一致,编译运行困难,而且实现可视化效果较为复杂,难以快速呈现不同算法之间的直观比较,很多学生难以迅速掌握编译和可视化,逐渐失去了学习兴趣。在以理解算法为核心的思想指导下,合理使用数学软件具有更重要的意义。尤其是以MATLAB为代表的数学软件,编译简单,在可视化效果方面具有明显的优势。在数学建模竞赛中,学生大量使用MATLAB、SPSS、Python等语言或软件的经验,可以快速移植到数值分析的实践中,在方便学生使用的同时,通过可视化分析,学生能更加直观地了解不同算法之间的差异,提高编程的能力,并在此基础上更加深入地理解算法。

第四,以数学建模竞赛论文为标准,强化数值分析课程中实验报告撰写和学术写作训练。目前的数值分析教学过程更像经典数学课的教学,以教师为中心,教师讲授课程内容,重视演绎推导,以证明计算为主,课后布置练习让学生巩固知识点。但事实上,数值分析中算法的应用场景仍然是实际模型,面对的是大型和复杂的综合问题,最终提供的是整套的解决方案,难以通过几道练习题模拟出来。而数学建模竞赛的论文则呈现了分析、解决问题和模型评价的完整过程,对数值分析习题,尤其是实验题,具有很好的启发作用。要仿照建模竞赛论文格式,设置数值分析实验题报告,每一章结束后,让每个小组的学生完整做完一道练习题,详细分析算法,实现程序,评价算法,最终出具实验报告。多年的教学实践表明,这样的教学成效非常好,学生做实验更加认真,在此后的大学生创新实验与本科毕业论文写作中形成了良好的习惯,更容易完成符合学术规范的论文。