APP下载

MATLAB在线性代数课程中的应用

2014-04-29欧阳异能杨婷

数学学习与研究 2014年10期
关键词:线性方程组特征值矩阵

欧阳异能 杨婷

【摘要】 结合线性代数课程特点,引入计算软件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.

猜你喜欢

线性方程组特征值矩阵
一类带强制位势的p-Laplace特征值问题
求解非线性方程组的Newton迭代与Newton-Kazcmarz迭代的吸引域
单圈图关联矩阵的特征值
初等行变换与初等列变换并用求逆矩阵
基于商奇异值分解的一类二次特征值反问题
线性方程组解的判别
矩阵
矩阵
矩阵
保护私有信息的一般线性方程组计算协议