Matlab在线性代数实践教学中的应用
2014-07-18邱广文
Matlab在线性代数实践教学中的应用
邱广文
(昭通学院图书馆,云南 昭通 657000)
摘要:文中论述了在线性代数教学中培养学生科学计算能力的必要性和重要性,通过把Matlab引入到定理验证、含符号变量行列式和线性方程组的教学实践,说明将线性代数理论、应用及Matlab有机结合,可以帮助学生直观地理解掌握理论知识,通过Matlab的应用掌握科学计算方法,提高学生的科学计算能力。
关键词:线性代数;Matlab;科学计算能力;实践教学
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)13-3026-03
Practice Teaching, the Application of Matlab in Linear Algebra
QIU Guang-wen
(Zhaotong of Yunnan Zhaotong College Library, Zhaotong 657000, China)
Abstract: This paper discusses the in linear algebra teaching to cultivate students the necessity and importance of scientific computing ability, through the Matlab is introduced into the theorem of validation, with symbolic variable determinant and the teaching practice of system of linear equations, Matlab shows that the linear algebra theory, application and organic combination, can help students intuitively understand master the theoretical knowledge, through the application of Matlab to master scientific computing method, improve the students' ability of scientific computing.
Key words: Linear algebra; Matlab; scientific computing ability; practice teaching
MATLAB是一个交互式的矩阵运算软件,是“Matrix Laboratoy” 的缩写,意思是“矩阵实验室”,由MathWorks公司发布。多年来MATLAB经历一系列的扩展和改版,具有以矩阵为基础的强大的数值分析、矩阵运算、信号处理、可视化图形表现、建模仿真功能,以及方便的程序设计能力,现已成为科学及工程计算中的首选软件。
在高校线性代数教学过程中,把线性代数的理论、应用及MATLAB三者有机融为一体,在教学过程中穿插Matlab实例,让学生通过Matlab练习加深对线性代数的理解,结合实际问题提高学生应用线性代数解决实际问题的能力。
1 在线性代数教学中培养学生的科学计算能力
线性代数是讨论矩阵理论、与矩阵结合的有限维向量空间及其线性变换理论的一门学科。广泛应用于物理、力学、信号与信号处理、系统控制、电子、通信、航空等学科领域,随着计算机和网络技术的广泛应用,线性代数也成为计算机图形学、计算机辅助设计、密码学、虚拟现实等技术的理论和算法基础的一部分,因而成为现代各高等院校工、管、理专业的一门重要基础课程,成为用数学知识解决实际问题的一个强有力的工具。计算机技术和网络技术的发展已经对人们的物质生活和文化生活产生了十分巨大的影响,其最显著的功能就是进行高速度地海量计算,这种高速计算使得过去许多无法求解的问题成为可能,因此科学计算已成为与理论研究、科学实验并列的科学研究三大手段之一。线性代数在其发展过程中所表现出的几何观念与代数方法之间的联系,运用第二代数学模型的公理化表述方式,其巧妙的归纳综合及严谨的逻辑推证等,对培养学生的逻辑推理能力、抽象思维能力、基本运算能力有着重要的作用。除此之外还应着重培养学生的科学计算能力,所谓科学计算能力就是利用现代计算工具(包括硬件和软件)解决教学和科研中计算问题的能力。它包括掌握最新的科学计算软件、建立适当的计算模型、采用正确的计算方法、实现高效的编程和运算、对计算结果作最佳的表述和图解等多方面的综合能力[1]。但是,线性代数的应用与科学计算是目前高校线性代数教学中的一个薄弱环节。如在传统教材中,涉及线性代数应用的实例很少,涉及行列式和矩阵的阶数和规模很低,其中的数字也比较简单。然而,来源于实际问题的代数形式的数学模型中,情况则大不相同,行列式的阶数可能很高,矩阵的规模可能很大,其中的数字也可能比较复杂,在这种情况下仅用笔算几乎是不可能实现的。因此在线性代数教学中引入Matlab计算软件,通过实例教学与练习有利于培养和提高学生的科学计算能力。
2 在线性代数教学中Matlab的实践应用
2.1用Matlab验证行列式按行(列)展开定理
行列式按行(列)展开定理是行列式计算中的一个重要定理,这个定理也叫做行列式按行(列)展开法则,利用这一法则并结合行列式的性质,可简化行列式的计算。在教学中由于此定理证明较为繁琐,为降低难度很多教材没有证明。为此可通过Matlab程序验证这一定理。
n阶行列式按行(列)展开公式为:
[k=1naikAjk=A,当i=j0,当i≠j]endprint
1)用Matlab程序构造一个8阶方阵,按第5行展开:
[s=a51A51+a52A52+…+a58A58],验证s是否与A的行列式相等。
启动Matlab程序并打开编辑器编写程序ex01.m:
%验证行列式按行(列)展开公式
clc;clear all %清屏并清除所有变量
A=magic(8); %生成一个8阶魔方方阵
D=det(A); %计算A的行列式
%矩阵A按行列式公式展开:s=a51*A51+a52*A52+……+a58*A58
s=0;
for i=1:8
E=A;
E(5,:)=[]; %删去矩阵E第1行
E(:,i)=[]; %删去矩阵E第i列,则E为矩阵A元素a5i的余子式
s=s+A(5,i)*(-1)^(5+i)*det(E); %求s=a51*A51+a52*A52+……+a58*A58
end
F=D-s %验算D与s是否相等
在Matlab命令窗口中输入:
>>ex01
F=
0
用Matlab随机函数rand()构造一个8阶矩阵,计算A的第3行元素与第5行元素对应的代数余子式乘积之和:[s=a31A51+a32A52+…+a38A58],验证是否为0。
在Matlab的M文件编辑器中编写程序ex02.m:
%对8阶方阵A计算s=a31*A51+a32*A52+……+a38*A58
clc;clear
A=round(20*rand(8)); %构造8阶随机数方阵
s=0;
for i=1:8
T=A;
T(5,:)=[]; %删去矩阵T第5行
T(:,i)=[]; %删去矩阵T第i列,此时T为矩阵A元素a5i的余子式
s=s+A(3,i)*(-1)^(5+i)*det(T); %计算 s=a31*A51+a32*A52+……+a38*A58
end
fprintf('s=a31*A51+a32*A52+……+a38*A58\n');
s %验证s是否为0
在Matlab命令窗口中输入:
>>ex01
s=a31*A51+a32*A52+……+a38*A58
s =
0
2.2 Matlab符号运算在行列式、线性方程组中的应用
在数学运算中有数值运算与符号运算之分,进行数值运算时其表达式、矩阵变量中不允许有未定义的自由变量,为辅助数值计算,Matlab使用了符号工具箱来进行符号运算。符号工具箱用于处理符号表达式,因此可求解含有符号变量的方程组、微分和积分函数,以及进行符号矩阵运算。
2.2.1 求行列式[1-aa000-11-aa000-11-aa000-11-aa000-11-a]的值,并进行因式分解
在Matlab命令窗口中输入以下命令:
>>clear all %清除各种变量
>>clc
>>syms a %定义a为符号变量
>>A=[1-a a 0 0 0;-1 1-a a 0 0;0 -1 1-a a 0;
0 0 -1 1-a a;0 0 0 -1 1-a];%给矩阵A赋值
>>D=det(A) %计算含符号变量矩阵A的行列式
D =a^4 - a^5 - a^3 + a^2 - a + 1
>> f=factor(D) %对多项式D进行因式分解
f =-(a - 1)*(a^2 - a + 1)*(a^2 + a + 1)
2.2.2 齐次线性方程组:[(1+k)x1+x2+x3+x4+x5=02x1+(2+k)x2+2x3+2x4+2x5=03x1+3x2+(3+k)x3+3x4+3x5=04x1+4x2+4x3+(4+k)x4+x5=05x1+5x2+5x3+5x4+(5+k)x5=0]
当[k]为何值时,方程组有非零解。并求出齐次线性方程组的通解。
在Matlab的命令窗口中输入以下命令:
>>clc;clear
>>syms k %定义符号变量中k
>>A=[1+k 1 1 1 1;2 2+k 2 2 2;3 3 3+k 3 3;4 4 4 4+k 4; 5 5 5 5 5+k]; %输入系数矩阵A
>>D=det(A); %求出矩阵A的行列式值D
>>factor(D) %对D进行因式分解
ans =
k^4*(k + 15)
从D的因式分解可看出当[k]=0或[k]=-15时齐次线性方程组有非零解。下面求方程组的基础解系, 在Matlab的命令窗口中继续输入以下命令:
>> kk=solve(D) %求出方程D=0的解即k的值
kk =
-15
0
0
0
0
求当[k]=-15时,齐次线性方程组的基础解系:
>> AA=subs(A,k,kk(1)); %把k值代入系数矩阵A中
>>null(AA) %求基础解系
ans =
1/5
2/5
3/5
4/5
1
所以当[k=-15]时,方程组的基础解系为[η=[1,2,3,4,5]t],其通解为[x=kη],[k]为任意常数。
同样的方法可得,当[k=0]时,方程组的基础解系为[η1=[-1,1,0,0,0]t],[η2=[-1,0,1,0,0]t],[η3=[-1,0,0,1,0]t],[η4=[-1,0,0,0,1]t],其通解为[x=k1η1+k2η2+k3η3+k4η4],其中[k1,…,k4]为任意常数。
3 结束语
文中结合线性代数中的行列式、线性方程组等知识点,通过Matlab在线性代数定理验证、含符号变量高阶行列、线性方程组教学中的应用,说明把Matlab引入到线性代数教学过程中,将线性代数理论、应用及Matlab有机结合,一方面可以帮助学生直观地理解掌握知识点,另一方面可让学生应用Matlab编程技术掌握科学计算方法,提高学生的科学计算能力。
参考文献:
[1] 陈怀琛.线性代数要与科学计算结成好伙伴[J].大学数学,2010 (s1):28-33.
[2] 屠小明,冯元珍.Matlab软件在线性代数教学的应用举例[J].科技视界,2012(31):11-12.
[3] 杨威,高淑萍.线性代数机算与应用指导(Matlab版)[M].西安电子科技大学出版社,2009.4:20-21.
[4] 陈怀琛.大学理工科要把‘科学计算能力当作一个重要培养目标. 2005 年5 月在南京举行的精品课程研讨会上的发言.
[5] 陈世发,薛德黔.MATLAB在高等数学教学中的应用[J].福建电脑,2006(10):214,162.
[6] 高智中,武洁,王洋军.Matlab在线性代数教学中的几点应用[J].衡水学院学报, 2010(1):92-93.endprint
1)用Matlab程序构造一个8阶方阵,按第5行展开:
[s=a51A51+a52A52+…+a58A58],验证s是否与A的行列式相等。
启动Matlab程序并打开编辑器编写程序ex01.m:
%验证行列式按行(列)展开公式
clc;clear all %清屏并清除所有变量
A=magic(8); %生成一个8阶魔方方阵
D=det(A); %计算A的行列式
%矩阵A按行列式公式展开:s=a51*A51+a52*A52+……+a58*A58
s=0;
for i=1:8
E=A;
E(5,:)=[]; %删去矩阵E第1行
E(:,i)=[]; %删去矩阵E第i列,则E为矩阵A元素a5i的余子式
s=s+A(5,i)*(-1)^(5+i)*det(E); %求s=a51*A51+a52*A52+……+a58*A58
end
F=D-s %验算D与s是否相等
在Matlab命令窗口中输入:
>>ex01
F=
0
用Matlab随机函数rand()构造一个8阶矩阵,计算A的第3行元素与第5行元素对应的代数余子式乘积之和:[s=a31A51+a32A52+…+a38A58],验证是否为0。
在Matlab的M文件编辑器中编写程序ex02.m:
%对8阶方阵A计算s=a31*A51+a32*A52+……+a38*A58
clc;clear
A=round(20*rand(8)); %构造8阶随机数方阵
s=0;
for i=1:8
T=A;
T(5,:)=[]; %删去矩阵T第5行
T(:,i)=[]; %删去矩阵T第i列,此时T为矩阵A元素a5i的余子式
s=s+A(3,i)*(-1)^(5+i)*det(T); %计算 s=a31*A51+a32*A52+……+a38*A58
end
fprintf('s=a31*A51+a32*A52+……+a38*A58\n');
s %验证s是否为0
在Matlab命令窗口中输入:
>>ex01
s=a31*A51+a32*A52+……+a38*A58
s =
0
2.2 Matlab符号运算在行列式、线性方程组中的应用
在数学运算中有数值运算与符号运算之分,进行数值运算时其表达式、矩阵变量中不允许有未定义的自由变量,为辅助数值计算,Matlab使用了符号工具箱来进行符号运算。符号工具箱用于处理符号表达式,因此可求解含有符号变量的方程组、微分和积分函数,以及进行符号矩阵运算。
2.2.1 求行列式[1-aa000-11-aa000-11-aa000-11-aa000-11-a]的值,并进行因式分解
在Matlab命令窗口中输入以下命令:
>>clear all %清除各种变量
>>clc
>>syms a %定义a为符号变量
>>A=[1-a a 0 0 0;-1 1-a a 0 0;0 -1 1-a a 0;
0 0 -1 1-a a;0 0 0 -1 1-a];%给矩阵A赋值
>>D=det(A) %计算含符号变量矩阵A的行列式
D =a^4 - a^5 - a^3 + a^2 - a + 1
>> f=factor(D) %对多项式D进行因式分解
f =-(a - 1)*(a^2 - a + 1)*(a^2 + a + 1)
2.2.2 齐次线性方程组:[(1+k)x1+x2+x3+x4+x5=02x1+(2+k)x2+2x3+2x4+2x5=03x1+3x2+(3+k)x3+3x4+3x5=04x1+4x2+4x3+(4+k)x4+x5=05x1+5x2+5x3+5x4+(5+k)x5=0]
当[k]为何值时,方程组有非零解。并求出齐次线性方程组的通解。
在Matlab的命令窗口中输入以下命令:
>>clc;clear
>>syms k %定义符号变量中k
>>A=[1+k 1 1 1 1;2 2+k 2 2 2;3 3 3+k 3 3;4 4 4 4+k 4; 5 5 5 5 5+k]; %输入系数矩阵A
>>D=det(A); %求出矩阵A的行列式值D
>>factor(D) %对D进行因式分解
ans =
k^4*(k + 15)
从D的因式分解可看出当[k]=0或[k]=-15时齐次线性方程组有非零解。下面求方程组的基础解系, 在Matlab的命令窗口中继续输入以下命令:
>> kk=solve(D) %求出方程D=0的解即k的值
kk =
-15
0
0
0
0
求当[k]=-15时,齐次线性方程组的基础解系:
>> AA=subs(A,k,kk(1)); %把k值代入系数矩阵A中
>>null(AA) %求基础解系
ans =
1/5
2/5
3/5
4/5
1
所以当[k=-15]时,方程组的基础解系为[η=[1,2,3,4,5]t],其通解为[x=kη],[k]为任意常数。
同样的方法可得,当[k=0]时,方程组的基础解系为[η1=[-1,1,0,0,0]t],[η2=[-1,0,1,0,0]t],[η3=[-1,0,0,1,0]t],[η4=[-1,0,0,0,1]t],其通解为[x=k1η1+k2η2+k3η3+k4η4],其中[k1,…,k4]为任意常数。
3 结束语
文中结合线性代数中的行列式、线性方程组等知识点,通过Matlab在线性代数定理验证、含符号变量高阶行列、线性方程组教学中的应用,说明把Matlab引入到线性代数教学过程中,将线性代数理论、应用及Matlab有机结合,一方面可以帮助学生直观地理解掌握知识点,另一方面可让学生应用Matlab编程技术掌握科学计算方法,提高学生的科学计算能力。
参考文献:
[1] 陈怀琛.线性代数要与科学计算结成好伙伴[J].大学数学,2010 (s1):28-33.
[2] 屠小明,冯元珍.Matlab软件在线性代数教学的应用举例[J].科技视界,2012(31):11-12.
[3] 杨威,高淑萍.线性代数机算与应用指导(Matlab版)[M].西安电子科技大学出版社,2009.4:20-21.
[4] 陈怀琛.大学理工科要把‘科学计算能力当作一个重要培养目标. 2005 年5 月在南京举行的精品课程研讨会上的发言.
[5] 陈世发,薛德黔.MATLAB在高等数学教学中的应用[J].福建电脑,2006(10):214,162.
[6] 高智中,武洁,王洋军.Matlab在线性代数教学中的几点应用[J].衡水学院学报, 2010(1):92-93.endprint
1)用Matlab程序构造一个8阶方阵,按第5行展开:
[s=a51A51+a52A52+…+a58A58],验证s是否与A的行列式相等。
启动Matlab程序并打开编辑器编写程序ex01.m:
%验证行列式按行(列)展开公式
clc;clear all %清屏并清除所有变量
A=magic(8); %生成一个8阶魔方方阵
D=det(A); %计算A的行列式
%矩阵A按行列式公式展开:s=a51*A51+a52*A52+……+a58*A58
s=0;
for i=1:8
E=A;
E(5,:)=[]; %删去矩阵E第1行
E(:,i)=[]; %删去矩阵E第i列,则E为矩阵A元素a5i的余子式
s=s+A(5,i)*(-1)^(5+i)*det(E); %求s=a51*A51+a52*A52+……+a58*A58
end
F=D-s %验算D与s是否相等
在Matlab命令窗口中输入:
>>ex01
F=
0
用Matlab随机函数rand()构造一个8阶矩阵,计算A的第3行元素与第5行元素对应的代数余子式乘积之和:[s=a31A51+a32A52+…+a38A58],验证是否为0。
在Matlab的M文件编辑器中编写程序ex02.m:
%对8阶方阵A计算s=a31*A51+a32*A52+……+a38*A58
clc;clear
A=round(20*rand(8)); %构造8阶随机数方阵
s=0;
for i=1:8
T=A;
T(5,:)=[]; %删去矩阵T第5行
T(:,i)=[]; %删去矩阵T第i列,此时T为矩阵A元素a5i的余子式
s=s+A(3,i)*(-1)^(5+i)*det(T); %计算 s=a31*A51+a32*A52+……+a38*A58
end
fprintf('s=a31*A51+a32*A52+……+a38*A58\n');
s %验证s是否为0
在Matlab命令窗口中输入:
>>ex01
s=a31*A51+a32*A52+……+a38*A58
s =
0
2.2 Matlab符号运算在行列式、线性方程组中的应用
在数学运算中有数值运算与符号运算之分,进行数值运算时其表达式、矩阵变量中不允许有未定义的自由变量,为辅助数值计算,Matlab使用了符号工具箱来进行符号运算。符号工具箱用于处理符号表达式,因此可求解含有符号变量的方程组、微分和积分函数,以及进行符号矩阵运算。
2.2.1 求行列式[1-aa000-11-aa000-11-aa000-11-aa000-11-a]的值,并进行因式分解
在Matlab命令窗口中输入以下命令:
>>clear all %清除各种变量
>>clc
>>syms a %定义a为符号变量
>>A=[1-a a 0 0 0;-1 1-a a 0 0;0 -1 1-a a 0;
0 0 -1 1-a a;0 0 0 -1 1-a];%给矩阵A赋值
>>D=det(A) %计算含符号变量矩阵A的行列式
D =a^4 - a^5 - a^3 + a^2 - a + 1
>> f=factor(D) %对多项式D进行因式分解
f =-(a - 1)*(a^2 - a + 1)*(a^2 + a + 1)
2.2.2 齐次线性方程组:[(1+k)x1+x2+x3+x4+x5=02x1+(2+k)x2+2x3+2x4+2x5=03x1+3x2+(3+k)x3+3x4+3x5=04x1+4x2+4x3+(4+k)x4+x5=05x1+5x2+5x3+5x4+(5+k)x5=0]
当[k]为何值时,方程组有非零解。并求出齐次线性方程组的通解。
在Matlab的命令窗口中输入以下命令:
>>clc;clear
>>syms k %定义符号变量中k
>>A=[1+k 1 1 1 1;2 2+k 2 2 2;3 3 3+k 3 3;4 4 4 4+k 4; 5 5 5 5 5+k]; %输入系数矩阵A
>>D=det(A); %求出矩阵A的行列式值D
>>factor(D) %对D进行因式分解
ans =
k^4*(k + 15)
从D的因式分解可看出当[k]=0或[k]=-15时齐次线性方程组有非零解。下面求方程组的基础解系, 在Matlab的命令窗口中继续输入以下命令:
>> kk=solve(D) %求出方程D=0的解即k的值
kk =
-15
0
0
0
0
求当[k]=-15时,齐次线性方程组的基础解系:
>> AA=subs(A,k,kk(1)); %把k值代入系数矩阵A中
>>null(AA) %求基础解系
ans =
1/5
2/5
3/5
4/5
1
所以当[k=-15]时,方程组的基础解系为[η=[1,2,3,4,5]t],其通解为[x=kη],[k]为任意常数。
同样的方法可得,当[k=0]时,方程组的基础解系为[η1=[-1,1,0,0,0]t],[η2=[-1,0,1,0,0]t],[η3=[-1,0,0,1,0]t],[η4=[-1,0,0,0,1]t],其通解为[x=k1η1+k2η2+k3η3+k4η4],其中[k1,…,k4]为任意常数。
3 结束语
文中结合线性代数中的行列式、线性方程组等知识点,通过Matlab在线性代数定理验证、含符号变量高阶行列、线性方程组教学中的应用,说明把Matlab引入到线性代数教学过程中,将线性代数理论、应用及Matlab有机结合,一方面可以帮助学生直观地理解掌握知识点,另一方面可让学生应用Matlab编程技术掌握科学计算方法,提高学生的科学计算能力。
参考文献:
[1] 陈怀琛.线性代数要与科学计算结成好伙伴[J].大学数学,2010 (s1):28-33.
[2] 屠小明,冯元珍.Matlab软件在线性代数教学的应用举例[J].科技视界,2012(31):11-12.
[3] 杨威,高淑萍.线性代数机算与应用指导(Matlab版)[M].西安电子科技大学出版社,2009.4:20-21.
[4] 陈怀琛.大学理工科要把‘科学计算能力当作一个重要培养目标. 2005 年5 月在南京举行的精品课程研讨会上的发言.
[5] 陈世发,薛德黔.MATLAB在高等数学教学中的应用[J].福建电脑,2006(10):214,162.
[6] 高智中,武洁,王洋军.Matlab在线性代数教学中的几点应用[J].衡水学院学报, 2010(1):92-93.endprint