线性方程组直接解法教学设计的一些改进

2022-04-19 00:35赵振宇巩本学郑明文贾现正王迎美由雷
赤峰学院学报·自然科学版 2022年3期
关键词:计算方法启发式教学教学设计

赵振宇 巩本学 郑明文 贾现正 王迎美 由雷

摘 要:线性方程组的直接解法是计算方法课程中的基本内容与方法,在很多数值计算的过程中都有广泛的应用。现有教材的教学内容和设计整体性不强,对几类方法的相关性描述不足,不利于学生对方法的理解。本文重新梳理现有教材中的教学内容,对现有的教学设计提出几点改进。首先,改变传统教材中的教学顺序,将三角分解内容前置,突出本章的教学重点;然后,以紧凑格式的LU分解为核心,串联章节的各部分内容,使学生能够更深刻理解各部分内容之间的内在联系;再有,对列主元方法进行修正,避免学生产生歧义。最后,对相关实践环节提出建议。通过以上教学设计的改进,旨在提高学生对相关内容的理解与兴趣,培养学生的思考和创新能力。

关键词:计算方法,线性方程组的直接解法,教学设计,启发式教学

中图分类号:G642;O151  文献标识码:A  文章编号:1673-260X(2022)03-0001-05

1 引言

“计算方法”是高等院校数学类专业的重要基础课程,同时也是很多理工科专业的主要公共课程之一。随着现代科学技术的迅猛发展以及计算机的广泛应用,科学工程中所涉及的数值计算问题越来越多。科学计算已成为继理论和试验方法之后的第三种科学研究手段,是人们进行科学活动必不可少的科学工具[1]。计算方法课程作为科学计算的关键基础课程,在培养高等院校工科类大学生的科学计算能力和解决工程实际问题的素质能力方面具有不可替代的重要作用。计算方法这门课程既有一般数学课程抽象性的特点,又注重与实际工程问题相结合的工程思想,关注求解的精确性和计算效率的平衡[2]。在课程教学中不但要注意培养学生的数学理论素养,还要关注学生的动手实践能力,要通過一些相对简单的例子让学生相关算法的操作流程。因此,在教学设计上要进行精心设计,才能取得良好的教学效果。

线性方程组的直接解法是计算方法课程中非常重要的一部分。大量的实际问题最终都要归结到线性方程组的求解,而直接解法中涉及的LU分解等算法仍然是目前求解线性方程组的主流方法。该部分涵盖的计算量分析、三角分解与高斯消去法的关系、对称以及三对角矩阵LU分解的特殊性等内容对学生深刻理解算法设计的意义有着重要的作用。但现有大部分教材的教学体系对这部分的内容梳理不够清晰。

1.1 高斯消去法的内容过于冗长

大部分教材采用过多的篇幅描述高斯消去法的内容,而对高斯消去法与LU分解之间的关系描述以公式的推导为主,不够直观。对两种方式的计算量之间的关系简单地一带而过,学生对其相关性认识模糊。事实上,高斯消去的过程与线性代数的内容基本是重叠的,在这里花费太多功夫会让学生对这门课程的本质认知不清,应尽快突出教学的重点,尽快引出矩阵分解的计算过程。然后再与高斯消去的过程进行比对,让学生看到这门课程的角度与线性代数的关注点是完全不同的。而对计算量的分析应通过简单的例子让学生直观看到实际上三角分解就是对高斯消去过程的记录。本质上它们的计算是一样的,只是次序不同,因此可以通过高斯消去的过程来研究三角分解的计算量问题。

1.2 改进学生难掌握的平方根方法的繁琐公式

没有把改进平方根法与一般LU分解之间的联系描述清楚,学生没有形成直观的计算量降低的感受,对于工科学生而言,理解这部分内容存在较大困难。整体在这一部分的教学设计上应该以一般矩阵的LU分解为重点,花更多的时间让学生掌握一般矩阵LU分解的计算过程,能够完成一些简单矩阵的紧凑格式的计算。在学生能够熟练进行一般矩阵LU分解计算的基础上再对改进平方根法进行讲解,只需要讲清楚它的上下三角矩阵之间的关系,学生就可以清楚地看到计算量降低的情况了。

1.3 列选主元的方法与目前一些商业软件内置算法基本原理相悖

