基于MATLAB的特征值与特征向量(附完整代码) 您所在的位置:网站首页 jacobi求矩阵特征值例题 基于MATLAB的特征值与特征向量(附完整代码)

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

2024-02-06 20:52| 来源: 网络整理| 查看: 265

目录

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

例题1

二. 广义特征向量问题

例题2

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

例题3

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

数学理论部分,推荐阅读:

利用矩阵特征值解决微分方程【1】-CSDN博客

矩阵特征值解决微分方程问题【2】-CSDN博客

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{bmatrix}

解:

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{bmatrix}A=\begin{bmatrix}2&6&-1&-2\\ 5&-1&2&3\\ -3&-4&1&10\\ 5&-2&-3&8\\ \end{bmatrix}

解:

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 特征向量的结果较长,此处仅显示一部分。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有