APP下载

编程实践融入线性代数教学的探索

2019-12-20朱佳俊李吉有张跃辉

实验室研究与探索 2019年11期
关键词:习题课编程矩阵

朱佳俊, 李吉有,张跃辉

(上海交通大学 数学科学学院,上海 200240)

0 引 言

线性代数是数学学科本科教学的重要基础课程之一,课程的基本内容是利用矩阵作为工具来研究向量空间及其线性变换[1]。线性代数具有高度的抽象性与广泛的应用性,是人类思维高度发展的象征。在当代社会的科技发展和工程实践中,线性代数被广泛应用于经济、通信、密码、图像、建筑等多个领域[2-5],是不可替代的数学工具,并且它也是学习其他代数学科的基础。因而,让广大学生理解并掌握线性代数的理论与思想方法具有重要意义。

当前世界范围内新一轮科技革命和产业变革正在加速进行,数学学科作为新工科发展的基础和支撑,在培养学生深厚的数学功底的同时,也应当加强学生们实践能力的培养,让学生不仅仅会求解数学问题,还能将所学得的数学知识快速地应用于工程实践中。

以“问题驱动”的模式将线性代数教学内容有机地结合起来,在教学过程中激发学生的学习兴趣和热情,培养学生学数学、用数学的能力。通过在课堂教学、习题课教学、课后作业等环节结合编程进行实践教学,在加强学生对课程内容掌握的同时提高学生解决实际问题的能力。在课程结束后通过调查问卷来对教学过程和效果进行反馈、分析,从而不断促进线性代数课程的教学改革。

1 线性代数教学中的问题

1.1 存在的问题

学生在学习线性代数课程时,遇到的最大困难是对抽象的概念难以理解掌握[1],这也是教好这门课程所面临的一个重要挑战。如何让学生弄懂线性变换的作用,了解什么是向量空间,理解矩阵乘法为什么要这样定义,这是授课教师需要仔细思考的问题。

目前,很多学生在学习这门课程时,经常会问学习线性代数有什么用?这个问题虽然功利,但是仅仅用培养逻辑思维能力和培养欣赏数学之美的能力作为答案,学生自然不甚满意。这时候适当的实际案例能够更好地激发学生的学习兴趣。

线性代数课程的教学内容较多,其中大部分内容又是学习其他数学课程的基础,教师必须花费足够的课时才能使学生理解、掌握这些内容。如何在有限的课时里讲好这门课就成了一个难题。习题课在课程的教学中实际上扮演着重要角色,它能解答同学学习过程中的疑难困惑,帮助同学们拾遗补缺,巩固学生们对所学知识的掌握程度,提升同学们对课程的学习效果。但是传统的习题课大多停留在助教抄写习题解答的阶段,对学生的实质帮助并不大。通过对习题课进行改革,在习题课中添加编程实践的环节,诸如求逆矩阵,特征值,标准型等的程序算法的实现步骤,不仅能够加深同学们对其中计算过程的理解,还能够大幅度提高同学们对线性代数理论的学习兴趣。

1.2 研究现状

为了提高线性代数课程的教学效果,很多学者已经进行了不断的尝试和研究。文献[6-9]中研究了Matlab软件在线性代数教学中的应用;文献[10-11]中从教学内容、教学方式和考核环节对线性代数教学改革进行了探索;邓勇等[12]探讨了“数学证明”对学习理解的促进作用;王利东等[13]探讨了从应用实例出发的课程教学模式;郝志峰[14]探讨了在课程教学中融入数学文化的教学模式;朱琳等[15]对国外的教学设计与实践成果进行了总结分析;师钦贤[16]研究了在课程中开展“问题驱动式”的教学设计问题。

2 教学设计

2.1 教学环节

在教学过程中,同学们在理解线性代数的概念时经常会遇到困难。主要的障碍来自于这些概念过于抽象的特性,而将抽象的概念讲明白、讲透彻就是对老师们教学能力的要求。

回顾人们认识、学习的过程,可以发现人们通常是通过具体的实例来完成对抽象概念理解的。比如认识树这个概念,当然会有科学上的定义,但是在实际生活中,通过某一棵或者几棵真实的树的实例来学习往往会有更好的学习效果。在数学概念的学习上也概莫如是。

线性变换是线性代数中的一个基本而重要的教学内容,其数学的定义十分明确:设U与V是两个线性空间,U到V的一个映射σ如果满足可加性条件与齐次性条件,则称σ是U到V的线性变换[17]。抽象的定义确实具有很强的概括性,但是学生看到这样的定义很难产生直观的理解。这时候结合编程的展示,通过一些具体的实例就可以让学生更快地明白什么是线性变换,它有什么作用,进而快速掌握这一概念。

图1 线性变换的作用演示

通过具体的实例演示,先让学生有了感性的认识,再学习数学的抽象概念,帮助他们理解、掌握抽象的概念,从而取得更好的教学效果。

大部分学生在学习过程中希望知道高度抽象的线性代数理论到底有什么用。在教学设计中,可以对部分教学内容采用“问题驱动”式来进行。例如在对矩阵分解这一核心内容进行讲解时,其中的奇异值分解(SVD)就有着“数据压缩”这一重要的应用。