现有教材中的列主元消去法存在较大的漏洞,容易让学生对该部分内容产生怀疑。大部分教材这一部分采用的处理方式都是直接选取列元素绝对值最大的做主元,而实际过程中有学生会提出反例,使得这种操作解决不了求解的不稳定问题,而教师一般的处理办法就是改成全选主元的方法。但实际上目前大部分商业软件采用的方式是归一化的列主元方法,而这种方法的描述并不复杂,对教材上的内容进行简单的修正就可以解决这个问题。

1.4 课堂授课存在重理论轻实践现象

目前计算方法的课程讲授以理论为主,忽略学生对方法具体应用的掌握程度,这与工科学生的培养目标相违背,不能很好地锻炼学生的动手能力。能够利用软件结合这门课所学的内容解决一些基本的计算问题才是工科学生学习这门课程的基本目的。因此,如何在有限时间内让学生能够掌握相关算法与程序设计的基本流程,理解同一数学目标下的不同数学处理会造成很大的差异。[4,5]

本文针对这些问题,结合近年来的教学体会和经验,给出相应的解决的方案,供广大教学工作者和学生参考。

2 教学设计改进的具体描述

线性方程组直接解法的教学内容包含高斯消去法、矩阵的三角分解(LU分解、平方根法、改进平方根法、追赶法)、条件数与误差分析。本文作者在搜集现有资料的基础上,通过教学的反复实践,对教学设计做了调整。

2.1 以三角分解为核心设计教学内容

重点参照了文献[3]中的方式,以三角分解作为本章教学的出发点。国内大部分教材往往用很大的篇幅来描述高斯消去法,然后引出三角分解。在很多工科的教学大纲设计中因为学时的限制,甚至忽略三角分解的内容,只讲高斯消去法。这样教学效果受到很大限制。三角分解是本章内容的核心,也是目前主流的小型稠密方程组求解方法,很多软件内置的算法基本都是以它为基础。将其内容前置可以起到突出重点的作用,在学生对这部分内容有了认知之后,通过一个直观的例子引出三角分解法跟高斯消去法之间的关系,可以让学生由眼前一亮的感觉。从教学经验来看,这样的编排能让学生对这部分内容的认识更为清晰。具体教案的设计中我们从上下三角形矩阵对应的方程组出发让学生看到系数矩阵的特殊形式可以给方程组的求解带来方便。对于三角形矩阵对应的线性方程组,我们通过O(n2)量级的计算就可以实现方程组的求解。这也为后面讲解用三角分解记录高斯消去法的目的埋下伏笔。具体来说就是向学生展示

=

=

分别给出它们解的表达式

x1=xk=bk-aklxl/akk和xn=xk=bk-aklxl/akk

接下来,让学生对它们的计算量进行简单分析,引导学生算法设计中需要重点关注计算量问题。接下来,提出问题:一般线性方程组的矩阵是否能够分解成上下两个三角矩阵乘积的形式?接着直接抛出定理结论(LU分解的唯一性定理)。再引出第二个问题,在分解存在唯一的情况下,如何进行LU分解的计算?从矩阵乘法的概念出发,以下图为依据,逐步的讲解LU矩阵的计算过程。进一步分析数据的存储问题,引出紧凑格式的LU分解,为后面的教学做好铺垫。

A=LU=

在这一部分教学中一定要让学生充分掌握紧凑格式的LU分解的计算流程,这样他们才能在后面进一步学习平方根法、改进平方根法以及追赶法的内容时更清晰地认识到它们和一般矩阵LU分解之间的联系。

2.2 以紧凑格式的LU分解为核心串联几种分解格式

本章教学内容中包含众多的公式,尤其是改进平方根方法,在很多教材的描述中非常复杂,教师在教学过程中往往需要花费很大的工夫向学生说明算法的流程以及对应的公式的作用。比如我们观察改进平方根最终的分解式:

A=LDLT=

很难像前面一般LU分解那样清晰的说明它的计算流程。如果你去看很多教材上的公式描述,大部分教材中提到引入中间变量,然后给出计算公式:

di=aii-tikliktij=aij-tikljk j=1,2,…i-1lij= j=1,2,…i-1

这一部分笔者在之前的教学中经常看到的是学生一脸的困惑,不知所云,往往需要很长时间的描述才能将这一部分讲清楚。但如果我们回归到紧凑格式的三角分解方法,就可以给学生比较直观的分析,图1中展示了紧凑格式LU分解计算的基本过程。

