宋岑
【摘要】随着全国大学生数学建模比赛的影响力越来越大,很多从未学习过编程的学生,甚至文科生也都在学习Matlab.这使得Matlab的学习与教学发生了新的变化.
【关键词】数学建模;编程;Matlab
全国大学生数学建模比赛吸引了越来越多的学生参赛,学生们都希望通过这个平台,为自己今后的发展添加一块有力的基石.为了满足学生们的需求,很多院校针对比赛开设了数学建模的相关课程,Matlab就是其中之一.在这个新背景下,Matlab的学习与教学正悄然发生着改变.
一、学习方面
(一)学习目的的变化
Matlab课程开设最初是因为工作岗位的需要.学生通过学习Matlab,可以更好地适应未来的工作岗位.但随着数学建模比赛的影响力越来越大,在比赛中获奖能成为找工作时的重要砝码,许多学生学习Matlab的目的就变成了参赛获奖,功利性较强.Matlab具有十分强大的绘图和计算功能,即使不再学习其他编程软件,也基本可以满足数学建模比赛的需要.于是在有限的精力下,许多学生会选择把Matlab作为自己的编程入门语言,而放弃学习以C语言为代表的其他传统编程语言.
为了明确的目标而学习,实际上最能激发学生的学习动力.在严峻的就业形势下,毕业生就业时的竞争力,更能直接地反映出一个高等院校的办学水平.所以,应该在教学时给予这些学生更多的支持和照顾.
(二)学习难度的变化
Matlab是基于C语言开发的,它的编程语言和C语言非常接近.但是C语言程序和Matlab程序之间的转化并不是简单的复制粘贴.同样的问题,Matlab可以利用自身的特点,写出思路完全不同的解答.
例如,用Matlab建立矩阵A=1[]2[]3[]45[]6[]7[]89[]10[]11[]1213[]14[]15[]16.
解1(C语言思想的程序)
k=1;
for m=1:1:4
for n=1:1:4
A(m,n)=k;k=k+1;
end
end
解2(Matlab思想的程序)
A=zeros(4,4);
k=1:1:16;
A(k)=k;
A=A′ ;
以上两种解答程序各有特点,都需要学生掌握.对于初次接触编程的学生来说,等于同时在学习C语言和Matlab.所以表面上是直接学习Matlab,实际上还是要先学C语言的思想.编程思想的建立需要一个积累过程,没有捷径可走.因此,直接学习Matlab的难度很大.
二、教学方面
(一)教学内容的变化
原本Matlab的开课时间较晚,学生都熟练地掌握了C语言.教学的重点主要在介绍软件的功能,程序设计等内容均为略讲.但现在开课时间被提前,学生编程基础差的特点,使得传统的教学内容已经不能满足需求了.
针对学生没有学过C语言的特点,扩充“Matlab程序设计”这一章的内容.原来本章只是简单介绍几个流程控制语句的范例,供学生参考使用.扩充后的本章与传统的C语言教学内容基本一致,但所有的程序范例都是在Matlab的环境下运行,编程思想更倾向于Matlab而非C语言.本章的作用是让学生们更快地掌握一定的编程思想,尽早跟上后续课程的进度.
针对学生学习负担重的特点,舍弃部分Matlab编程语句的讲授.例如,while语句和switch-case语句在数学建模的实际需求中大多可以被for语句和if替代.所以略去这些内容不讲,留给学有余力的学生课后自学.
(二)教学模式的变化
在学生掌握了Matlab的基础操作后,不再分章节地介绍Matlab的功能,而是带着学生们重做往年的数学建模真题,让学生在解题的过程中逐步学会使用比赛中需要的功能.Matlab的教学模式也由传统的讲授式变为任务驱动式.
以2013年全国大学生数学建模比赛专科组C题“古塔的变形”为例,题目附件中给出了对某古塔的4次观测数据,要求根据数据分析古塔的变形情况.Matlab在问题中承担着重要的数据预处理任务.首先,Excel格式的数据不能被Matlab 直接读取,需要将数据复制到记事本中,再通过Matlab读取.学生在这个过程中复习文件管理、工作地址管理等Matlab基础操作.然后,因提供的数据有部分缺失,要通过数据插值或数据拟合的方法将缺失数据补全.学生在这个过程中学习数据插值和数据拟合的一般方法,并体会这两种方法各自的优缺点.最后将所有数据整合,绘制古塔轮廓外貌.学生在这个过程中学习Matlab的各种绘图语句并了解它们的特点.
通过任务驱动式的教学模式,使得学生对Matlab的学习更加积极主动.针对数学建模比赛的需要调整教学内容,舍弃数学建模中用不到的内容,增加数学建模的针对性练习,让教与学的联系更加紧密,教学效果提升明显.
(三)老师的变化
数学建模的指导老师多为数学老师,他们了解数学建模,更能针对性地去指导学生学习Matlab.所以Matlab已由过去计算机老师授课,变成了现在数学老师在授课.老师的变化是教学中改变最大的一环.数学老师了解数学建模,讲授Matlab时有其自身优势,但同时也存在一些劣势.例如,编程思想讲解不到位,机房广播软件使用时机不合理等.所以,数学老师和计算机老师之间互相取长补短,才能让Matlab的教学更上一层楼.
数学建模让Matlab从自学为主的选修课变成了热门课程,如何学好Matlab,如何教好Matlab,还需要在实践中继续探索与研究.