APP下载

如何上好工科本科生数值分析

2020-02-25邓镇国

科教导刊·电子版 2020年36期
关键词:线性方程组计算方法插值

邓镇国

(广西大学 广西·南宁 530004)

0 引言

科学、技术、自然和社会中出现的大量数学问题由于无法通过解析方法得到准确解,只能寻求这些数学问题的近似解,因此借助计算机技术获取这些数学问题近似解的方法在实践中得到广泛应用和深入发展。这类方法通常称为数值计算方法,而数值分析正是这样一门介绍这类方法的课程。

如何上好工科本科生数值分析?首先,在第一堂课要跟学生讲清楚三个问题:为什么需要数值分析?什么是数值分析?如何应用数值分析?激发学生们对这门课程的学习热情。有了良好的开端,接下来要把学生们的这股学习热情引导到学习各种具体数值计算方法上面,引领学生重现这些方法的构造过程。通过这些过程,学生可以领悟到这些方法的构造思想和数学原理,从中获取重温经典的成就感。最后,作为一门实践类课程,光是理论学习是不够的,需要加强课外上机实验,更好地为课堂教学服务,提高课堂教学效率。

下面将通过说课的方式,讲述如何给工科学生上好数值分析第一堂课,如何讲授数值分析中的各种数值计算方法,如何加强课外数值实验。

1 如何给工科学生上好数值分析第一堂课

工科学生一般在大二第一学期或第二学期选修数值分析(或计算方法)这门课程,此时他们已经学完高等数学和线性代数,已经具备学习数值分析的数学基础。因此,数值分析第一堂课可以从学生熟悉的高等数学和线性代数无法求解或不好求解的一些简单问题导入为什么需要数值分析这一问题,然后通过数学软件(如MATLAB)向学生演示数值分析可以轻松地求解这些问题,进而激发学生学习数值分析的热情。

例如,在高等数学中,定积分的计算对工科学生来说,是个难点。学过微积分的同学都知道,利用微积分基本公式通过求被积函数的原函数计算定积分,比起通过定积分定义求一类特殊乘积和式的极限简单多了。但是在实际问题中,被积函数可能只满足可积条件但不存在原函数,或者原函数都很难得到,或者原函数的形式复杂,甚至不能用初等函数来表示,如

此外,在实际问题中,根本就没有被积函数的具体表达式,只有实验采集的数据表,这种情形下,高等数学书介绍的计算定积分的方法完全失效,只能求助数值计算方法。因此,可以先选择上面两个定积分以及一张用其中一个被积函数在积分区间[0,1]内一些离散点上取值构造的函数表作为应用引例导入为什么要数值分析,再用最简单的矩形公式通过数学软件(如MATLAB)演示数值计算方法是如何近似计算定积分的,激起学生学习数值分析的热情,为后面深入学习数值积分法埋下伏笔。

又如,在线性代数中,解线性方程组的方法主要有克拉默法则和初等变换法两种。根据克拉默法则,解n元线性方程组,需要计算n+1个n阶行列式,当n大于3时,手工计算量很大,一般线性代数考试都不会出这类计算题,除了有归纳性质的题目。初等变换法源于高斯消去法,虽然有了很大改进,但是手工计算也是不可取的。因此,可以通过数学软件(如MATLAB)演示高斯消去法是如何高效求解高阶线性方程组的,代替手工计算,摆脱重复繁重的计算工作,焕发学生学习数值分析的激情,为后面深入学习解线性方程组的直接法和迭代法埋下引子。

又如,学习高等数学中导数应用这章时,会学到用二分法和牛顿切线法计算方程的近似根,在那里使用手工计算。尽管这两种方法的原理和计算公式都很简单,但是为了得到比较精确的计算结果,往往要花费很多重复的劳动。因此,可以通过数学软件演示这两种数值计算方法是如何计算近似值的,令学生不仅可以温故知新,还可以看到手工计算与通过计算机计算在效率上的巨大差别,引起学生迫切了解计算机是如何做到的好奇心,产生学习数值分析的兴趣。

又如,学习高等数学中常微分方程时,对最简单的一阶微分方程y'=f(x,y),根据右端项函数f(x,y)分为可分离变量方程、齐次方程和线性方程三种类型,给出相应的积分解法。在实际问题中,右端项函数f(x,y)往往都不是这三种类型,此时积分解法就失效了。有时即使可以用积分解法求出特解,解的形式不一定时初等函数,可能含有定积分,需要用到数值积分法求解。因此,可以选择有应用背景的马尔萨斯人口预测模型作为引例,并通过数学软件演示Euler方法时如何近似求解微分方程,一方面让学生感觉到数学是可以解决实际问题的,另一方面让学生看到高等数学在应用上的局限性,从而激发学生学习数值分析的动力。

相信通过这些应用举例,学生应该非常清楚为什么需要数值分析了。接下来,需要告诉学生,计算机只会简单的加减乘除运算以及逻辑运算,所以运算速度非常快,要想让计算机处理复杂的数学问题,需要把算法通过专门的数学软件翻译成计算机能够读取的指令,计算机才能处理这些数学问题。因此就可以很顺畅地向学生导入什么是数值分析了,即数值分析就是研究在计算机上处理各种离散数学问题的算法。

最后需要通过几个简单的数值算法演示下数值分析是如何求解数学问题的,给学生讲清楚如何应用数值分析的。那么选择什么样的算例合适呢?例如,选择求解近似值的牛顿切线法与求解一阶微分方程的Euler折线法,这两种算法都是一个简单的递推式,并且具有直观的几何意义,非常适合用来讲解如何应用数值分析。

