1. 引言
《线性代数》课程是本科院校理工科、经济管理类专业开设一门公共必修课。《线性代数》课程的主要内容包括:行列式、矩阵、线性方程组、特征值与特征向量和二次型等内容。《线性代数》课程是大学阶段最抽象的课程之一,每个章节的知识点之间的联系非常紧密。例如,在学习线性方程组的章节时,既要了解矩阵的知识点,又需要掌握行列式的知识点。最近,已有文献报道[1]-[6]将数学软件引入到数学课程(高等数学、线性代数)的教学中,本文将在教学中引入Maple软件,通过Maple软件强大的符号计算能力和数值模拟能力将线性代数课程抽象的计算用计算机代码来实现。通过教学理论与实践,培养学生运用现代化的数学工具解决实际问题的能力。
2. 教学案例
2.1. Maple数学软件计算行列式的值
计算行列式
的值。
本题目,如果通过手算也是能够计算出来的,可以利用行列式的性质,将所有的列加到第一列,然后再将第一行的−1倍加到其他行即可计算出该行列式的值。但是有由于是四阶行列式,计算量非常的大。利用Maple软件可以编程序快速计算该行列式的值。具体的计算如下。
With (Linear Algebra);
A: = Matrix([[1, 2, 3, 4], [2, 3, 4, 1], [3, 4, 1, 2], [4, 1, 2, 3]]);
Determinant (A);
运行(Enter键),即可行列式的值为160。
2.2. Maple数学软件计算矩阵的逆矩阵
利用Maple软件求解矩阵
的逆矩阵。
三阶方阵的逆矩阵的计算问题是一个线性代数中的最简单的问题,但是计算量仍然很大。本题目可以通过公式法
或者对矩阵
初等行变换方法获得。公式法需要计算
,计算量特别的大,初等变换法需要做多次初等变换。本文考虑用Maple软件计算该逆矩阵。
相应的Maple程序如下:
With (Linear Algebra);
A: = Matrix ([[1, 0, 1], [2, 0, −1], [3, 1, 2]]);
A_inv: = MatrixInverse (A);
运行(Enter键),即可得到矩阵
逆矩阵。接下来,利用Maple软件验证一下所计算的逆矩阵是准确的。相应的Maple程序如下:
With (Linear Algebra);
A: = Matrix ([[1, 0, 1], [2, 0, −1], [3, 1, 2]]);
A_inv: = MatrixInverse (A);
Verification: = Multiply (A, A_inv);
print (“原矩阵A:”);
print (A);
print (“计算得到的逆矩阵A−1:”);
print (A_inv);
print (“验证A × A−1的结果(应为单位矩阵):”);
print (Verification);
运行(Enter键),即可得到
。
2.3. Maple数学软件求解线性方程组
求解线性方程组
的解。
相应的Maple程序如下:
With (Linear Algebra):
#步骤1:定义系数矩阵(严格对应题目)
A: = Matrix([
[1, 2, 1, −1],#第一个方程系数
[3, 6, -1, −3],#第二个方程系数
[5, 10, 1, −5],#第三个方程系数
]);
#步骤2:计算行阶梯形矩阵(REF)
REF: = Gaussian Elimination (A);
print (“行阶梯形矩阵(REF):”);
print (REF);
#步骤3:计算简化行阶梯形矩阵(RREF)
RREF: = Reduced Row Echelon Form (A);
print (“\n简化行阶梯形矩阵(RREF):”);
print (RREF);
#步骤4:计算基础解系
basis: = Null Space (A);
print (“\n基础解系:”);
for i from 1 to nops (basis) do
printf (“解向量%d: %a\n”, i, basis[i]);
end do;
#步骤5:验证解的正确性
print (“\n验证结果:”);
for v in basis do
verification: = A. v; #矩阵乘法验证
if Equal (verification, Zero Vector (3)) then
printf (“解向量%a验证通过\n”, v);
else
printf (“解向量%a验证失败\n”, v);
end if;
end do;
#步骤6:显示自由变量信息
rank: = Rank(A);
n: = Column Dimension (A);
free_vars: = n-rank;
printf (“\n自由变量个数: %d\n”, free_vars);
运行(Enter键),即可得方程的解
,其中
和
为任意常数。
2.4. Maple数学软件求矩阵的特征值
求矩阵
的特征值和特征向量。并且绘制向量、子空间、特征向量等,将代数计算与几何直观联系起来。
相应的Maple程序如下:
restart;
with (Linear Algebra);
with (plots);
with (plottools);
A: = Matrix ([[−2, 1, 1], [0, 2, 0], [−4, 1, 3]]);
eigen_data: = Eigenvectors (A);
lambda: = eigen_data [1];
V: = eigen_data [2];
printf (“特征值:\n”);
for i to 3 do
printf (“lambda[%d] = %a\n”, i, lambda[i]);
end do;
printf (“\n特征向量(每一列对应一个特征值)”);
print (V);
v1: = Column (V, 1);
v2: = Column (V, 2);
v3: = Column (V, 3);
n: = Cross Product (v1, v2);
plane_eq: = x*n [1] + y*n [2] + z*n [3] = 0;
transformed_v1: = A. v1;
transformed_v2: = A. v2;
transformed_v3: = A. v3;
printf (“\n验证特征值–特征向量对:\n”);
printf (“A*v1 = \n”);
print (evalm (transformed_v1));
printf (“lambda1 * v1 = \n”);
print (lambda [1]*v1);
printf (“\nA*v2 = \n”);
print (evalm (transformed_v2));
printf (“lambda2 * v2 = \n”);
print (lambda [2]*v2);
printf (“\nA*v3 = \n”);
print (evalm (transformed_v3));
printf (“lambda3 * v3 = \n”);
print (lambda [3]*v3);
p: = v1 + v2;
transformed_p: = A. p;
expected_transformed_p: = 2*p;
printf (“\n特征平面上的点:p = v1 + v2 = \n”);
print (p);
printf (“A. p = \n”);
print (transformed_p);
printf (“2*p = \n”);
print (expected_transformed_p);
运行(Enter键),即可得特征值为
,
,特征值所对应的特征向量分别为:特征值
所对应的特征向量为
,其中
。特征值
所对应的特征向量为
(
不同时为零),其中
。当
时,特征空间为一维子空间,由
张成,对应于直线方程。当
时,特征空间为二维子空间,由
张成,对应于平面方程
,如图1所示。
restart; #可选,重启环境
with (plots): #加载绘图包
plot3d (4*x − y, x = −5..5, y = −5..5, axes = normal, labels = [x, y, z], orientation = [−60,70], title = “平面: 4x − y − z = 0”);
Figure 1. Plane equation
图1. 平面方程
2.5. Maple数学软件化二次型为标准形
利用Maple软件化二次型
为标准型,并给出所用的正交变换矩阵。
相应的Maple程序如下:
With (Linear Algebra):
#定义二次型矩阵
A: = Matrix ([[0, 1/2, 1/2], [1/2, 0, −1/2], [1/2, −1/2, 0]]);
#计算特征值和特征向量
eigenvalues, eigenvectors: = Eigenvectors (A);
#构造正交变换矩阵P (特征向量矩阵)
P: = eigenvectors;
#验证P是否正交(应满足P ^ T = P ^ (−1))
Is Orthogonal: = simplify (Transpose (P). P) = Identity Matrix (3);
print (“是否正交矩阵:”, is Orthogonal);
#计算对角化结果
Diagonal Form: = simplify (Transpose (P). A. P);
print (“对角化结果:”);
print (Diagonal Form);
#标准化变换(使对角元素为±1)
#计算缩放矩阵S
S: = Matrix([
[1/sqrt (abs (Diagonal Form [1,1])), 0, 0],
[0, 1/sqrt (abs (Diagonal Form [2,2])), 0],
[0, 0, 1/sqrt (abs (Diagonal Form [3,3]))]]);
#最终变换矩阵
C: = P.S;
#验证最终变换
Final Form: = simplify (Transpose (C). A. C);
print (“标准形矩阵:”);
print (Final Form);
#输出变换矩阵
print (“变换矩阵C:”);
print (C);;
运行(Enter键),即可得二次型为
,所用的变换矩阵为
。
3. 教学设计与实施
Table 1. Student performance evaluation
表1. 学生成绩评价
班级 |
学生人数 |
等级 |
优秀(90分以上) |
良好(80~89分) |
中等(70~79分) |
及格(60~69分) |
不及格 |
对照组(传统教学) |
138人 |
4人(2.9%) |
25人(18.2%) |
40人(29.2%) |
38人(27.7%) |
30人(21.9%) |
实验组(使用Maple) |
145人 |
15人(10.6%) |
27人(19.0%) |
39人(27.5%) |
40人(28.2%) |
21人(14.8%) |
采用“理论讲解–工具验证–应用探索”三阶段融合模式,结合传统数学严谨性与Maple数学软件现代技术工具,培养学生代数思维与问题解决能力。有效释放学生资源聚焦线性代数本质理解与创新迁移,实现能力协同发展。通过以上例子可以证实Maple软件为高等数学的教学提供很多可视化和数值计算等方面提供了很多便利。在某应用型本科院校工科的两个不同的专业为例子,对照组为传统教学,实验组使用了Maple软件,经过一学期的教学,学生成绩如表1所示。从表格中可以看到,显然实验组在使用Maple软件后线性代数的优秀率比传统教学组的人数要多很多,并且不及格率也相应降低。
4. 总结
本文将Maple软件应用于《线性代数》的教学中,利用Maple数学软件编写了行列式、矩阵的逆、线性方程组的解、矩阵的特征值和二次的计算问题。从运行的Maple程序来看,很容易获得所计算的结果。这不仅仅丰富了教学的实践,而且还增加了学生的兴趣。
基金项目
四川省哲学社会科学重点研究基地四川省教师教育研究中心高校师德师风建设长效机制创新研究探索课题研究成果,项目编号:TER2024-025。成都大学计算机学院微课程项目(SmartIT_G133)。