奇异值分解是将任意的m×n阶矩阵A分解成为两个酉矩阵与对角阵的乘积,即A=UDV*。其中U是m阶酉矩阵,V是n阶酉矩阵,D是m×n阶对角阵,D=diag(σ1,σ2,…,σr,0,…,0)m×n,而σ1,σ2,…,σr,0,…,0(共n个)则称为A的奇异值。

(1)

假定取前100个较大的奇异值,即r=100,则此时需要传输的数据为100+100×2 560+100×1 920=448 100个数据,数据压缩率为9.12%。

这是奇异值分解的简单应用,但是通过这样以“问题驱动”的教学方式,以编程为展示手段,既能很好地达到相关内容的教学目标,同时又能激发起学生们学习的兴趣,并进一步培养学生应用数学知识,解决实际问题的能力,拓宽他们的视野,突破知识的局限。

2.2 习题课环节

在线性代数的教学中,习题课也起着查漏补缺,巩固学习效果,拓宽学生视野的作用,它是课程教学的有益补充。但是传统的习题课大多停留在助教抄写习题解答的阶段,对学生的实质帮助并不大。通过对习题课的改革,来探求提高学生学习效果的途径。

如今,实际生活中各种计算问题已经基本由计算机来具体实现了,其高效的计算能力远远超过人们的手工计算。但是学生在学习课程时,仍然必须把具体的计算方式熟练掌握,这不仅是课程的要求,同时也是计算能力的锻炼,因而必要的练习不能减少或省略。于是考虑利用习题课的机会来使学生熟悉、掌握具体的实践应用。

现有的很多软件已经能够直接进行矩阵的各种变换以及求解,往往只需要一两个命令就能实现,但是这些命令具体是怎么实现的,学生并不了解。通过在习题课上讲解与学生自身实践相结合,以诸如求转置矩阵、逆矩阵、矩阵乘积、特征值、特征向量以及各种矩阵分解等问题为实例,具体实现这些函数的功能。学生可以验证其在解答课后练习时用到的具体计算步骤在函数算法实现过程中的作用。并且在具体调试过程中,也能让学生注意到容易被忽略的条件,例如在求逆矩阵时需要先判断行列式是否为零等。表1展示了线性代数课程内容与编程相结合的练习题,考虑到问题的难易程度,分为独立完成题和分组完成题。

表1 习题课练习题

在学生的动手实践中培养学生解决实际问题的能力,使其摆脱数学就是在纸上不停演算证明的枯燥感,让他们能熟练掌握解决实际工程问题的数学工具,并且进一步巩固他们对于具体算法的掌握能力。

3 教学效果分析

通过对所教授的学生以问卷形式的方式进行调研,了解具体教学成效。参与对象为本校数学科学学院大一学生,分为两个教学班,共计100人。

3.1 教学环节调研

针对教学环节,就学生每周课前预习时间、完成作业时间、课后复习时间、上课内容理解比例这些问题作了调查,统计结果见表2。

由表2可以看出学生们课前预习的习惯并不好,他们在完成作业和课后复习上花费的时间较多,在上课内容的理解上同学们反馈一般,这与他们之前的预习时间少有较大关联,而这也直接导致了他们课后需要花费更多的时间来加深对课程内容的理解和掌握。

3.2 习题课环节调研

针对习题课环节,就习题课对课程的帮助、学生对编程习题指导的需求、编程语言的选择这些问题作了调查,统计结果见表3。

表2 教学环节调查统计表

表3 习题课环节调查统计表

注:编程语言选择上有多选情况

由表3可见,同学们普遍还是认为新形式的习题课对课程内容有助益,但在实际上课过程中发现有较多同学没有编程基础,在实际操作中面临困难,故而他们对编程习题的指导需求强烈。而在编程的语言上Matlab和C语言是比较普遍的选择。

3.3 课程总体效果

针对课程的总体教学效果,调研了学生们的感兴趣比例,统计结果见表4。

表4 课程兴趣程度调查统计表

由表4可以看出本课程还是能激发大部分学生的学习兴趣的,作为基础性的课程其教学的目标除了给学生打下扎实的基础外,激发起学生们对数学的热情,引导他们学会他们欣赏数学之美,也是衡量一门数学课程是否合格的标准之一。

4 结 语

线性代数作为数学学科本科教学的重要基础课程之一,其在培养学生逻辑思维能力和夯实数学基础方面有着重要的作用。通过在教学环节引入编程的实践应用,从学生对概念的认知、知识的获取的过程入手,对教学进行合理设计,辅以相应的习题课环节,加深了学生对抽象概念的理解和对具体计算过程的掌握,激发学生学习兴趣的同时培养他们将所学知识应用于解决实际问题的能力。寓教于乐,寓学于用,以期为培养出具有扎实数学功底,而又能解决实践问题的复合型人才奠定坚实基础。

猜你喜欢

习题课编程矩阵
编程,是一种态度
元征X-431实测:奔驰发动机编程
实现课堂高效的初中化学习题课教学策略
编程小能手
纺织机上诞生的编程
差错是习题课的有效资源
初等行变换与初等列变换并用求逆矩阵
矩阵
矩阵
矩阵