基于MATLAB的特征值与特征向量(附完整代码)

目录

一. 一般矩阵的特征值与特征向量

例题1

二. 广义特征向量问题

例题2

三.稀疏矩阵的最大特征值

例题3


一. 一般矩阵的特征值与特征向量

A为n阶矩阵,若数\lambda和向量x满足Ax=\lambda x,那么数\lambda称为A的特征值,x称为A对应于特征值\lambda特征向量。如果把式子改写成(A-\lambda E)x=0,那么|A-\lambda E|就叫做A的特征多项式

在MATLAB中,求解特征值和特征向量,格式如下:

[V,D]=eig(A)

备注:该函数也可以只求一个量

例题1

利用两种方法求矩阵A的特征值与特征向量,并验证其对应的范数误差。

A=\begin{bmatrix}16&2&3&13\\ 5&11&10&8\\ 9&7&6&12\\ 4&14&15&1\\ \end{}

解:

MATLAB代码如下:

clc;clear;
A=[16 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1];

%直接求解
[v,d]=eig(A)
norm1=norm(A*v-v*d)

%解析解
[v,d]=eig(sym(A))
norm2=norm(double(A*v(:,2)-34*v(:,2))) %double函数转换为双精度类型

运行结果:

v =

   -0.5000   -0.8236    0.3764   -0.2236
   -0.5000    0.4236    0.0236   -0.6708
   -0.5000    0.0236    0.4236    0.6708
   -0.5000    0.3764   -0.8236    0.2236


d =

   34.0000         0         0         0
         0    8.9443         0         0
         0         0   -8.9443         0
         0         0         0   -0.0000


norm1 =1.2284e-14

 
v =
[ -1, 1, (12*5^(1/2))/31 - 41/31, - (12*5^(1/2))/31 - 41/31]
[ -3, 1,  17/31 - (8*5^(1/2))/31,    (8*5^(1/2))/31 + 17/31]
[  3, 1, - (4*5^(1/2))/31 - 7/31,     (4*5^(1/2))/31 - 7/31]
[  1, 1,                       1,                         1]
 
 
d =
[ 0,  0,          0,         0]
[ 0, 34,          0,         0]
[ 0,  0, -4*5^(1/2),         0]
[ 0,  0,          0, 4*5^(1/2)]
 

norm2 =0

二. 广义特征向量问题

广义特征向量的表达式,如下:

Ax=\lambda Bx

如果上式子中的B=I,那么就是普通矩阵特征值问题。求解广义特征值与特征向量的MATLAB格式如下:

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

很遗憾的是,符号运算工具箱中的eig()函数不支持广义特征值的相关运算。

例题2

求A,B的广义特征值与特征向量矩阵。

A=\begin{bmatrix}5&7&6&5\\ 7&10&8&7\\ 6&8&10&9\\ 5&7&9&10\\ \end{}A=\begin{bmatrix}2&6&-1&-2\\ 5&-1&2&3\\ -3&-4&1&10\\ 5&-2&-3&8\\ \end{}

解:

MATLAB代码如下:

clc;clear;
A=[5 7 6 5;7 10 8 7;6 8 10 9;5 7 9 10];
B=[2 6 -1 -2;5 -1 2 3;-3 -4 1 10;5 -2 -3 8];
[V,D]=eig(A,B)

norm(A*V-B*V*D)

运行结果:

V =

   0.3697 + 0.0000i  -0.3741 + 0.6259i  -0.3741 - 0.6259i   1.0000 + 0.0000i
   0.9948 + 0.0000i  -0.0674 - 0.2531i  -0.0674 + 0.2531i  -0.6090 + 0.0000i
   0.7979 + 0.0000i   0.9239 + 0.0264i   0.9239 - 0.0264i  -0.2316 + 0.0000i
   1.0000 + 0.0000i  -0.6599 - 0.3263i  -0.6599 + 0.3263i   0.1319 + 0.0000i


D =

   4.7564 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0471 + 0.1750i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0471 - 0.1750i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i  -0.0037 + 0.0000i


ans =

   3.3761e-14

三.稀疏矩阵的最大特征值

计算稀疏矩阵k个模最大特征值,MATLAB格式如下:

d=eigs(A,k)

同时计算最大特征值与特征向量,MATLAB格式如下:

[V,D]=eigs()

例题3

利用delsq和numgrid函数生成稀疏矩阵,求该稀疏矩阵的六个模最大特征值,并分析该方法的误差。

解:

MATLAB代码如下:

clc;clear;
A=delsq(numgrid('C',15));
%生成稀疏矩阵,这个稀疏矩阵有点复杂,感兴趣的小伙伴可自行查找下 delsq和numgrid函数
[v,d]=eigs(A,6) %6代表6个模
norm=norm(A*v-v*d)

运行结果:

d =

    7.8666         0         0         0         0         0
         0    7.7324         0         0         0         0
         0         0    7.6531         0         0         0
         0         0         0    7.5213         0         0
         0         0         0         0    7.4480         0
         0         0         0         0         0    7.3517


norm =

   1.4182e-14
特征向量的结果较长,此处仅显示一部分。

猜你喜欢

转载自blog.csdn.net/forest_LL/article/details/124287078
今日推荐