一、引言
数值计算方法又称数值分析,是研究适合计算机求解的各种数学问题的近似方法及其理论。它的内容包括函数逼近、数值微分与积分、非线性方程(组)的数值解、数值代数、常微分与偏微分方程数值解等。这门课程起着承上启下的作用,承上是使线性代数、高等数学中的原理得以应用,方法得以实现,启下是为后续课程中数学问题的建模和求解提供方法,是高等理工科院校的重要基础课程。如今,数值计算、理论研究及物理实验并列成为当今世界科学活动的三种主要方式。为众多的科学与工程问题提供计算方法,提高计算的可靠性、有效性和精确性,是《数值计算方法》这门课程研究的主要内容。在长期的教学实践中体会到在《数值计算方法》课程中做好理论内容的传授和学生实践能力的培养这两个环节非常重要。如何合理的利用计算机软件进行有效地教与学是值得探讨的一个课题。本文以具体教学为例,介绍了MATLAB软件在提高《数值计算方法》课堂教学质量中的具体使用。
二、MATLAB软件引入的必要性
MATLAB是美国MathWorks公司自上世纪80年代中期推出的数学软件,其优秀的数值计算能力和卓越的数据可视化能力使其很快在数学软件中脱颖而出。在欧美等高校,MATLAB已经成为线性代数、自动控制理论、数理统计、数值计算方法、动态系统仿真等高级课程的基本教学工具。以前的《数值计算方法》课程常采用FORTRAN或者C语言进行教学和实验,要求学生既要对算法有充分的了解,又要熟练掌握这两种语言的语法和编程技巧,导致学生和教师将大量的时间和精力都花在烦琐的程序编写以及对各种结果的绘图上,学习效果往往令人不满意。正如FORTRAN和C等高级语使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称为第四代计算机语言的MATLAB,以其简洁的、更符合人们思维习惯的代码以及强大的绘图能力备受青睐。《数值计算方法》课程内容多、课时少,如果运用传统教学方法,有些内容得不到细致地讲解,易使学生产生厌学情绪,收不到良好的教学效果。利用MATLAB对数值计算方法中涉及到的算法进行设计,不仅高效、准确,而且可以直观地看出结果,便于对算法进行整体的描述与分析。MATLAB可将教学中复杂的概念以及难以用文字表达清楚的内容,用图形、动画等形式体现出来。这样,不仅可以活跃课堂气氛,增强学生的学习兴趣,而且可以节约讲解算法所需的时间,让学生在有限的时间内接受和掌握更多的知识。
三、MATLAB融入实践教学
《数值计算方法》课程内容涉及的范围广,公式推导和算法较多,问题的计算量大。在授课过程中,学生感到枯燥乏味,学习兴趣不高。结合教学实践,从以下具体实例说明MATLAB在提高课堂教学效果中的作用。
1.利用绘图功能,加强学生对方法的直观认识。多项式插值是数值计算方法的一个基本内容,为了循序渐进、从易到难,教材都是先讲解简单的一次、二次插值,然后再讲解高次插值。这样,学生就会顺理成章地认为在用多项式插值方法逼近一个函数时,使用的节点越多,插值的精度越高,但这是错误的,随着插值节点的增多,多项式次数的增加,插值函数在整个区间上不一定更加逼近给定的函数,“龙格”现象由此产生。如何生动的表述这种现象,只靠理论的公式推导显然不能打消学生的疑虑,MATLAB的强大绘图功能使得学生能直观地“看到”这种现象,更能加深对原理的理解。例如:考虑函数f(x)=■在区间[-1,1]的一个等距划分,则拉格朗日插值多项式为:Ln(x)=■■li(x)其中的li(x)是拉格朗日插值基函数。现在选择不断增大的分点数目n=3,4,…,12时,画出的原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图形见图1.
实现这一算例的MATLAB代码非常简单,教师只需要在备课时编写好程序,在课堂上讲解完原理后运行程序即可。图形可以在视觉上给学生冲击力,学生可以直观地看到插值多项式的图形与真实函数的图形之间的差距,会认识到并不是插值节点越多,插值函数越逼近原函数的事实。
2.利用已有库函数进行对比分析。许多实际问题常常归结为求解一个线性代数方程组的问题,例如在工程与材料中的弹性力学、电路分析、大地测量、热传导等。求解线性代数方程组的数值解法可分为直接法和迭代法。在讲解线性代数方程组的直接解法时,Doolittle分解是非常重要的内容。Doolittle分解就是把满足条件的矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积。这部分内容难度适中,学生在实验课上可以用自己熟悉的程序语言进行编程,而MATLAB处理这部分内容具有先天的优势,其内部配置了相关的函数库。学生可以把自己编程所得结果与MATLAB中的函数[L,U]=LU(X)所得结果进行比较,验证程序的正确性和执行的效率。
如果用MATLAB本身的函数直接执行Doolittle分解,则定义好矩阵A后,只需在命令窗口中输入[L,U]=lu(A)即可,输出结果与上面的结果相同。对于学生而言,如果针对同一问题的两种方式(自己编程实现和利用已有函数实现)的输出结果不同,则要修改自己编制的程序,进行自检,直至完善。这使得MATLAB成为了一名“老师”,学生可在MATLAB已有库函数的指导下,分析课堂上讲解过的算法,甚至可直接查看这些库函数的源代码,对比自己编写的代码,找出自身的不足,加强对数值算法的理解。
3.运用动态演示功能,使学习不再枯燥。数值计算方法中的方程求根讲述了多种方法,其中有几种是迭代方法。迭代方法的原理比较好懂,只是要达到一定的精度需要很大的计算量。在课堂上手算就有点力不从心了,而且学生也不愿看到老师在黑板上手算一步一步的迭代结果,那样显得非常枯燥。由于结果难以得到,学生往往怀疑迭代方法的实用性。使用MATLAB的动态演示功能不仅能很好地解决这一问题,而且还可以把复杂的迭代过程用动画的形式演示出来,计算过程可全部展示在屏幕上。学生可以看到迭代值是怎样逼近真值的,可以动态地演示近似解序列的推进过程,使学生更加直观地理解迭代法的收敛性与收敛速度问题。例如:用牛顿法求f(x)=x2-2x-1在区间[0,3]上的解。我们用动态的点来演示逼近的过程,只需要4步,方程就可以迭代到满足精度要求的解。学生可以看出点逼近真解的一个过程,从而形象地表述了迭代
的思想。又例如,在讲授正交多项式的内容时,为加深学生对该部分内容的理解和认识,可以在计算机上动态画出任意次数的切比雪夫多项式和勒让德多项式的图形,观察曲线的极值点和零点分布特征。这样将会极大激发学生的学习兴趣,学生通过亲身感受理解了深奥的理论知识,补充优化了课堂教学,真正实现了教与学的良性互动。
四、结语
借助于MATLAB的辅助教学,数值计算方法的教与学不再枯燥、烦琐。学生不仅在有限的时间里拓宽了知识面,而且掌握知识程度也有所加深。MATLAB可将教学中复杂的概念以及难以用文字表达清楚的内容,用图形、动画等形式体现出来。这样,不仅可以活跃课堂气氛,增强学生的学习兴趣,让学生认识到数学知识的实用性,而且可以节约讲解算法所需的时间,起到事半功倍的效果。
作者简介:王际朝(1979-),男,山东莘县人,中国石油大学(华东)理学院讲师。