MATLAB 之特征值与特征向量、jordan标准形

实验六  特征值与特征向量、若当标准形

实验目的

1.了解特征值与特征向量基本概念及其性质;

2.了解若当标准型的基本概念;

3.学习、掌握MATLAB软件有关的命令。

实验准备

1.特征多项式

设A为n阶方阵, 如果数“ ”和n维列向量x使得关系式 成立, 则称 为方阵A的特征值, 非零向量x称为A对应于特征值“ ”的特征向量。

poly(A),返回矩阵A的特征多项式的向量表示形式,例如:

>> clear

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

>> p=poly(A)         %矩阵A的特征多项式的向量表示形式

p =

     1    -4     3

>> f=poly2str(p,’x’)     %矩阵A的特征多项式

f =

   x^2 – 4 x + 3

或者由定义出发,计算特征多项式.例如:

>> clear

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

>> E=eye(2);        %2阶单位阵

>> syms x

>> f=det(x*E-A)      %矩阵A的特征多项式

f =

 (x-1)*(x-3)

2.特征值与特征向量eigenvalue

求一个方阵的特征值与特征向量可以使用函数eig( ).

d=eig(A),  返回A所有特征值组成的列向量d.

[V,D]= eig(A),  返回A所有特征值组成的矩阵D和特征向量组成的矩阵V.

[V,D]= eigs(A), 返回A所有特征值(按大小次序)组成的对角矩阵D和特征向量组成的矩阵V,且满足D=V-1AV.

d=eig(A,B), 返回复数矩阵A+Bi所有特征值组成的向量d.

[V,D]= eig(A,B), 返回复数矩阵A+Bi所有特征值组成的矩阵D和特征向量组成的矩阵V.

例如:

>> clear

(>> format)(>> format rat)

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

>> d=eig(A)     %求矩阵A的特征值

d =

     1

    -1

     1

    -1

>> %特征值以列向量的形式输出,例如:

>> [V,D]=eig(A)      %求矩阵A的特征值与特征向量所组成的矩阵

V =

   -0.7071         0         0    0.7071

    0.7071         0         0    0.7071

         0   -0.7071    0.7071         0

         0    0.7071    0.7071         0

D =

    -1     0     0     0

     0    -1     0     0

     0     0     1     0

     0     0     0     1

>>%说明(1)矩阵D的主对角线上的元素为特征值,所以方阵A的特征值为-1(二重),1(二重).

>>%说明(2)特征值-1对应的特征向量为V中的第1、2列,即  (-0.7071 0.7071  0  0)T

 (0  0 -0.7071 0.7071)T   ,其中 为任意常数,

特征值1的特征向量为V中的第3、4列,即  (0  0  0.7071 0.7071)T

 ( 0.7071 0.7071  0  0)T   ,其中 为任意常数。

>> V=sym(V)      %以符号的形式输出矩阵V

V =

[ -sqrt(1/2),         0,          0,  sqrt(1/2)]

[ sqrt(1/2),          0,          0,  sqrt(1/2)]

[       0,   -sqrt(1/2),    sqrt(1/2),       0]

[       0,    sqrt(1/2),    sqrt(1/2),       0]

>> V^-1*A*V   %验证D=V^-1AV

 

ans =

[ -1,  0,  0,  0]

[  0, -1,  0,  0]

[  0,  0,  1,  0]

[  0,  0,  0,  1]

3.提高特征值的计算精度

函数  balance

格式  [T,B] = balance(A)   %求相似变换矩阵T和平衡矩阵B, 满足 

B = balance(A)      %求平衡矩阵B

4.实对称矩阵的对角化

实对称矩阵的对角化  [P,D]= eig(A)  D为对角化后的矩阵,P为正交阵.

在Matlab中,我们运用函数eig求出二次型矩阵A的特征值矩阵D和特征向量矩阵P,所求的矩阵D即为系数矩阵A的标准形,矩阵P即为二次型的变换矩阵.例如:

>> clear

>> A=[2 2 -2;2 5 -4;-2 -4 5];     %实对称矩阵A

 >> [P,D]=eig(A)      %矩阵A的对角化

P=

   -0.2981    0.8944    0.3333

   -0.5963   -0.4472    0.6667

   -0.7454         0   -0.6667

D =

    1.0000         0         0

         0    1.0000         0

         0         0   10.0000

4.若当标准形

若当标准型可用函数jordan( ) 来求.

J = jordan(A), 其中J为A的若当标准型。例如matlab代码:

>> clear

>> A=[2 1 0;-1 0 0;-1 1 2];    %矩阵A

>> jordan(A)      %矩阵A的若当标准形

运算结果为:

ans =

      2            0            0     

      0            1            1     

      0            0            1     

注意:Matlab中若当块是按上三角形定义的。

5.其他相关函数

矩阵的迹  trace(A)

将复对角矩阵转换为实对角矩阵  [V,D]=cdf2rdf(v,d)  在对角线上用2*2实数块代替共轭复数对.

矩阵元素求和函数 sum(A,dim),dim=1则按列求和,dim=2则按行求和

sum(sum(A,1),2)  返回矩阵A的所有元素之和.

矩阵元素求积函数 prod(A,dim),dim=1则按列求积,dim=2则按行求积。

prod(prod(A, 1),2)返回矩阵A的所有元素之积.

实验内容

6-1求矩阵 的特征值与特征向量

 

,并将其对角化. 

解一:

相应的matlab代码及运算结果如下:

>>clear

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

>> d=eig(A)        %求全部特征值所组成的向量

d =

   -1.0000

   -1.0000

5.0000

>> [V,D]=eig(A)     %求特征值及特征向量所组成的矩阵