学生通过一些简单矩阵的具体操作,可以清晰地理解LU分解的具体流程,而在改进平方根方法的教学中可以通过以下的式子说明其与一般LU分解的关系,进一步回到紧凑格式的计算流程,可以明显地看出,由于L=U0T,所以跟一般的LU分解的

U==DU0

计算相比,只需要按照原来的方式计算上三角,而下三角部分只需要对应的上三角元素除对角元素就可以得到,而不需要原来复杂的运算。这样学生对改进平方根方法就有了直观的认知。而追赶法的教学是类似的,其实际的计算过程跟原始的LU分解是没有区别的,只是因为我们在具体的计算过程中发现找到的很多元素为零,所以简化了计算过程。这样几种三角分解的计算过程就统一起来了。而学生也能直接感觉到后面两种方式为什么降低了计算量。通过这样整体的设计,原来的教学内容全部展示给学生了,只是侧重点有所不同,在学生以及熟练掌握一般LU分解的基础上再对其他三角分解格式进行描述一带而过,基本上十几分钟的时间就可以完成改进平方根法和追赶法的基本教学,学生也可以更清晰的理解这一部分内容。

2.3 以具体实例描述高斯消去法与LU分解关系

这一部分大部分教材的设计基本上是通过初等变换的公式进行描述,这样虽然也行得通,但学生往往需要较长的时间消化内容,尤其对于工科学生而言,抽象的推导会让他们比较难以接受。因此可以在教学设计上做如下的改进。首先,通过一个简单的例子将高斯消去法的过程进行展示,然后让学生对例子中出现矩阵的LU分解进行计算,进一步思考高斯消去法与LU分解的关系是什么?从直观上认识高斯消去法于LU分解的联系。比如求解如下的线性方程组:

=

高斯消去法的过程为:第一步,第二个方程减去第一个方程的乘以2,然后第三个方程减去第一个方程乘以1/2,最后第四个方程减去第一个方程乘以-1,得到等价方程组:

=

第二步,第三个方程减去第二个方程乘以3,然后第四個方程减去第二个方程乘以-1/2,得到:

=

第三步,将第四个方程减去乘数2乘以第三个方程,得到与原始方程等价的上三角方程组:

=

现在如果我们将消元中使用的乘数按照相应的位置存储到单位下三角矩阵,联合最终得到的上三角矩阵组

L= U=

与原始方程组的系数矩阵直接进行三角分解对比,得出高斯消去法与LU分解等价性的结论。进一步,让学生观察高斯消去法的计算过程与LU分解的计算过程,指出两者的计算是基本一致的,只是计算次序的不同,比如高斯消去过程第一步完成了所有其他行剪掉第一行倍数的运算,而LU分解中这些过程被调整了次序,我们首先把第二行减去第一行倍数的运算完成了(LU分解算上三角第二行的过程),后面每一次算上三角的过程中实际都包含了该对应行减去第一行倍数的运算,可以让学生再次观察紧凑格式的计算,很容易得到相应的结论。因此,高斯消去和LU分解的计算量也是基本相同的。再次提出问题,相比高斯消去法,LU分解有什么优点?让学生认识到LU分解完成了对高斯消去过程的记录,这样在改变右端项的时候,消去过程不需要再重新进行,可以提高效率。而且结构化的计算也更便于理论分析。

2.4 对现有教材中列主元方法的主要问题进行改进

选主元方法也是本章的教学重点内容。对这部分的学习有利于学生对计算方法设计重要性产生根本的认同。但目前国内大部分教材最终的落脚点在列选主元方法,而大部分教材中列主元选取的方式都是简单采用选取矩阵列的绝对值最大元素,这与主流商业软件中内置算法的过程是不一致的,而且学生也很容易举出反例来说明这种方式的缺陷,例如,考察方程组

=

按照简单的列选主元方式,上述方程组中两个方程是不需要改变顺序的,但如果?着比较小,会出现近似解为

x2=(2-?着-1)/(1-?着-1)≈1x1=(1-x2)?着-1≈0

的情况。此时是需要更換两个方程的求解顺序,也就是说在LU分解过程中是需要进行矩阵行的交换的。目前一般软件采用的列选主元方法基本上是基于下面操作的:首先计算每一行的尺度量

si=|aij|=max{|ai1|,|ai2|,…|ain|},(1≤i≤n)

