171023_矩阵特征值和矩阵函数

来源:互联网 发布:pdb数据库 编辑:程序博客网 时间:2024/05/22 17:18

在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有5种:

  1. E=eig(A):求矩阵A的全部特征值,构成向量E。
  2. [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。
  3. [V,D]=eig(A,'nobalance'):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。
  4. E=eig(A,B):由eig(A,B)返回N×N阶方阵A和B的N个广义特征值,构成向量E
  5. [V,D]=eig(A,B):由eig(A,B)返回方阵A和B的N个广义特征值,构成N×N阶对角阵D,其对角线上的N个元素即为相应的广义特征值,同时将返回相应的特征向量构成N×N阶满秩矩阵,且满足AV=BVD。

eig

Find eigenvalues and eigenvectors
Syntax

d = eig(A)
d = eig(A,B)
[V,D] = eig(A)
[V,D] = eig(A,'nobalance')
[V,D] = eig(A,B)
[V,D] = eig(A,B,flag)

d = eig(A)和 [V,D] = eig(A) 最为常用,注意,第一列为对应第一个特征值的特征向量。


4.1.1    特征值和特征向量的求取

【例4.3.1-1】简单实阵的特征值问题。

A=[1,-3;2,2/3];[V,D]=eig(A) 

V =

   0.7746             0.7746         

   0.0430 - 0.6310i   0.0430 + 0.6310i

D =

   0.8333 + 2.4438i        0         

        0             0.8333 - 2.4438i  

 

【例4.3.1-2】本例演示:如矩阵中有元素与截断误差相当时的特性值问题。

A=[3          -2         -0.9      2*eps

  -2          4         -1       -eps

  -eps/4      eps/2     -1        0

  -0.5       -0.5        0.1      1 ];

[V1,D1]=eig(A);ER1=A*V1-V1*D1

[V2,D2]=eig(A,'nobalance');ER2=A*V2-V2*D2 

ER1 =

    0.0000   0.0000    0.0000    0.0000

         0  -0.0000   -0.0000   -0.0000

    0.0000  -0.0000   -0.0000    0.0000

    0.0000   0.0000    0.0000   -0.5216

ER2 =

  1.0e-014 *

   -0.2665   0.0111   -0.0559   -0.1055

    0.4441   0.1221    0.0343    0.0833

    0.0022   0.0002    0.0007         0

    0.0194  -0.0222    0.0222    0.0333  

 

 

【例4.3.1-3】指令eigeigs的比较。

rand('state',1),A=rand(100,100)-0.5;

t0=clock;[V,D]=eig(A);T_full=etime(clock,t0)

options.tol=1e-8;

options.disp=0;

t0=clock;[v,d]=eigs(A,1,'lr',options);

T_part=etime(clock,t0)

[Dmr,k]=max(real(diag(D)));

d,D(1,1)  

T_full=

    0.2200

T_part =

    3.1300

d =

   3.0140 + 0.2555i

ans =

   3.0140 + 0.2555i  

 

vk1=V(:,k);

vk1=vk1/norm(vk1);v=v/norm(v);

V_err=acos(norm(vk1'*v))*180/pi

D_err=abs(D(k,k)-d)/abs(d) 

V_err =

  1.2074e-006

D_err =

  4.2324e-010  

 

 

4.1.2    特征值问题的条件数

【例4.3.2-1】矩阵的代数方程条件数和特征值条件数。

B=eye(4,4);B(3,4)=1;B

format short e,c_equ=cond(B),c_eig=condeig(B)  

B =

     1    0     0     0

     0    1     0     0

     0    0     1     1

     0    0     0     1

c_equ =

  2.6180e+000

Warning: Matrix is close to singular or badly scaled.

         Results may beinaccurate. RCOND = 1.110223e-016.

> In D:\MATLAB6P1\toolbox\matlab\matfun\condeig.m at line 30

c_eig =

  1.0000e+000

  1.0000e+000

  4.5036e+015

  4.5036e+015  

 

 

【例4.3.2-2】对亏损矩阵进行Jordan分解。

A=gallery(5)

[VJ,DJ]=jordan(A);

[V,D,c_eig]=condeig(A);c_equ=cond(A);

DJ,D,c_eig,c_equ  

A =

          -9          11         -21          63        -252

          70         -69         141        -421        1684

        -575         575       -1149        3451      -13801

        3891       -3891        7782      -23345       93365

        1024       -1024        2048       -6144       24572

DJ =

     0    1     0     0    0

     0    0     1     0    0

     0    0     0     1    0

     0    0     0     0    1

     0    0     0     0    0

D =

  Columns 1 through 4

  -0.0408                  0                  0                  0         

        0            -0.0119 + 0.0386i        0                  0         

        0                  0            -0.0119 - 0.0386i        0         

        0                  0                  0             0.0323 + 0.0230i

        0                  0                  0                  0         

  Column 5

        0         

        0         

        0         

        0         

   0.0323 - 0.0230i

c_eig =

  1.0e+010 *

    2.1293

    2.0796

    2.0796

    2.0020

    2.0020

c_equ =

  2.0253e+018  

 

 

4.1.3    复数特征值对角阵与实数块特征值对角阵的转化

【例4.3.3-1】把例4.3.1-1中的复数特征值对角阵D转换成实数块对角阵,使VR*DR/VR=A。

A=[1,-3;2,2/3];[V,D]=eig(A);

[VR,DR]=cdf2rdf(V,D) 

VR =

    0.7746         0

    0.0430   -0.6310

DR =

    0.8333   2.4438

   -2.4438   0.8333 

 

4.1.4    矩阵的谱分解和矩阵函数

【例4.3.4-1】数组乘方与矩阵乘方的比较。

clear,A=[1 2 3;4 56;7 8 9];

A_Ap=A.^0.3

A_Mp=A^0.3 

A_Ap =

    1.0000   1.2311    1.3904

    1.5157   1.6207    1.7118

    1.7928   1.8661    1.9332

A_Mp =

   0.6962 + 0.6032i   0.4358 + 0.1636i   0.1755 - 0.2759i

   0.6325 + 0.0666i   0.7309 + 0.0181i   0.8292 - 0.0305i

   0.5688 - 0.4700i   1.0259 - 0.1275i   1.4830 + 0.2150i 

 

 

【例4.3.4- 2】标量的数组乘方和矩阵乘方的比较。(A取自例4.3.4-1)

pA_A=(0.3).^A

pA_M=(0.3)^A 

pA_A =

    0.3000   0.0900    0.0270

    0.0081   0.0024    0.0007

    0.0002   0.0001    0.0000

pA_M =

    2.9342   0.4175   -1.0993

   -0.0278   0.7495   -0.4731

   -1.9898  -0.9184    1.1531  

 

【例4.3.4-3】sin的数组运算和矩阵运算比较。(A取自例4.3.4-1)

A_sinA=sin(A)

A_sinM=funm(A,'sin') 

A_sinA =

    0.8415   0.9093    0.1411

   -0.7568  -0.9589   -0.2794

    0.6570   0.9894    0.4121

A_sinM =

   -0.6928  -0.2306    0.2316

   -0.1724  -0.1434   -0.1143

0.3479   -0.0561   -0.4602  

 

 



原创粉丝点击