1. 引言
《计算方法》也称为《数值计算方法》或《数值分析》,是一门研究求解数学问题数值近似解的专业基础课。作为一门数学课程,计算方法与其它基础数学课程有着本质上的区别,它不仅研究自身的理论,而且更多地与实际问题相结合,提供具有应用价值的理论成果。因此,不仅理科专业广泛开设《计算方法》课程,而且很多工科专业也开设该课程。
《计算方法》作为工科专业的一门专业基础课,在培养学生的抽象思维和解决实际问题能力方面具有举足轻重的作用 [1] [2] 。然而,一些高等院校的工科专业,该课程正面临着生死存亡的危机。随着新一轮课程体系改革,学科基础课程和专业课程的总学时大幅压缩。以我校的自动化专业为例,总学时原有1016学时,改革后仅剩600学时,减少了40%。在此严峻形势下,这门开设了三十多年的经典课程,已经站在悬崖边上。
关于这门课程是否应该取消,专家们争论激烈,各持一词。支持取消的专家认为《计算方法》课程内容已不适应时代发展需要,学生可以用计算机软件完成,随着总学时的大幅压缩,该课程没有继续开设的必要。持反对意见的专家认为,《计算方法》课程在工科课程体系和人才培养方面具有不可替代作用,建议保留该课程。
2. 课程源流
工科《计算方法》课程究竟该何去何从?这是每一位从事《计算方法》课程教学老师关心的问题。要搞清楚这个问题,首先回顾课程开设的缘由。
从20世纪80年代开始,大多数高等院校把计算方法作为必修课,经过几十年的建设和发展取得了一些令人瞩目的成绩。刚开始仅是数学系和计算机系开设该课程。随着一系列计算性的学科分支形成,计算能力越来越受到重视。为满足工程科学计算需求,很多工科专业陆续开设《计算方法》课程。以我校自动化专业为例,开设课程之初是因为当时计算机软件水平不高,编程语言是fortune,课程中大部分数值计算算法得动手编程才能实现。开设《计算方法》课程之初的主要作用是辅助程序设计,将算法用计算机工具实现。因此,以前课程侧重于算法流程的具体步骤和编程思路,培养目标是程序员。
随着计算机软件水平大幅提升,matlab软件将计算方法中经典、常用的数值计算算法封装成函数,可直接调用。学生只要搞清楚函数输入、输出参数的具体含义,调用对应函数即可轻松求解《计算方法》课程中的例题和课后习题。然而,将计算方法简单地看作是在做数学练习题的想法是很片面的。《计算方法》课程的理论与方法有广泛的工程背景,每一种方法都直接或间接与应用相关,这些方法所涉及的数学问题大多数是从工程应用中提出的。以导航工程为例,实验数据的处理涉及插值和拟合,传感器测试数据转化涉及数值积分,导航方程求解涉及非线性方程求根和kalman滤波等。通过课程系统教学让学生体会到,科学研究仅有纯粹的理论研究部分是不够的,完成理论分析后必须进行数值计算,这样才算是一个完整的研究过程。在航空航天、地质勘探、汽车制造、桥梁设计、天气预报等方面都可以找到计算方法的应用案例。如果仅仅从压缩课时的角度,大幅缩减这方面的教学训练甚至取消该课程,那么会给后续专业课教学带来诸多困难,影响学生知识体系的连续性,容易造成知识和能力的脱节等。因此,现在课程教学侧重于算法的选择、构造和性能分析,确保设计的算法能任意逼近并达到精度要求,对近似算法保证收敛性和数值稳定性,根据实际需求在解的精度、速度和稳定性之间取得最优,培养目标是工程师。
3. 必要性
将计算方法简单地看作是在做数学练习题的想法是很片面的。计算能力是计算工具和计算方法效率的乘积,提高计算方法效率与提高计算机硬件效率同样重要。随着数值计算方法在科学研究和工程技术中的广泛应用,计算方法的重要性变得日益明显。为了充分阐述工科专业继续开设《计算方法》课程的必要性,笔者结合近年《计算方法》课程的教学经验,从课程体系、人才培养和专业素养三个方面说明该课程不可替代的作用。
3.1. 课程体系:联系连续数学模型与离散计算机实现的桥梁
从课程体系的角度看,本科课程分为公共基础、学科基础和专业课程三类。公共基础课程中的数学模型通常是连续形式的,通过公式推导获得解析解。而专业课程中的数学模型通常是非线性方程组,难以获得解析解,只能通过计算机运算获得数值近似解。计算机求解需要将数学模型由连续形式转化为离散形式,在转化过程中由于采样等原因不可避免会引入误差,因此在连续条件下成立的结论,在离散条件下不一定成立。《计算方法》课程可以看作是联系连续数学模型和离散计算机实现的桥梁。
如果取消该课程,在如何使用计算机求解数学问题将形成断层,给专业课程教学带来诸多困难。专业课程老师将不得不花费宝贵的课时讲述算法如何由计算机求解实现,劳神费力不说,由于缺乏系统理论和方法阐述,实际效果并不理想。多年指导本科毕业设计发现,学生面对试验实测数据,不知道如何处理或者手段单一,不会根据实际需求选择、构造数值计算方法。面对无法编程实现的问题,往往归结于编程基础差。其实问题出在数学模型不能有效转化成数值计算模型。面对计算出错的状况,往往束手无策,不会对算法进行性能分析以及改善算法。这些问题无论是公共基础课,还是专业课都很少涉及,而《计算方法》课题恰好填补了这个空白,在整个课程体系中起到了承上启下的作用,为后续专业课程学习做好了铺垫和支撑。
3.2. 人才培养:应用计算机解决本专业领域实际问题的能力
从人才培养的角度看,工科专业本科生的培养目标,除了要有实际工作能力和科学研究初步能力外,还要具备应用计算机知识技能解决本专业领域实际问题的能力。专业课及工程实际中提炼的数学模型,通常情况下没有解析解,尤其是规模大的问题,数学模型的求解需要使用计算机。而计算机无论如何先进,它所能执行的计算也不过是简单的算术运算和逻辑运算,要想使计算机能够解决工程计算问题,必须将数学模型数值化,也就是根据不同的数学问题,寻求不同的数值计算方法。数值计算方法只能用算术运算和逻辑运算表达,否则计算机将无法计算。计算方法课程是专门讲述数值计算方法构造、性能分析的专业基础课。如何将连续数学模型在计算机上离散实现,如何表示近似解的误差、控制误差的收敛和稳定,都是《计算方法》课程的核心内容 [3] [4] 。通过理论学习和上机实践,《计算方法》课程能够培养学生应用计算机工具解决本专业领域实际问题的能力。这正是其他课程缺乏的,该课程在人才培养目标上起到了不可或缺的作用。
3.3. 专业素养:工程计算思想的培养
从专业素养的角度看,工科专业与理科专业的最大区别是工程计算思想 [5] 。工程计算与理论计算最明显、直观的区别是误差。不同于理论计算的解析解,工程计算得到的是近似解,包含误差。误差的形式、性能分析以及控制是计算方法的重点。《计算方法》课程的理论与方法有广泛的工程背景,每一种方法都直接或间接与应用相关,这些方法所涉及的数学问题大多数是从工程应用中提出的。以导航工程为例,实验数据的处理涉及插值和拟合,传感器测试数据转换涉及数值积分,导航方程求解涉及非线性方程求根和kalman滤波等。课程中各种算法的构造过程都体现了如何从实际问题的数学模型出发,用化繁为简、以直代曲、化连续为离散、迭代、逼近等来解决具体问题的思维过程,这些都是培养学生的数学思维、工程应用能力和工程计算素质的范例 [6] 。
数值计算算法的衡量指标是精度、计算量和存储量,这三者通常是矛盾的,需要根据实际情况进行取舍。这种“妥协”的精神也是解决实际问题需要具备的要素,是工程计算思想的体现。我国著名的计算科学家石钟慈院士指出:“计算不仅仅只是作为验证理论模型的正确手段,大量的实例表明它已是重大科学发展的一种重要手段”,“科学计算与实验,理论三足鼎立,相辅相成,成为当今科学发现的三大方法”。
4. 结束语
综上所述,《计算方法》课程在课程体系、人才培养和专业素养方面具有独一无二的作用,在数学思维尤其是工程计算思想的培养上,具有极其重要的地位。作为一门纯数学与科学工程实际以及计算机相结合形成的数学分支,计算方法的理论性和实用性都很强,并随着计算机技术发展而发展。因此,在新形势下《计算方法》课程在工科课程体系中将继续发挥其不可替代的作用。
面临新一轮工科课程体系改革,在总学时大幅压缩的背景下,建议结合工科专业特点,从专业素养培养的角度对课程内容、授课方式以及考核方式等进行改革,以适应新形势发展趋势。