闫仕宇 饶婕 蒋辉 李萌 阳小华
摘 要: 数值计算方法是一门将数学知识和计算机编程技术相结合的课程,针对工程专业学生学习这门课程存在的困难,阐述了在工程专业开设数值计算方法课程的必要性。结合工程实践教学特点,优化教学模式和方法,提升工程专业学生计算思维能力,使得教学效果更好。
关键词: 工程专业; 数值计算; 课程建设; 计算思维
中图分类号:G642.3 文献标志码:A 文章编号:1006-8228(2015)01-42-03
Exploration and thinking of course construction on numerical computation method
Yan Shiyu, Rao Jie, Jiang Hui, Li Meng, Yang Xiaohua
(School of Computer Science and Technology, University of South China, Hengyang, Hunan 421001, China)
Abstract: The mathematics are combined with the computer programming capacity in the course of numerical computation method. Since the engineering students have found it difficult to learn this course, the necessity of course setting on numerical computation method in engineering is expounded in this paper. According to the characteristics of engineering practical teaching, the teaching mode and method are optimized to promote computational thinking of engineering majors to achieve a better teaching result.
Key words: engineering; numerical computation; course construction; computational thinking
0 引言
随着电子计算机的迅速发展、普及以及新型数值计算软件不断开发出来,数值计算方法对自然科学和工程技术科学的影响越来越大。现在,无论是在高科技领域还是在一些传统学科领域,数值计算均是不可缺少的方法,它已成为科学工作者和工程技术人员应当掌握的知识和工具[1]。工程专业学生在处理实际工程模型时,会遇到各种数值计算问题。学好“数值计算方法”这门课程,有助于提升工程专业学生计算思维的能力。
关于计算思维的科学定位,自然科学领域公认的三大科学方法:理论方法、实验方法与计算方法[2]。国防科技大学人文学院朱亚宗教授从科技史与科技哲学的视野出发,并结合人类的科技创新实践活动来考虑,提出了将理论思维、实验思维和计算思维并列为三大科学思维[3]。数值计算方法与其他基础数学课程又有着本质上的区别,它不仅研究自身的理论,而且更多地与实际问题相结合,是数值计算方法与工程技术实践紧密结合的一门课程。计算方法的目的是对数学问题建立计算机能够执行的解题方案,并从理论上加以验证其科学性和有效性。在解决工程实际问题时,常常依据传统数学理论,将其中的数学问题求解归结为利用数值方法来解决,并借助于计算机得以充分地实现。其中科学计算软件已经在许多工程领域得到应用。
掌握计算方法的基本理论及其应用,对工科大学生从事专业研究和提升计算思维能力具有重要意义。
1 工科数值计算方法课程教学缺陷
目前全国高校在软件工程专业本科学生中开设数值计算方法课并不多,即使有的学校开设了这门课程,其教学也是像数学专业一样,强调理论,没有结合软件工程思想有针对性和选择性地教授这门课程。工科学生往往并不具备很扎实的数学理论基础,在学习和理解数值计算方法中泛函、插值等相关知识时会缺乏兴趣。而且,数值计算方法这门课程在工科教学环节中得不到应有的重视,很多人认为这是数学专业的课程,软件工程学生重视工程实践就可以了,往往忽视了科学计算中非常重要的计算思维的能力的培养。该课程教学中普遍存在以下问题。第一,教学目标不明确;第二,教学内容不加甄别,教材的选择与学生的基础和接受能力脱节;第三,教师采用的教学方法缺乏灵活性,传统重理论的教学方式不能适合当代大学生课程教学,实践教学环节缺乏,最终达不到教学目标,还导致了工科学生对这门课程学习兴趣不浓。
2 数值计算方法课程建设的对策
针对以上问题,我们在这门课程的实际教学中,首先改变对课程的认识。数值计算方法是以各类数学问题的数值解法为研究对象,是理论与实践相结合的一门学科。它不同于纯数学只研究数学理论本身。通过方法的推导和描述,以及整个求解过程的分析,为数学问题依靠计算机提供实际可行的,理论可靠的,计算复杂性小的各种数值算法。为了使学生能够更好地掌握计算方法课程的基本思想、基本原理和方法,除了必须具备数学学科的基本知识外,还要摆脱这些数学学科思维模式的束缚,转而过渡到数值计算思维[4]。
另外,理论与算法实现两者相辅相成。软件工程学生编程能力强,但是数学理论偏弱,结合具体算法的具体应用和实例分析,通过上机实验来具体应用其所建立的算法,并验证理论结果,反过来理解数学理论,并且举一反三。
2.1 设置合理的教学目标
设置教学目标应跟上软件学科的发展,根据实际的教学效果做适当的调整,最终设置合理的教学目标。我学院软件工程系教研室针对卓越软件工程师班的本科学生,实行“3+0.5+0.5”的培养模式,学生在完成大学三年的基础和专业学习后,在大四学期开设了四个模块:群体软件工程、信息系统、核电软件、软件测试。学生可以根据自己喜好选择方向。在核电软件模块中开设了数值计算方法课程。近年来核电国产化的需求日益强烈,而核电软件的开发涉及科学计算问题,数值计算方法这门课程是这个方向的核心课程。结合行业特点和工科学生的数学背景知识,这门课程主要是培养学生对数值计算方法在实际工程背景中应用的理解,以具体的工程实践模型为背景,在解决实际问题中涉及的数值计算方法,从算法到编程、实现结果。从工程角度提升对数学理论知识的理解。
2.2 甄选教学内容
在工科专业课程课时分配上,计算方法课程学时很有限。在这有限的学时里,如何让学生系统地掌握基本方法和基本原理值得深入探讨。根据工科学生的数学基础,结合数值计算知识单元,以软件工程卓越班数值计算课程为例,采用Bloom分类法说明学生对知识点应掌握的程度,具体如下:
了解 能记住学习过的内容;
理解 能领会课程内容的含义,掌握知识的内涵;
应用 能在新的具体情况下应用所学知识解决问题。
同时,还应说明各个知识点的重要程度,具体如下:
核心 该知识点是核心知识单元的一部分;
推荐 该知识点不是核心知识单元的一部分,但应包含在必修课程中;
可选 该知识点属于选修知识单元。
有关教学大纲和各个知识点的重要程度见表1、表2。
2.3 创新教学方法和手段
这门课程数值方法的理论推导建立在很强的数值基础上,工科学生一方面对书本知识很难吃透,另一方面由于工科学生缺乏严密的数学逻辑思维的训练,心理上有种“谈数学而色变”的恐惧心理,因此也影响了课堂教学的效果。如果采用传统的数学理论讲解教学方式,很难调动学生的学习兴趣。因此,创新教学方法和手段很有必要。
表1 数值计算方法课程教学大纲
[主题\&主要内容\&数值计算中的误差分析\&1、误差的来源与分类
2、误差与有效数字
3、数值计算中的误差估计
4、数值方法的稳定性与算法设计原则\&线性方程组的数值解法\&1、直接法与三角形方程组的求解
2、Guass列主元消去法
3、Guass全主元消去法
4、Guass选列主元消去法
5、平方根法\&插值法与最小二乘法\&1、拉格朗日(Lagrange)插值
2、插值多项式中的误差(插值余项,高次插值多项式的问题)
3、数据拟合的最小二乘法\&数值积分和微分\&1、Newton-Cotes公式
1.1 插值型求积公式及Cotes系数
1.2 低阶Newton-Cotes公式的余项目
1.3 Newton-Cotes公式的稳定性
2、复合求积法
2.1 复合求积公式
2.2 复合求积公式的余项及收敛阶
2.3 步长的自动选择
2.4 复合Simpson求积的算法设计\&常微分方法的数值解法\&1、欧拉(Euler)方法
2、龙格-库塔(Runge-Kutta)方法\&]
表2 数值计算方法领域中的知识点表
[知识点\&掌握程度\&重要程度\&数值计算中的误差分析\&应用\&核心\&直接法与三角形方程组的求解\&理解\&核心\&Guass消去法\&应用\&核心\&平方根法\&应用\&可选\&插值法与最小二乘法\&应用\&核心\&Newton-Cotes公式-插值型求积公式及Cotes系数\&应用\&核心\&低阶Newton-Cotes公式的余项目\&应用\&核心\&Newton-Cotes公式的稳定性\&应用\&核心\&复合求积法--复合求积公式\&应用\&核心\&复合求积公式的余项及收敛阶\&应用\&核心\&步长的自动选择-复合Simpson求积的算法设计\&应用\&核心\&欧拉(Euler)方法\&应用\&核心\&龙格-库塔(Runge-Kutta)方法\&应用\&可选\&]
2.3.1 借助实际工程数学模型引入数值计算方法
从实际问题中抽象出来的数学模型,数值计算方法为这些数学模型的解决提供一些基本的算法。比如核电软件中,中子通量的计算最后可以抽象出一个扩散方程,那么通过对实际应用背景的描述,不仅可以激发学生的学习欲望,提供建立数值方法的实际应用源泉,也体现出数值方法的价值和意义,使我们的数学教学不再是无源之水,无本之木,不再显得那么空洞。有了扩散方程这个模型后,进一步就是离散方程。为什么要离散方程,以实例启示学生为什么建立数值方法,应该如何引进数值方法。建立一种数值方法后,哪些问题是值得我们研究的。例如在学习数值积分方法的时候,可以看到基于复化梯形公式的求积方法比牛顿求积公式精度更高,学生从计算实际结果中可以感觉到数学计算方法的神奇魅力。这样的启发式加互动式教学,对学生深入掌握样条理论起到了非常好的作用。
2.3.2 理论与算法实现相结合
从计算方法数学理论角度来理解什么是数值收敛,什么是数值稳定,以及什么情况下可以用高斯消元法来求解线性方程组,这些对于工程出身的学生来说是困难的。但数值计算方法数值稳定、数值收敛的概念是相当重要的。如何让学生轻松理解这些生涩难懂的概念,那么最简单的一个办法就是找一个数值算例,用计算机语言来实现。比如求解一个四阶的代数方程,用不同的求解方法来验证数值解的精确性,从结果反推出为什么有的方法数值解是收敛的,而有的方法则是不收敛的。从理论上去找原因。这样就加深了对理论的理解,进而提升学生的理论功底。
2.3.3 设计一个完整案例,让学生体验数值计算方法的美
数值计算方法的知识点很多,每个知识点都可以通过设计算法来实现。但是这些零散的知识点还不足以让学生体味到数值计算方法的力量和美,为此我们设计一个难度适中的案例,让学生从工程实践背景开始,提出模型,离散模型,分析方程特点,提出数值求解方法,设计算法,编程实现,分析数值结果,得出理论收敛结果。这个过程能让学生体会到数值计算方法的应用,在工程实践中的力量是很强大的,同时也会感叹数值结果的美。这个过程使得学生有了不同于传统的软件工程思维,提升了其计算思维能力。
用软件工程卓越班学生完成的一个简单的数值计算为例,编程分别通过一次插值和二次插值求f(sin500)的近似值及其误差。本次实验所用工具为Visual Studio 2012,使用的语言为C#,学生利用软件工程思想面向对象设计来做数值计算程序设计,采用界面直观展示不同结果,使学生更进一步体验了数值计算方法的美。
一次插值与二次插值比较,同时与已知电脑中的计算器计算结果进行比较,学生会自然发现二次插值的计算结果更接近真实值,误差比一次插值小。从而加深对误差的理解。
3 总结经验,创精品课程
经过教学效果和社会需求分析判断,达到教学目标。在这个过程中需要总结经验,为创精品课程做准备。在实践教学中,做到“跟上时代”与“注重基础”相辅相成,才能使这门课程兼具了纵向与横向的深度。学生能够在这门课程受益,学到知识的同时,也学会了一种新的思维方法,跳出狭窄的视野,在更广阔的范围内思考问题,扩展思维并提高解决问题的能力,同时也为自己树立起信心。
实践经验还告诉我们,创“数值计算方法”在软件工程领域的精品课程呼唤双师型教育。也就是说,作为教师个体,既需要有工程背景和工程经历,又需要有学术水平;作为师资队伍,既要有科学型教师,又要有工程型教师。这样才能培养出既有理论功底和专业基础,又有工程实践能力的软件工程人才。可以通过校企联合办学,引进兼职教师,加强教师培训,完善评价体系等措施,逐步建立起这样一支双师型的师资队伍。
参考文献:
[1] 傅凯新,黄云清,舒适.数值计算方法[M].湖南科学技术出版社,2002.
[2] 石钟慈.第三种科学方法-计算机时代的科学计算[M].清华大学出版
社,2000.
[3] 朱亚宗.论计算思维—计算思维的科学定位、基本原理及创新路径[J].
计算机科学,2009.36(4).
[4] 陈延梅,张池平,李道华.大学工科数学计算方法教学之探讨[J].大学
数学,2005.21(2).