1. 引言
“新工科”(Emerging Engineering Education,简称3E) [1] 是为了适应工业4.0时代的需求而进行的工科教育体系改革,它旨在培养具备跨学科合作能力、综合素质、实践导向和创新精神的工科人才,以适应快速变化的科技和产业发展。2010年以来,以数字化、自动化、智能化和网络化为主要特征的第四次工业革命的兴起对传统的工程教育模式提出了挑战。为此,美国国家科学基金会(NSF)于2015年提出了新工科教育倡议,这个倡议在全球范围内引起了广泛关注,中国在新工科教育改革方面也积极响应。2016年,教育部发布了《高等学校新工科专业教育指导性意见》,提出了新工科教育改革的目标和原则。从此,中国各高校纷纷通过调整课程体系、优化教学方法、促进跨学科融合、加强实践环节等方式积极开展新工科教育改革的试点项目。作为“新工科”教育改革的重要组成部分,数学教育在培养学生的科学思维、分析能力和问题解决能力方面发挥着关键作用。而线性代数作为数学的重要分支之一,是许多工程学科的基础和核心课程。“新工科”背景下,线性代数课程的教学内容、教学模式和教学资源也亟需进行深入的改革和创新,以更好地培养适应现代工程和科学领域需求的优秀人才。
2. 线性代数在工科教育中的重要地位
线性代数在科学技术的每个领域都发挥着基础性的重要作用,比如结构力学中的载荷与位移及相容性问题、电子电路分析、计算机视觉中的相机校准与立体图像拼接、控制优化问题、机器学习中的主成分分析与支持向量机 [2] 、机械及热力学中的有限元分析、数据拟合问题等等,上述问题大多数都可转化为线性代数中矩阵方程或矩阵特征值问题。除此之外,一些非线性系统也常通过线性化方法转化为线性问题并利用线性代数的理论加以处理,比如对非线性电路的二极管放大器进行小信号线性近似。瑞典数学家Lars Garding在其数学科普名著《Encounter with Mathematics》 [3] 中写道:“如果不熟悉线性代数的概念,像线性性质、向量、线性空间、矩阵等等,要去学习自然科学,现在看来就和文盲差不多,甚至可能学习社会科学也是如此。”线性代数作为高度抽象化、结构化及概括性的学科,为科学技术的各个领域提供了具有普适性的底层思维工具,卓有成效的线性代数教学能有力培养学生的科学思维、创新能力、跨学科交叉融合能力和科技实践能力。
3. 线性代数教学的现存弊端及教学改革探索
然而线性代数的抽象性对工科学生来说是把双刃剑。一方面由于抽象凸显了本质,而高度概括性又提供了跨学科桥梁,使得线性代数成为强大的理论与思维工具。另一方面,线性代数的抽象性和形式化特点造成学生在学习及应用线性代数时往往存在严重困难,传统的线性代数教学模式偏重于理论形式化推导的倾向则加剧了这一问题。以下将从几个方面分析传统线性代数教学存在的常见弊端,并提出相应的教学改革策略。
1) 传统的线性代数教学常常直接罗列定义、定理、证明,只注重整个理论框架的简洁和逻辑上的自洽与完备,却缺少直观和对来源的阐释,把建立理论体系的思维和探索的痕迹擦拭得一干二净。学生并不理解为什么这样定义,也不知道它们有什么用处,整个学科在学生眼中就是一些不明所以的规则以及由枯燥的形式逻辑建立起来的定理的集合,这些对学生而言是缺乏意义的。数学应该是有整体图像感的。为改善这种情况,教育者应该结合线性代数的发展历史、认识论,联系实际应用,并通过问题导向的教学,引导学生理解每个概念和理论的发现与建立的动机、思维过程及核心思想,使学生不仅知其然更知其所以然,对整个学科有个整体的把握,并且能举一反三。此外,通过可视化工具、几何解释和实例演示等方法,帮助学生建立对向量、矩阵和线性变换等抽象概念理论的直观形象的理解。
2) 传统的线性代数教学往往缺乏与实际问题的联系,导致学生无法将抽象的概念与实际应用场景相结合,从而学习的兴趣和动力不足,且不能用所学到的知识灵活地分析解决实际问题。为了培养具备高度专业能力的新工科人才,线性代数教学需要与实际应用紧密结合,在对不同专业本科生实施线性代数课程教学过程中要有针对性地引入丰富的科学技术和工程应用中典型的实际案例,引导学生认识到线性代数在工程和科学领域中的普遍应用和重要性,让学生能够将线性代数的概念和方法运用到实际问题中,激发学生的学习兴趣和动力,增强其科学与创新能力。
3) 随着科学和工程领域的发展,学科之间的交叉融合越来越重要。线性代数作为数学的一门基础学科,在计算机科学、物理学、生物学等其他学科中都有重要的应用,但传统的线性代数教学往往将其孤立地呈现,缺乏与其他学科的融合,这导致学生无法意识到线性代数与其他学科的紧密关联,限制了他们跨学科交叉融合能力的发展。我们应该通过跨学科的教学设计,将线性代数与工程、物理、计算机科学等其他学科的内容结合起来,培养学生的跨学科思维和综合应用能力。例如,线性代数的矩阵运算和向量空间可以与计算机图形学的算法相结合,让学生在学习线性代数的同时也了解其在计算机图形学中的应用。
4) 传统的线性代数教学往往只强调概念理论和人工计算,这已经无法充分满足现代工程和科学领域的需求,我们应当引入计算机辅助线性代数教学,在教学中使用Python等编程语言以及MATLAB等现代数学软件与仿真工具。首先,通过引入计算技能,学生可以可视化抽象概念,深入理解线性代数的基本原理;其次,计算技能使学生能够将线性代数应用于数据分析、图像处理、机器学习和优化等等现实世界的问题,培养他们在现代行业中解决挑战的能力;除此之外,计算工具提供了复杂计算的高效和准确解决方案,使学生能够专注于概念理解,而不是繁琐的人工计算。
5) 学生的学习需求和背景各不相同,但传统的线性代数教学往往采用单一的教学模式,无法满足学生的个性化需求。同时,缺乏互动性的教学方式也限制了学生的参与和主动性。为了解决这一问题,我们可以采用个性化教学方法,根据学生的不同水平和兴趣提供不同的教学资源和活动,并通过讨论、小组合作等方式活跃学生思维,增加学生之间和学生与教师之间的互动。此外,可通过引导学生进行探究式学习或者设计实际问题与任务,增强学生对线性代数的理解与应用能力及创新能力。
6) 传统的线性代数教学往往缺乏实践环节。为了改善这一问题,我们应该引入实践性的学习活动,设计一系列与线性代数相关的小型工程技术项目案例,例如图像处理、信号过滤、数据分析等。通过这些实践项目,学生能够在实际应用中运用线性代数的知识和技巧,从而深入理解线性代数的概念和方法。举个例子,在图像处理项目中,学生可以运用线性变换和矩阵运算来实现图像的平移、旋转、缩放等操作。这样的实践经验将帮助学生提升应用抽象的线性代数理论分析解决实际问题的能力。此外,应该鼓励学生参与与线性代数相关的竞赛和挑战,如机器学习竞赛、数学建模比赛等,通过这些竞赛和挑战,学生解决复杂问题的综合能力以及创新思维和团队合作能力均可获得卓有成效的锻炼。
4. 一个具体的教学案例:矩阵的奇异值分解及其在图像压缩中的应用
本节中我们将展示基于上述线性代数教改理念的一个具体教学案例:矩阵的奇异值分解及其在图像压缩中的应用。图像处理涉及对图像进行分析、处理和恢复,而线性代数提供了一种强大的工具来处理图像数据 [4] 。在图像处理中,图像通常被表示为一个二维矩阵或者多维张量。每个像素的颜色或灰度值可以表示为矩阵或张量的元素。线性代数中的矩阵运算和向量运算可以应用于图像的处理过程中。
以下是线性代数应用于图像压缩和恢复的一个具体的例子。图像压缩是将图像数据表示为更小的数据集,以减少存储空间或传输带宽,其中一个常用的图像压缩算法是奇异值分解(Singular Value Decomposition, SVD) [5] ,其数学原理陈述如下。
对于一个实对称矩阵A,其特征值为实数且特征向量构成正交矩阵,可以将A进行如下的特征值分解 :
(1)
其中
为特征值矩阵,
为一组实特征值且
,
为相应的单位长度特征向量,
,这些特征向量是正交的,即
,它们构成特征向量矩阵
。
奇异值分解则是将这一分解性质推广到任意矩阵,即对任意的
阶矩阵A,总存在一个奇异值分解:
(2)
其中
(3)
(4)
(5)
r为矩阵A的秩,U是一个
阶正交矩阵,其列向量被称为左奇异向量,U的前r列构成矩阵A的列向量组所张成的向量空间的一组正交基,U的第
至m列则构成矩阵A的左零空间的一组正交基;
是一个
阶对角矩阵,其对角线上的元素称为奇异值,且
;V是一个
阶正交矩阵,其列向量被称为右奇异向量,VT表示V的转置,VT的前r行(即V的前r列)构成矩阵A的行向量组所张成的向量空间的一组正交基,VT的第
至n列则构成矩阵A的零空间的一组正交基。
由
(6)
与
(7)
知,对称阵ATA与AAT具有相同的特征值,其平方根就是A的奇异值,AAT的特征向量就是A的左奇异向量,ATA的特征向量就是A的右奇异向量。
在图像压缩中,使用SVD来实现图像的降维和压缩的具体步骤如下:
1) 将图像表示为一个矩阵:将图像的每个像素视为矩阵中的一个元素,将图像表示为一个
阶矩阵A。
2) 对矩阵A进行奇异值分解:
。
3) 通过选择合适的截断阈值来压缩图像数据:我们保留奇异值较大的部分(因为较大的奇异值对应着矩阵的主要能量或信息),并将其他较小的奇异值设置为零。这相当于在奇异值矩阵
中仅保留前k个奇异值,并将剩余的奇异值设置为零,如此得到压缩后的奇异值矩阵,记为
,这样就减小了图像数据的维度。根据压缩的要求,选择保留的奇异值个数k,显然k越大,压缩的清晰度越好,但压缩率就越大。
4) 图像恢复:使用压缩后的奇异值分解进行图像恢复。通过将U、
和VT相乘,我们得到一个新的矩阵
,表示恢复的图像数据,即,
。
这个例子展示了线性代数在图像压缩和恢复中的具体应用。通过奇异值分解,我们可以降低图像数据的维度并实现压缩,然后使用压缩后的奇异值分解来恢复原始图像。
SVD图像压缩的python代码如下:
import numpy as np
from PIL import Image
def compress_image (image_path, compression_ratio):
image = Image.open (image_path).convert(’L’)# 打开图像并转换为灰度图像
image_array = np.array(image)
U, s, Vt = np.linalg.svd (image_array, full_matrices=False) #对图像矩阵进行奇异值分解
k = int (compression_ratio * min(image_array.shape))#压缩率
U = U[:, :k]#选择前k个奇异值
s = s[:k]
Vt = Vt[:k, :]
S = np.diag (s)#构造奇异值矩阵
compressed_image_array = U @ S @ Vt#压缩后的图像矩阵
# 创建压缩后的图像对象
compressed_image = Image.fromarray (compressed_image_array.astype (np.uint8))
return compressed_image
image_path = ’image_path’#自定义图像路径和压缩率
compression_ratio = 0.5
compressed_image = compress_image (image_path, compression_ratio)#压缩图像
compressed_image.save (’compressed_image_path’)#保存压缩后的图像
我们通过运行该代码,把网上随机找的一张大熊猫的图片进行压缩,当选择不同的奇异值个数(也就是选择不同压缩率)时图片压缩效果分别如图1(a)至图1(d)所示:
(a) (b) (c) (d)
Figure 1. (a) Original image; (b) 70% compression; (c) 50% compression; (d) 10% compression
图1. (a) 原图;(b) 压缩率为70%;(c) 压缩率为50%;(d) 压缩率为10%
5. 结语
本文对新工科背景下线性代数教学改革进行了初步探索。为了培养具备综合能力和创新精神的未来科技人才,线性代数教学的内容和模式需要进行有效的革新,线性代数教学需要与科学技术领域的具体应用紧密结合,并与各专业进行跨学科交叉融合。同时,线性代数教学也需要紧跟计算机技术的发展趋势,与时俱进。我们以线性代数中矩阵的奇异值分解在图像压缩算法中的应用作为教学案例,展示了这种教学改革思想的一个具体实践。未来,我们需要进一步探索如何更加有机地将线性代数与其他学科结合,设计更多应用领域的教学案例。此外,我们还将关注教学评估的有效性,以确保教学目标的实现。
基金项目
安徽理工大学引进人才科研启动基金(批准号:2022yjrc90)资助项目。
NOTES
*通讯作者。