Matlab : 矩阵分析和处理


<Matlab 科学计算学习笔记>

6、 矩阵的特征值和向量

计算矩阵A的特征值和特征向量的函数是eig(A)和eigs(A):
1、E = eig(A) :求矩阵A的全部特征值,构成向量E。
2、[V,D] = eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。
3、[V,D] = eig(A,‘nobalance’):与第二种相似,但是第2种先对A作相似变换,后求特征值特征向量,本格式直接求。

举例:

>> A = round(5*randn(5))
A =

     3    -7    -7    -1     3
     9    -2    15    -1    -6
   -11     2     4     7     4
     4    18     0     7     8
     2    14     4     7     2
     
>>E = eig(A)

E =

   5.7121 + 6.6770i
   5.7121 - 6.6770i
   3.6615 + 0.0000i
  -8.1008 + 0.0000i
  -3.9849 + 0.0000i

>> [V,D] = eig(A)

V =

  -0.1100 - 0.1052i  -0.1100 + 0.1052i   0.6517 + 0.0000i  -0.3212 + 0.0000i   0.4973 + 0.0000i
  -0.0691 + 0.0208i  -0.0691 - 0.0208i   0.2243 + 0.0000i   0.6203 + 0.0000i   0.0734 + 0.0000i
   0.1427 - 0.2190i   0.1427 + 0.2190i  -0.3318 + 0.0000i   0.2185 + 0.0000i  -0.5902 + 0.0000i
   0.0983 - 0.6405i   0.0983 + 0.6405i  -0.5533 + 0.0000i  -0.1969 + 0.0000i   0.6309 + 0.0000i
   0.6953 + 0.0000i   0.6953 + 0.0000i   0.3297 + 0.0000i   0.6524 + 0.0000i   0.0303 + 0.0000i


D =

   5.7121 + 6.6770i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   5.7121 - 6.6770i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i   3.6615 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i  -8.1008 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i  -3.9849 + 0.0000i


6.1、示例
A是一个矩阵,poly(A)表示生成矩阵A的特征多项式|λI -A|

A = [3,1,4,1;5,9,2,6;5,3,5,8;9,7,9,3]                                       %   矩阵A
p = poly(A)                                                                 %   求矩阵A多项式系数                                     
y = poly2sym(p)                                                             %   把多项式系数转化成手写多项式
R = roots(p)                                                                %   求特征多项式的解,就是特征值

matlab 运行结果:
A =

     3     1     4     1
     5     9     2     6
     5     3     5     8
     9     7     9     3


p =

    1.0000  -20.0000  -16.0000  480.0000   98.0000

 
y =
 
x^4 - 20*x^3 - 16*x^2 + 480*x + 98
 

R =

   19.5494
    5.3052
   -4.6514
   -0.2031

上述求解矩阵A的特征值,可以直接使用eig(A)

[E,R] = eig(A)
Matlab 运行结果
E =

   -0.1971    0.2690   -0.7834    0.3292
   -0.5470   -0.3087    0.2910   -0.8582
   -0.5231   -0.6076    0.5487    0.3717
   -0.6231    0.6806    0.0237    0.1303


R =

   19.5494         0         0         0
         0   -4.6514         0         0
         0         0   -0.2031         0
         0         0         0    5.3052

7、矩阵初等变化及二次型

7.1、求行阶梯矩阵及向量组的基

1)行阶梯矩阵使用初等变换化为行最简形式,从而找到列向量组的一个最大无关组。
2)Maltab 将矩阵化成最简的命令:rref

  • R = rref(A):用高斯一约当消元法和行主元法求A的行最简形矩阵R。
  • [R,jb] = rref(A):jb 是一个向量,其含义r = length(jb)为A的秩,A(:,jb)为A的列向量基,jb中元素表示基向量所在的列。
例:求下列向量组的一个最大无关组
a1 = (1,-2,2,3), a2= (-2,4,-1,3), a3 = (-1,2,0,3), a4 = (0,6,2,3),a5 = (2,-6,3,4).

程序:
a1 = [1,-2,2,3]';
a2 = [-2,4,-1,3]';
a3 = [-1,2,0,3]';
a4 = [0,6,2,3]';
a5 = [2,-6,3,4]';

A = [a1,a2,a3,a4,a5]                                                        %   构成五个向量矩阵
[R,jb] = rref(A)                                                            %   用高斯一约当消元法和行主元法求A的最简矩阵R
jdwgz = A(:,jb)                                                             %   获得矩阵A的极大线性无关组

Matlab 运行结果
A =

     1    -2    -1     0     2
    -2     4     2     6    -6
     2    -1     0     2     3
     3     3     3     3     4


R =

    1.0000         0    0.3333         0    1.7778
         0    1.0000    0.6667         0   -0.1111
         0         0         0    1.0000   -0.3333
         0         0         0         0         0


jb =

     1     2     4


