浅谈对《MATLAB程序设计》课程基础教学内容的思考
2019-06-17李豪
李豪
摘要:本文简要介绍了MATLAB软件和《MATLAB程序设计》课程,结合笔者的教学实践,对程序设计的重要性给出了自己的认识,最后从四个方面对《MATLAB程序设计》课程的基础教学内容进行了探讨,并且给出了自己提高学生程序设计的途径。
关键词:MATLAB软件;矩阵;画图;符号变量;程序设计
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2019)18-0264-03
一、对MATLAB软件及《MATLAB程序设计》课程的介绍
MATLAB是美国MathWorks公司开发的集数值计算、符號计算和可视化计算于一体的科学和工程计算大型综合型软件[1]。它具有出色的科学计算机数据处理能力,强大的图形处理功能和符号计算功能。
MATLAB是matrix(矩阵)和laboratory(实验室)两个单词缩写,故MATLAB处理的主要对象是矩阵。MATLAB几乎把所有的处理对象都当作矩阵。例如一个行向量或列向量可以看成一个1×n或n×1的矩阵;一个数可以看成1×1的矩阵。甚至一个字符串也可以看成一个矩阵,只不过这时矩阵的元素不再是数,而是字符。
MATLAB程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,三十几种工具包。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包[2]。
《MATLAB程序设计》是我校数学专业的专业选修课,非数学专业的公共选修课。课程的教学地点在机房,主要采取理论与上机相结合的授课方式。MATLAB内容之丰富,涉及专业之广,但由于受学生专业知识和学时的限制,我们主要侧重MATLAB基础内容的教授。
二、对数学软件重要性的强调
很多普通高校在开设MATLAB课程之前,已有对程序设计课程的开设,例如C语言。C语言之类课程的开设对于MATLAB课程的学习是有益的。笔者认为学了C语言之类的课程,就已经会进行初步的程序设计。但是在笔者的教学中,很多学生在学MATLAB时依然不知怎么设计程序去解决实际问题。归其原因,学生对于先前开设的程序设计课程的重要性没有足够的认识,导致程序设计基础不扎实。
对于上世纪80年代以前的理工科学生,尤其对于数学专业的学生做研究,笔和纸已经基本可以满足验算需求。但随着科学技术的发展和人们对于计算效率的追求,笔和纸早已不能满足人们的需求。例求如解线型方程组为例,很多时候我们所求解方程的未知数成千上万,乃至千万,这是笔和纸难以演算的,但是对于计算机却可以轻松完成。
所以数学软件是人们笔和纸的延伸,它可以更高效更准确地演算比较繁杂的问题。因此,对于理工科学生而言,熟练掌握一门数学软件的是非常重要而且是必要的,否则将会在以后工作学习中遭遇瓶颈。
三、对《MATLAB程序设计》教学的思考
鉴于学生专业知识和学时的限制以及我校的本科生程序设计之薄弱。笔者着重从以下四个基本模块去讲解MATLAB,并且对每个模块中的部分重难点给出了自己讲解思路。笔者认为学生如果能够熟练掌握这四个模块,那么根据自己的专业去学习更多的函数命令和工具箱将不再是件困难的事情。
模块3:符号变量。在笔者的《MATLAB程序设计》教学中,很多学生对符号变量感到很茫然,不知为何物。其实符号变量就是我们初中教学中提到的“代数”,其作用是用字母代替数。这样,我们的推导才具有一般性。
MATLAB有两种定义符号变量的命令:sym和syms。sym既可以定义符号变量又可以定义符号表达式,但是sym每次只能定义一个符号变量。syms每次可以定义多个符号变量,但是不能直接定义符号表达式。如果符号表达式比较复杂或冗长且涉及到多个符号变量,我们往往先用syms定义符号表达式中所有的符号变量,再定义符号表达式。
在MATLAB中需要先定义符号变量或者符号表达式,才能进行求积分、求极限、因式分解等运算。因此掌握符号变量能够很大程度上节约我们的演算推导时间。
模块4:程序设计。MATLAB需要建立m文件进行程序设计,其中m文件分为命令式m文件和函数式m文件。在命令式m文件进行编程然后在命令窗口中运行,与在命令窗口中直接运行命令式m文件中的程序是没有本质区别的。唯一的区别是命令窗口中的程序易于修改,可以反复运行。函数式m文件在命令窗口中运行,直接输出形式参数指定的变量,程序中的中间变量则随着程序运行的结束被释放掉。
程序设计具有比较强的逻辑性、严谨性、实践性和技巧性。因此,学习任何一门计算机语言只有反复的上机操作,才能不断提高。在笔者的MATLAB教学中,笔者通过下面途径提高学生的程序设计能力。
(1)熟练掌握MATLAB语法部分。计算机语言的语法学习是比较枯燥的,但是这也是掌握一门计算机语言的基础。不懂语法,便无从编程。所以这一块要下功夫,反复练习直到熟练掌握。
(2)提高学生程序设计的兴趣。兴趣是最好的老师。无论是在课堂上练习还是布置作业,笔者会尽可能选择一些比较富有趣味性的问题作为程序设计的题目。例如猜数游戏:首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won”,同时退出游戏。用户最多可以猜7次。
(3)理清思路。笔者在课堂上给出的问题,学生们一般知道解决的方法,但是不善于理清解决问题的思路。笔者会通过一两个问题,引导他们理清解决问题的步骤。我们以猜数游戏为例。
第1步:随机产生一个1~100之内的正整数,并赋值给变量。
第2步:我們需要输入一个数与a进行比较,将这个数赋值给b。
第3步:开始对a和b进行比较。如果a大于b,提示信息“Low”;如果a小于b,给出提示信息“High”;如果a等于b,给出提示信息“You Won”,且退出循环。
第4步:这个程序要求最多猜7次。所以我们需要循环第2~3步7次,并在循环结束后给出提示信息“程序结束”。
让学生学会理清解决问题的步骤,然后按步骤一步步地解决问题,最后就完成了程序设计。
四、结语
笔者认为《MATLAB程序设计》作为一门选修课,面对不同专业的学生,讲授不能过于肤浅而宽泛。通过少而精的讲解,不但让学生在课堂上感觉学有所“成”,而且对学生以后根据自己的需要自学MATLAB软件打下了牢固的基础。另外,通过笔者自身的科研经验,深深感受到掌握一门计算机程序设计语言的重要性,所以教师作为“过来人”,在课堂上要反复强调程序设计的重要性,让学生能够引起足够的重视,为以后的发展奠定基础。
参考文献:
[1]王波,王军.MATLAB课程的教学改革思考[J].中国电力教育,2012,(28):55-56.
[2]百度百科.MATLAB[EB/OL].https://baike.baidu.com/item/MATLAB/263035?fr=aladdin.
Abstrcat:This paper briefly introduces MATLAB software and MATLAB program design course.In combination with the author's teaching practice,it gives the author's understanding of the importance of program design.Finally,it discusses the basic teaching content of the course of MATLAB program design from four aspects,and gives the way to improve student program design.
Key words:MATLAB software;matrix;plotting;symbolic variable;the program design