V =

    0.6015    0.5522    0.5774

    0.1775   -0.7970    0.5774

   -0.7789    0.2448    0.5774

D =

   -1.0000         0         0

         0   -1.0000         0

         0         0    5.0000

>> inv(V)*A*V

ans =

   -1.0000         0   -0.0000

         0   -1.0000   -0.0000

   -0.0000    0.0000    5.0000

>> %A可对角化,且对角矩阵为D

解二:

相应的matlab代码及运算结果如下:

>> clear

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

>> p=poly(A)       %矩阵A的特征多项式的向量表示形式

p =

     1    -3    -9    -5

>> roots(f)        %矩阵A的特征多项式的根,即A的特征值

ans =

   5.0000         

  -1.0000 + 0.0000i

  -1.0000 – 0.0000i

解三:

相应的matlab代码及运算结果如下:

>> clear

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

>> E=eye(3);

>> syms x

>> f=det(x*E-A)      %矩阵A的特征多项式

f =

 x^3-3*x^2-9*x-5

>> solve(f)        %矩阵A的特征多项式的根,即A的特征值

ans =

  5

 -1

 -1

>> %所以A的特征值为x1=5,x2=x3=-1.

>> %(1)当x1=5时,求解(x1*E—A)X=0,得基础解系

>> syms y

>> y=5;

>> B=y*E-A;

>> b1=sym(null(B))      %b1为(x1*E—A)X=0基础解系

b1 =

 sqrt(1/3)

 sqrt(1/3)

 sqrt(1/3)

>>%所以b1是属于特征值5的特征向量在基下的坐标

>> %(2)当x2=-1时,求解(x2*E—A)X=0,得基础解系

>> y=-1;

>> B=y*E-A;

>> b2=sym(null(B))      %b1为(x2*E—A)X=0基础解系

null(A)齐次线性方程组   A*Z=0的基础解系:

 

b2 =

[  sqrt(2/3),          0]

[ -sqrt(1/6),    -sqrt(1/2)]

[ -sqrt(1/6),     sqrt(1/2)]

>> b21=b2(:,1),b22=b2(:,2)      

b21 =

  sqrt(2/3)

 -sqrt(1/6)

 -sqrt(1/6)

 b22 =

        0

 -sqrt(1/2)

  sqrt(1/2)

%b21,b22是属于特征值-1的特征向量在基下的坐标

>> T=[b1,b2]        %所有特征向量在基下的坐标所组成的矩阵

T =

[  sqrt(1/3),  sqrt(2/3),          0]

[  sqrt(1/3), -sqrt(1/6), -sqrt(1/2)]

[  sqrt(1/3), -sqrt(1/6),  sqrt(1/2)]

>> D=T^-1*A*T     %将矩阵A对角化,得对角矩阵D

D =

[  5,  0,  0]

[  0, -1,  0]

[  0,  0, -1]

6-2将矩阵 对角化,并将复对角矩阵转换为实对角矩阵

相应的matlab代码及运算结果如下:

>> clear

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

>> [v,d]=eig(A)      %求特征值及特征向量所组成的矩阵

v =

  -0.8018            -0.1572 + 0.3922i  -0.1572 – 0.3922i

   0.2673            -0.6814            -0.6814         

  -0.5345            -0.1048 – 0.5883i  -0.1048 + 0.5883i

d =

        0                  0                  0         

        0                  0 + 3.7417i        0         

        0                  0                  0 – 3.7417i

>> [V,D]=cdf2rdf(v,d)       %复对角矩阵转换为实对角矩阵

V =

   -0.8018   -0.1572    0.3922

    0.2673   -0.6814         0

   -0.5345   -0.1048   -0.5883

D =

         0         0         0

         0         0    3.7417

         0   -3.7417         0

>>%说明:在对角线上用2×2实数块代替共轭复数对,由D可知A的特征值为1,

3.7417i和-3.7417i.

>> V1=V(:,1),V2=V(:,2),V3=V(:,3);     %由V可知A的两个共轭特征向量为V2+ V3*i,即:

>> V2+V3*i

ans =

  -0.1572 + 0.3922i

  -0.6814         

  -0.1048 – 0.5883i

>> V2-V3*i

ans =

  -0.1572 – 0.3922i

  -0.6814         

  -0.1048 + 0.5883i

6-3求例6-1中矩阵A的迹,并验证 .

相应的matlab代码及运算结果如下:

>>clear

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

>> a=trace(A)      %求矩阵A的迹

a =

     3

>> d=eig(A)         %求矩阵A的特征值

d =

   -1.0000

   -1.0000

5.0000

>> b=sum(d,1)      %矩阵d元素求和

b =

     3

>>%说明:A的所有特征值之和为A的迹

>> e=det(A)

e =

     5

>> f=prod(d,1)       %矩阵d元素求积,即特征值求积

f =

     5

>>%说明:A的行列式值等于所有特征值乘积.

>>%(1)函数sum(A,dim)是矩阵元素求和函数,dim=1则按列求和,dim=2则按行求和。

>>%(2)函数prod(A,dim)是矩阵元素求积函数,dim=1则按列求积,dim=2则按行求积。

6-4求矩阵 的若当标准型。

 相应的matlab代码及运算结果如下:

>> clear

>> A=[-1 -2 6;-1 0 3;-1 -1 4]

A =

    -1    -2     6

    -1     0     3

-1    -1     4

>> J=jordan(A)        %矩阵A的若当标准形

J =

     1     1     0

     0     1     0

     0     0     1

>>%说明:Matlab中若当块是按上三角形定义的.

你可能感兴趣的:(MATLAB 之特征值与特征向量、jordan标准形)