我们知道,求解线性方程组是线性代数课程中的核心内容,而矩阵又在求解线性方程组的过程中扮演着举足轻重的角色。下面我们就利用科学计算软件MATLAB来演示如何使用矩阵,同时,也使学生对线性代数的认识更加理性。
一、矩阵的构造
在MatLab中,构造矩阵的方法有两种。一种是直接法,就是通过键盘输入的方式直接构造矩阵。另一种是利用函数产生矩阵。
例1.
利用
pascal
函数来产生一个矩阵
A=pascal(3)
A=
1
1 1
1
2 3
1
3 6
例2.
利用
magic
函数来产生一个矩阵
B=magic(3)
B=
8
1 6
3
5 7
4
9 2
例3.还可以利用函数产生一个4*3的
随机矩阵
>>
c=rand(4,3)
c=
0.9501 0.8913 0.8214
0.2311 0.7621 0.4447
0.6068 0.4565 0.6154
0.4860
0.0185 0.7919
例4.利用直接输入法可产生列矩阵、行矩阵及常数
u=[3;1;4]
u=
3
1
4
v=[2 0 -1]
v=
2
0 -1
s=7
s=
7
二、矩阵的基本运算
1、四则运算
例5.矩阵的加法
X=A+B
X=
9
2 7
4
7 10
5
12 8
例6.矩阵的减法
Y=X-A
Y=
8
1 6
3
5 7
4
9 2
注: 若二个矩阵的大小不完全相同,则会出错!
例如,X=A+u
??? Error using ==> plus
Matrix dimensions must agree。
例7.矩阵的乘法
X=A*B
X=
15
15 15
26
38 26
41
70 39
注: 若第一个矩阵的列数和第二个矩阵行数不相同,这两个矩阵就不可以相乘。
例如,X=A*v
??? Error using ==> mtimes
Inner matrix dimensions must agree。
在
MATLAB
中
,
矩阵的除法有两个运算符号
,
分别为左除“
/
”与右除“
/
”
,
矩阵的右除运算速度要慢一点
,
而左除运算可以避免奇异矩阵的影响
,
它们的作用主要用于求解线性方程组
,
我们在后面会涉及到矩阵的除法。
2、矩阵的转置、逆运算及行列式运算
与线性代数中一样
,
矩阵的转置只需用符号“
,
”来表示即可。
例8.求矩阵B的转置
X=B'
X=
8
3 4
1
5 9
6
7 2
线性代数中求矩阵逆的运算非常复杂
,
而在
MATLAB
中
,
矩阵的逆运算只需要函数“
inv
”来实现
,
这大大简化了计算过程。
例9.求矩阵A的逆
X=inv(A)
X=
3
-3 1
-3
5 -2
1
-2 1
在
MATLAB
中
,
求矩阵的行列式大小
,
可用函数“
det
”实现。
例10.求矩阵A的行列式
X=det(A)
X=
1
注
:
在求矩阵的逆和行列式时
,
一定要求矩阵是一个方阵
,
否则会出错
!
例如,>>X=inv(u)
??? Error using ==> inv
Matrix must be square。
再如,X=det(u)
??? Error using ==> det
Matrix must be square。
三、矩阵的常用函数运算
1.矩阵的特征值运算
在线性代数中,计算矩阵特征值及特征向量的过程相当麻烦,
但在
MATLAB
中
,
矩阵特征值运算只需要函数“
eig
”或“
eigs
”即可。
例11.求矩阵A的特征值及特征向量
>>[b,c]=eig(A)
b=
-0.5438 -0.8165 0.1938
0.7812 -0.4082 0.4722
-0.3065 0.4082 0.8599
c=
0.1270 0 0
0 1.0000 0
0 0 7.8730
上例中的
b
、
c
矩阵分别为特征向量矩阵和特征值矩阵。
2.矩阵的秩运算
矩阵的秩在求解线性方程组中应用非常广泛,而在线性代数中计算矩阵的秩也非常复杂,
但在
MATLAB
中
,
矩阵的秩只需要用函数“
rank
”即可。
例12.求矩阵A的秩
>>x=rank(A)
x=
3
3.矩阵的正交化运算
在
MATLAB
中
,
矩阵的正交化运算可由函数“
orth
”计算得到。下面的例子用来求矩阵的一组正交基,有了正交基就可以对矩阵进行正交化了。
例13.求矩阵A的正交基
>>x=orth(A)
x=
-0.1938 0.8165 0.5438
-0.4722 0.4082 -0.7812
-0.8599 -0.4082 0.3065
4.矩阵的迹运算
矩阵的迹是指矩阵主对角线上所有元素的和
,
在
MATLAB
中
,
矩阵的迹可由函数“
trace
”计算得到。
例14.求矩阵A的迹
>>x=trace(A)
x=
9
四、特殊矩阵的生成
MATLAB中提供了几个特殊矩阵,主要包括如下:
1.空矩阵
空矩阵用“
[]
”表示
,
空矩阵的大小为零
,
但变量名存在于工作空间中。
例15
>>[]
ans=
[]
2.单位矩阵
在
MATLAB
中
,
单位矩阵可用函数“
eye(n,m)
”实现
,
其中
n
表行数
,m
表列数。
例16
>>x=eye(4,3)
x=
1 0 0
0 1 0
0 0 1
0 0 0
3.全部元素为1的矩阵
在
MATLAB
中
,
全部元素为
1
的矩阵可用函数“
ones(n,m)
”实现。
例17
>>x=ones(4,3)
x=
1 1 1
1 1 1
1 1 1
1
1 1
4.全部元素为0的矩阵
在
MATLAB
中
,
全部元素为
0
的矩阵可用函数“
zeros(n,m)
”实现。
例18
>>x=zeros(4,3)
x=
0 0 0
0 0 0
0 0 0
0
0 0
5.魔方矩阵
魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。
MATLAB
提供了求魔方矩阵的函数“
magic(n)
”,其功能是生成一个
n
阶魔方阵。
6.
伴随矩阵
在
MATLAB
中
,
某个矩阵的伴随矩阵可用函数“
compan(A)
”实现。
例20
>>u=[1 0 -7 6];
>>x=compan(u)
x=
0 7 -6
1 0 0
0
1 0
注:
函数
compan()
中的变量必须是向量形式
,
而不能是矩阵。
7.随机矩阵
随机矩阵在数理统计的研究中非常重要
,
它们表示元素服从某个分布如均匀分布、正态分布的矩阵。在
MATLAB
中
,
随机矩阵可用函数“
rand(n,m)
”实现。
例21
>>x=rand(4,3)
x=
0.9501 0.8913 0.8214
0.2311 0.7621 0.4447
0.6068 0.4565 0.6154
0.4860
0.0185 0.7919
8.帕斯卡矩阵
我们知道,二次项 展开后的系数随n的增大组成一个三角形表,称为
杨辉三角形。
由杨辉三角形表组成的矩阵称为帕斯卡
(Pascal)
矩阵
,
函数
pascal(n)
生成一个
n
阶帕斯卡矩阵。
例22
>>x=pascal(3)
x=
1 1 1
1 2 3
1 3 6
9.范得蒙矩阵
在
MATLAB
中,函数
vander(V)
生成以向量
V
为基础向量的范得蒙矩阵。