jdwgz =

     1    -2     0
    -2     4     6
     2    -1     2
     3     3     3

从运行结果看,a1,a2,a4为向量组的一个基,即为向量组的一个极大无关组。

7.2、正交基、正交矩阵

如果矩阵Q满足 :QQ’ = I, Q’Q = I,那么Q为正交矩阵,求正交矩阵函数orth().格式 Q = Orth(A), 其中A为非奇异矩阵。

例子:
A = [4,0,0;0,3,1;0,1,3];                                                    
r = rank(A)
Q = orth(A)                                                                 % 	求正交矩阵
B = Q'* Q                                                                   % 	验证 Q'Q = I
E= norm(eye(r) - Q'*Q,'fro')                                                %   在合理误差界限内验证基向量 Q是正交、归一化向量

matlab 运行结果
r =

     3


Q =

         0    1.0000         0
   -0.7071         0   -0.7071
   -0.7071         0    0.7071


B =

    1.0000         0    0.0000
         0    1.0000         0
    0.0000         0    1.0000


E =

   4.0877e-16

7.3、正定矩阵

正定矩阵是对称矩阵的基础上建立起来的概念。如果一个对称矩阵所有的主子行列式均为正数,则称该矩阵为正定矩阵,如果所有主子式均为非负的数值,则称为半正定矩阵。

格式 [D,p] = chol(A):若 p =0,则A为正定矩阵,其中D为矩阵A的cholesky分解矩阵;若p>0,则A为非正定矩阵,p为正数,表示分解失败的主元位置的索引。

例子1:判断A是不是正定矩阵
A = [1,-1,0;-1,2,1;0,1,3];
[D,p] = chol(A)

matlab 运行结果:
D =

    1.0000   -1.0000         0
         0    1.0000    1.0000
         0         0    1.4142


p =

     0

A矩阵为正定矩阵

例子2:判断B是不是正定矩阵
B = [2,-2,0;-2,1,-2;0,-2,0];
[D,p] = chol(B)

matlab 运行结果
D =

    1.4142


p =

     2
    
结论: B矩阵不是正定矩阵

7.4、矩阵的对角化

n * n 矩阵对角化的条件是A具有n个线性无关的特征向量。如果存在一个可逆矩阵P使得P(-1)AP是对角矩阵,则它被称为可对角化的。

例子:求下列实矩阵是否可以相似对角化,若可相似对角化,求出可逆矩阵P和对角矩阵D,使得P(-1)AP是对角矩阵。
A = [11,-6,4,-10,-4;-3,5,-2,4,1;-8,12,-3,12,4;1,6,-2,3,-1;8,-18,8,-14,-1];

代码
A = [11,-6,4,-10,-4;-3,5,-2,4,1;-8,12,-3,12,4;1,6,-2,3,-1;8,-18,8,-14,-1]
[V,D] = eig(A)
r = rank(A)

Matlab 运行结果
A =

    11    -6     4   -10    -4
    -3     5    -2     4     1
    -8    12    -3    12     4
     1     6    -2     3    -1
     8   -18     8   -14    -1


V =

    0.3244   -0.6922    0.0408    0.5536    0.0086
   -0.1622    0.1831    0.1280   -0.2955   -0.1880
   -0.6489    0.5493    0.3840   -0.5161    0.3588
   -0.1622   -0.1428    0.4248    0.3330    0.5554
    0.6489   -0.4065   -0.8088    0.4785   -0.7262


D =

    3.0000         0         0         0         0
         0    5.0000         0         0         0
         0         0    5.0000         0         0
         0         0         0    1.0000         0
         0         0         0         0    1.0000


r =

     5

2、代码
A1 = 3*eye(rank(A)) - A;                                                    %   求特征值3所对应的基础解系
x1 = null(A1,'r')
A2 = 5*eye(rank(A)) - A;                                                    %   求特征值5所对应的基础解系
x2 = null(A2,'r')
A3 = 1*eye(rank(A)) - A;                                                    %   求特征值1所对应的基础解系
x3 = null(A3,'r')
 
 matlab 运行结果
 x1 =

    0.5000
   -0.2500
   -1.0000
   -0.2500
    1.0000


x2 =

    2.0000    1.0000
   -0.3333   -0.3333
   -1.0000   -1.0000
    1.0000         0
         0    1.0000


x3 =

    0.8000    0.6000
   -0.6000   -0.2000
   -0.4000   -0.8000
    1.0000         0
         0    1.0000

基础解系中解的数等于特征根重数,可对角化。

对角矩阵
inv(V)*A*V
ans =

    3.0000    0.0000    0.0000   -0.0000   -0.0000
    0.0000    5.0000   -0.0000    0.0000   -0.0000
    0.0000   -0.0000    5.0000    0.0000   -0.0000
    0.0000   -0.0000   -0.0000    1.0000    0.0000
   -0.0000    0.0000    0.0000   -0.0000    1.0000


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值