上好了数值分析第一堂课,能够激发学生学习数值分析的热情,为讲授后续的数值分析内容起到了良好的开端。

2 如何讲授数值分析中的各种数值计算方法

现行的数值分析教材内容大致分为误差、数值线性代数、非线性方程(组)的数值解法、数值逼近和常微分方程数值解五个部分。除了第一部分误差外,其他四部分内容基本相对独立,当然部分内容之间还是会有一定的逻辑顺序关系。例如,三次样条插值问题转化为解三对角的线性方程组,需要使用解线性方程组的追赶法;最佳平方逼近问题需要转化为解对称的线性方程组,当该方程组的条件数不高时,需要使用解线性方程组的高斯列主元消去法。

通常先讲误差部分,为什么还没讲方法之前,就先介绍误差呢?因为数值分析课程的特点与已熟悉的数学课完全不同。比如在微积分中,由于研究的问题是连续的,因此,无论导数计算还是积分计算都是没有误差的;又如在线性代数中,因为所有的矩阵计算都是手工进行,所以也是没有误差的。可是,在数值分析中,总是把连续问题先离散化,此时会产生截断误差,然后在计算机上进行计算,因此又会产生舍入误差。又如,在计算机上进行大规模矩阵计算时会产生舍入误差。因此,误差是算法讨论的核心问题,必须在讲算法前介绍清楚。那么如何引入误差理论呢?一般从学生熟悉的泰勒公式引入截断误差,从解二元线性方程组引入舍入误差比较好。

讲完了误差理论,就要开始介绍数值分析中的各种常见数值计算方法了。在数值分析中,每章都会针对同一问题,给出不同的数值计算方法,这些方法都有其使用范围及优缺点,因此在讲解过程中注意做比较分析。对工科学生来说,学习这门课的目的是为了遇到数值分析问题时,能够灵活地使用适当的算法处理该问题。因此,讲授每种方法时,重点放在介绍方法是怎么构造的,以及如何使用的,而不是过于抽象复杂的理论分析。建议以特殊到一般的方式介绍这些方法,不仅让学生容易接受,又能提高学生的数学归纳能力,而且节省板书时间,从而提高教学效率。下面用几个例子介绍如何讲授数值计算方法。

首先,以解线性方程组的高斯消去法为例,介绍如何讲授数值线性代数。最好从三阶线性方程组的计算讲起,然后引导学生从三阶线性方程组的计算过程,通过观察矩阵元素下标的变化,归纳出n阶线性方程组的直接法,高斯消去法本质上是把线性代数中解线性方程组的初等行变换法转化为计算机上能实现的算法,因此在介绍高斯消去法时,要跟学生强调初等行变换在高斯消去法中必须按照一定规律来设计,不能随意使用。接着,介绍高斯消去法使用条件,从而引出列主元高斯消去法。关于解线性方程组的迭代法也可以类似进行讲授。

其次,以n次拉格朗日插值多项式为例,介绍如何讲授插值法。先从待定系数法构造n次插值多项式讲起,为了得到多项式的系数,需要解线性方程组,比较麻烦,由此引出通过构造基函数的方法构造插值多项式。接着,从线性插值、二次插值讲起,引导学生从低次插值的构造过程,通过观察基函数的变化,归纳出n次拉格朗日插值多项式;紧接着,介绍下拉格朗日插值的缺点,即每增加一个节点,需要重新构造基函数。由此引出下节内容——牛顿插值多项式。

最后,以Newton-Cotes求积公式为例,介绍如何讲授数值积分法。先从低阶的Newton-Cotes求积公式,即梯形求积公式和抛物线求积公式(或称Simpson求积公式)讲起,然后引导学生从低阶求积公式的构造过程,通过观察求积节点与求积系数的对应关系,归纳出Newton-Cotes求积公式。接着介绍高阶Newton-Cotes求积公式的缺点,即当n大于8时,求积公式是不稳定的,由此引出下节内容——复合求积公式。

从上面举例可以看到,从特殊到一般的讲授方式,对工科本科生来说,是比较容易接受的。如果先从一般形式出发,对工科本科生来说,过于抽象,会对这门课程产生畏惧感,从而影响听课效率。

3 如何加强课外数值实验

在数值分析的教学中,数值实验是从理论到实践的重要环节。通过数值实验课,学生可以更直观地理解算法思想和更快地掌握如何正确的使用算法;如果缺少这个实践环节,对学生来说,算法仅仅是一堆抽象、复杂、长长的数学公式,算法的理解和使用难度都在加大,甚至无法掌握。因此,在学时数少且无数值实验课的情形下,需要加强学生课外自主上机进行数值实验。每章结束后至少布置一个数值实验给学生课外练习,并提供与该数值实验相应的指导性微课。学生课外自主上机进行实验环节设计框架图如图1。

图1:学生课外自主上机实验环节设计框架图

4 结论与认识

本文提出一些教学体会,包括如何给工科学生上好数值分析第一堂课,如何讲授数值分析中的各种数值计算方法,如何加强课外数值实验,可以更好地帮助学生掌握这门课程,从而提高这门课程的教学质量。

猜你喜欢

线性方程组计算方法插值
求解非线性方程组的Newton迭代与Newton-Kazcmarz迭代的吸引域
基于Sinc插值与相关谱的纵横波速度比扫描方法
随机振动试验包络计算方法
一种改进FFT多谱线插值谐波分析方法
基于四项最低旁瓣Nuttall窗的插值FFT谐波分析
不同应变率比值计算方法在甲状腺恶性肿瘤诊断中的应用
线性方程组解的判别
保护私有信息的一般线性方程组计算协议
基于Matlab实现线性方程组的迭代解法
一种伺服机构刚度计算方法