0%

MATLAB矩阵的分析

方阵的行列式

MATLAB语言用det()函数求解方阵的行列式的值。

举个栗子

>> A=[1 0 1;2 1 0;0 2 1]

A =

1 0 1
2 1 0
0 2 1

>> D=det(A)

D =

5

矩阵的秩和迹

矩阵的秩

与矩阵线性无关的行数或列数称为矩阵的秩。MATLAB语言用rank()函数求解矩阵的秩。

举个栗子

>> A=[1 0 1;2 1 0;0 2 1]

A =

1 0 1
2 1 0
0 2 1

>> X=rank(A)

X =

3

方阵的迹

一个方阵的迹等于方阵的对角线元素之和,也等于方阵的特征值之和。MATLAB语言用trace()函数求解方阵的迹。

举个栗子

>> A=[1 0 1;2 1 0;0 2 1]

A =

1 0 1
2 1 0
0 2 1

>> x=trace(A)

x =

3

矩阵的逆和伪逆

方阵的逆矩阵

对于一个方阵A,如果存在一个同阶方阵B,使得A*B=B*A=I(I为单位矩阵),则称B为A的逆矩阵,A也为B的逆矩阵。MATLAB语言用inv()函数求解一个方阵的逆矩阵。

>> A=[1 0 1;2 1 0;0 2 1]

A =

1 0 1
2 1 0
0 2 1

>> B=inv(A)

B =

0.2000 0.4000 -0.2000
-0.4000 0.2000 0.4000
0.8000 -0.4000 0.2000

>> A*B

ans =

1 0 0
0 1 0
0 0 1

矩阵的伪逆矩阵

如果矩阵A不是一个方阵,或者A为非满秩矩阵,那么就不存在逆矩阵,但可以求广义上的逆矩阵,称为伪逆矩阵。MATLAB语言用pinv()函数求解伪逆矩阵。

举个栗子

>> A=[1 0 1;2 1 0]

A =

1 0 1
2 1 0

>> B=pinv(A)

B =

0.1667 0.3333
-0.3333 0.3333
0.8333 -0.3333

附注

在线性代数中,可以用矩阵求逆的方法求解线性方程组的解。

举个栗子

求解如下线性方程组。

>> a=[1 -1 1;3 1 -1;1 1 1];
>> b=[3;6;4];
>> x=inv(a)*b

x =

2.2500
0.5000
1.2500

矩阵的特征值和特征向量

设A为n阶方阵,使得等式Av=Dv成立,则D称为A的特征值,向量v称为A的特征向量。MATLAB语言用eig()函数求解方阵的特征值和特征向量,常用的两种格式:

  • E=eig(A)求解方阵A的特征值,构成向量E;
  • [v,D]=eig(A)求解方阵A的特征值,构成对角矩阵,并求解A的特征向量v。

举个栗子

>> A=[1 1 1;1 0 0.25;0.5 0.25 2];
>> [v,D]=eig(A)

v =

0.5334 -0.6834 0.6435
-0.8456 -0.5326 0.3174
-0.0211 0.4992 0.6966


D =

-0.6246 0 0
0 1.0488 0
0 0 2.5758

>> A*v

ans =

-0.3332 -0.7168 1.6574
0.5282 -0.5586 0.8176
0.0132 0.5236 1.7942

>> v*D

ans =

-0.3332 -0.7168 1.6574
0.5282 -0.5586 0.8176
0.0132 0.5236 1.7942

附注

特征值还可应用于求解一元多次方程的根。先将方程的多项式系数组成行向量a,然后用compan()函数构造成伴随矩阵A,最后再用eig()函数求解A的特征值,该特征值就是方程的根。

举个栗子

求解如下的一元多次方程。

>> a=[1 -5 5 5 -6 0];
>> A=compan(a);
>> x1=eig(A)

x1 =

0
3.0000
2.0000
1.0000
-1.0000

矩阵的信息获取函数

size()函数

MATLAB语言可以用size()函数来获取矩阵的行数和列数。函数的调用方式如下:

  • D=size(A)返回一个由行数和列数构成的两个元素的行向量
  • [M,N]=size(A)返回矩阵A的行数为M,列数为N

举个栗子

>> A=[1 2 3;4 5 6]

A =

1 2 3
4 5 6

>> D=size(A)

D =

2 3

>> [M,N]=size(A)

M =

2


N =

3

length()函数

MATLAB语言可以用length()函数来获取矩阵的行数和列数的较大者。函数的调用方式如下:

  • d=length(A)

举个栗子

>> A=[1 2 3;4 5 6]

A =

1 2 3
4 5 6

>> d=length(A)

d =

3

numel()函数

MATLAB语言可以用numel()函数来获取矩阵的元素的总个数。函数的调用方式如下:

  • n=numel(A)

举个栗子

>> A=[1 2 3;4 5 6]

A =

1 2 3
4 5 6

>> n=numel(A)

n =

6