MATLAB在线性代数课程中的应用
2014-04-29欧阳异能杨婷
欧阳异能 杨婷
【摘要】 结合线性代数课程特点,引入计算软件MATLAB辅助教学,探讨MATLAB在线性代数中的矩阵运算、行列式计算、向量组的线性相关性、线性方程组求解以及特征值和特征向量等若干问题方面的应用,以期提高教学质量,改进教学效果.
【关键词】 矩阵;线性方程组;特征值;MATLAB
线性代数课程是高等学校的重要数学基础课,是用数学知识解决实际问题的一个强有力的工具,广泛地应用于信号处理、系统控制、电子通信等学科领域. 线性代数课程除了培养学生的基本运算能力、抽象思维能力、逻辑推理能力外,还应注重培养学生的数学建模能力与数值计算能力,使学生学会用数学方法解决实际问题,并能利用计算机进行一定的科学计算.
目前传统的线性代数教材仍然是以理论为主导,偏重理论体系的系统性、完整性,过多强调证明和推导,却忽视了概念、原理和模型的实际背景,缺乏解决实际问题的训练. 再加上课程本身所固有的抽象性和计算的繁琐性,学习兴趣不高,针对线性代数课程的这些特点,必须对现有的教学模式进行改革. 利用计算机软件辅助教学,既能提高教学效率,减轻学生计算负担,促进线性代数教学理论走向应用,又能锻炼和培养学生的数值计算能力,使得学生逐渐喜欢线性代数课程. 本文主要通过实例介绍MATLAB在线性代数教学中的应用.
1. 矩阵的基本运算
(1)矩阵的初等变换
在线性代数中,矩阵的初等变换是最基本也是最重要的一种运算,求矩阵的逆、矩阵的秩、判断向量组的线性相关性、解线性方程组等问题都离不开初等变换,而矩阵的初等变换相对比较繁琐,故教学过程中老师会省略很多步骤,这样不利于学生的学习,引入MATLAB可以方便解决此类问题.
初等变换包括行变换和列变换,下面重点介绍MATLAB在初等行变换中的命令,列变换命令类似. (I)交换矩阵A第i行和第j行,A([j,i],:)=A([i,j],:);(II)矩阵A第i行乘以k倍,A(i,:)=k*A(i,:);(III)将矩阵A第i行的k倍加到第j行上去,A(j,:)=k*A(i,:)+A(j,:) .
例1 设A = 0 -2 13 0 -2-2 3 0,用初等变换求A-1.
解 将(A,E)通过初等行变换化成(E,A-1),求得逆矩阵A-1. MATLAB程序和运行结果:
>> A=[0 -2 1;3 0 -2;-2 3 0];
>> B=[A,eye(3)];
>>B(2,:)=1*B(3,:)+B(2,:); B(3,:)=2*B(2,:)+B(3,:); B(3,:)=4*B(1,:)+B(3,:);
>>B(1,:)=2*B(3,:)+B(1,:); B(2,:)=(-3)*B(3,:)+B(2,:); B(2,:)=2*B(1,:)+B(2,:);
>> B([1,2],:)=B([2,1],:); B([3,2],:)=B([2,3],:)
执行后,输出结果为:
B = 1 0 0 6 3 4
0 1 0 4 2 3
0 0 1 9 4 6
即求得A-1 = 6 3 44 2 39 4 6
(2)矩陣的其他典型计算
矩阵A的典型计算还包括:矩阵的转置A′;方阵行列式det(A);矩阵逆inv(A);矩阵的秩rank(A);矩阵的行最简型rref(A). 例如例题1中的矩阵A,MATLAB命令det(A)、inv(A)分别得到运行结果是1和3.
2. 行列式与方程组求解
根据克拉默法则,若线性方程组系数行列式D ≠ 0,则方程组有唯一解. 当线性方程组为AX = B,则用矩阵左除X=A/B,即X = A-1B;当线性方程组为XA = B,则用矩阵右除X=B/A,即X = BA-1.
例2 当a取何值时,线性方程组
(1 - a)x1 - 2x2 + 4x3 = 12x1 + (3 - a)x2 + x3 = 4x1 + x2 + (1 - a)x3 = 2有唯一解?
解 当系数行列式不等于零时,方程组有唯一解. 因此,先求解a使得系数行列式等于零. MATLAB计算程序和运行结果:
syms a
format rat
>>A=[1-a,-2,4;2,3-a,1;1,1,1-a]; b=[1,4,2]'; >>D=det(A);
>>a0=solve(D)' %系数行列式等于零的根
>>X=A\b %利用左除求出方程组的符号解
>>X=subs(X,a,-1)' %特别的当时,方程组的根
执行后,输出结果为:
a0 =
[ 0, 2, 3]
X =
(- a^2 + 4*a + 2)/(a*(a^2 - 5*a + 6))
-(2*a - 1)^2/(a*(a^2 - 5*a + 6))
-((2*a - 1)*(a - 1))/(a*(a^2 - 5*a + 6))
X =
1/4 3/4 1/2
3. 向量组的线性相关性及方程组的通解
向量组的线性相关性的判断,需先将列向量矩阵化成行阶梯形,非零行非零首元所在列一定线性无关,MATLAB命令[R, s]=rref(A)可以快速完成行最简形计算, 其中R为A的行最简形矩阵;s是一个行向量,它的元素由R的非零行非零首元所在列号构成. 求方程组通解,除了用行最简形的方法,还可以用null(A, 'r')求齐次线性方程组Ax = 0的基础解系和x0 = A\b求非齐次线性方程组Ax = b的一个特解x0.
例3 设矩阵A = 1 2 1 -22 3 0 -11 -1 -5 7,求矩阵A的列向量组的一个最大无关组,并把不属于最大无关组的列向量用最大无关组线性表示.
解 MATLAB命令窗口中输入:
>>A=[1,2,1,-2;2,3,0,-1;1,-1,-5,7];
>> [R,s]=rref(A)
执行后,输出结果为:
R =
1 0 -3 4
0 1 2 -3
0 0 0 0
s = 1 2
记A = (a1,a2,a3,a4),由运行结果可知,列向量组的极大无关组为a1,a2,并且a3 = -3a1 + 2a2,a4 = 4a1 - 3a2.
解 根据线性方程组解结构,先求对应齐次方程通解,再求特解x0,输入MATLAB命令:
>>A=[1 -1 -1 1;1 -1 1 -3;1 -1 -2 3]; b=[0 1 -0.5]';
>>null(A, 'r')
>>x0=A\b
执行后,输出结果为:
ans =
1 1
1 0
0 2
0 1
x0 = [ 0 -1/4 0 -1/4]
即所求通解为x = k11100 + k21021 + 0-1/40-1/4,k1,k2∈R
4. 特征值和特征向量
求解方阵的特征值和特征向量时,很多同学解不出特征值,显然影响求解和理解特征向量. 应用MATLAB的命令[V, D]=eig(A)可以快速求解特征值特征向量,其中矩阵D为A的特征值所构成的对角阵,V的列向量为A的特征向量,与D中特征值一一对应. 从而可以节省更多时间来加深理解特征值和特征向量. 当矩阵A为对称阵时,还可用MATLAB命令[V, D]=schur(A)求特征值与特征向量.
例5 求矩阵A = 4 6 0-3 -5 0-3 -6 1的特征值和特征向量.
解 MATLAB命令窗口中輸入:
>>A=[4 6 0;-3 -5 0;-3 -6 1];
>> [V, D]=eig(A)
执行后,输出结果为:
V =
0 0.5774 -0.8944
0 -0.5774 0.4472
1.0000 -0.5774 0
D =
1 0 0
0 -2 0
0 0 1
上面的输出结果可以清楚地看出,特征值与特征向量是相对应的,而这一点在课堂学习中很容易被忽略.
MATLAB作为一种直观高效的计算软件,为线性代数教学提供了很好的平台,它的最大优点是数值计算功能强大,且易学易懂,运用MATLAB辅助教学,可以省去繁琐而易错的手工计算过程,更有利于在教学中突出重点,有效提高教学质量和效率. 如何在线性代数教学中应用MATLAB软件,而不改变线性代数整个理论体系,需要对现有的线性代数课程的教学体系、教学内容和教学方式进行深刻的改革,让MATLAB为线性代数教学和学生学习效率服务,既发挥MATLAB的软件优势,又凸显线性代数理论的主体地位.
【参考文献】
[1]同济大学应用数学系.工程数学线性代数[M].北京:高等教育出版社,2003.
[2]陈怀琛,龚杰明.线性代数实践及MATLAB入门[M].2 版.北京:电子工业出版社,2009.
[3]李绍刚,段复建等.线性代数中MATLAB实验教学的探索与实践[J].长春大学学报,2010,vol.20,No.6.