进一步,主元的选择是考虑如下最大值

|a|/s=|ai1|/si,

这样的操作就能够解决前面提出的问题,而这种操作的讲解并不复杂。因此,我们的教学设计上应该将目前主流软件中采用的方式跟学生讲清楚,其基本过程是要首先计算每一行的尺度量,也就是看元素的相对大小的,然后再进行列选主元,这样就不会出问题了,在学时有限的情况下,也要对这种情况进行简单说明,避免学生面对此类问题是产生困惑。

2.5 以LU分解的程序设计为主线锻炼学生的动手能力

计算方法课程的一个主要目标是培养学生的基本程序设计能力,掌握算法设计的要点,能够结合一些辅助软件完成课程中的基本算法的实现。目前,由于学时的限制,很难抽出太多的时间专门开设相关实验课。因此,如何在有限的时间内让学生能够得到程序设计的基本训练也是这门课程教学的难点。本文作者结合教学实践,在本章中以LU分解的Matlab设计作为课程授课的内容,然后将改进平方根方法的程序设计作为课下作业,让学生通过对程序的简单改进一方面得到编程的基本训练,还可以让学生进一步理解改进平方根法相对一般LU分解的主要优点。

3 结论及注记

本文对线性方程组直接解法教学设计中的一些基本问题进行了梳理,进一步给出了一些改进的方案。希望能够起到抛砖引玉的作用,供广大授课教师和学习者参考。另外,在本部分内容的教学中还有其他一些内容需要注意。

(1)一些概念性内容的补充与教学设计。这一章还有一部分教学内容是关于误差和稳定性讨论的,里边涉及了很多诸如范数、内积、条件数等数学概念。而从实际教学过程来看,由于目前学分等条件限制,工科大部分学生的线性代数学习中关于向量内积、矩阵特征值等概念都没有很清楚地掌握,我们在授课过程中需要对这些内容做适当的补充教学。再有,就是对学生的学习要求以掌握概念的基本含义为主,不能也没必要有更深层次的要求。

(2)辅助软件的使用与教学目标的考虑。因为目前众多的商业软件对方程组的求解都有内置算法,在授课的过程中应该穿插讲授这一部分内容,一方面可以让学生借助这些软件进行学习,也可以引导学生关注这门课程学习的主要任务,对一般工科学生而言,重要的是理解算法设计的一些基本要素,了解一类问题的解决方案中可能存在的问题,将来在具体应用的过程中,知道每类问题对应的解决方案以及每种方案的优缺点,在出现一些情况时能够知道大概的解决方向。

(3)注意Matlab软件本身的一些特点。在使用Matlab辅助本章教学时需要注意Matlab软件本身的特点:Matlab程序设计对循环语句敏感的问题始终没有解决,如果编写的程序中涉及循环语句尤其是多重循环,其执行效率会大幅度降低。因此,虽然有些算法看起来计算量更小,但因为编写时需要大量循环会造成其在Matlab中执行效率低的问题。学生在实现本章的几个算法时,可能会因为这一问题使得一般LU分解、改进平方根以及追赶法之间的效率对比不明显。

——————————

参考文献:

〔1〕张璋.计算是第三种科学研究手段—访计算数学家余德浩教授[N].科学时报,2002-12-18(3).

〔2〕李庆扬,王能超,易大义.数值分析(第五版)[M]. 北京:清华大学出版社,2008.

〔3〕Kincaid D,Cheney W. Numerical Analysis-Mathematics of Scientific Computing (Third Edition)[M]. 北京:机械工业出版社(影印版),2002.

〔4〕赵建平,杨晓梅.计算方法”课程混合式教学效果调查与改进建议[J].新课程研究,2021,6(17):64-65.

〔5〕杨云云.工科本科生计算方法课程教学心得[J].科教文汇,2021,19(10):65-66.

猜你喜欢
计算方法启发式教学教学设计
基于示踪气体法的车内新风量计算方法研究
极限的计算方法研究
第二重要极限的几种计算方法
《微机原理与接口技术》教学创新方法研究
高中数学一元二次含参不等式的解法探讨
“仿真物理实验室” 在微课制作中的应用
简谈数学课堂中的启发式教学
翻转课堂在高职公共英语教学中的应用现状分析及改善建议
提高课堂教学有效性的研究
《运筹学》教学模式探讨