基于MATLAB的特征值与特征向量(附完整代码) | 您所在的位置:网站首页 › jacobi求矩阵特征值例题 › 基于MATLAB的特征值与特征向量(附完整代码) |
目录 一. 一般矩阵的特征值与特征向量 例题1 二. 广义特征向量问题 例题2 三.稀疏矩阵的最大特征值 例题3 一. 一般矩阵的特征值与特征向量数学理论部分,推荐阅读: 利用矩阵特征值解决微分方程【1】-CSDN博客 矩阵特征值解决微分方程问题【2】-CSDN博客 A为n阶矩阵,若数和向量x满足,那么数称为A的特征值,x称为A对应于特征值的特征向量。如果把式子改写成,那么就叫做A的特征多项式。 在MATLAB中,求解特征值和特征向量,格式如下: [V,D]=eig(A)备注:该函数也可以只求一个量 例题1利用两种方法求矩阵A的特征值与特征向量,并验证其对应的范数误差。 解: 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 二. 广义特征向量问题广义特征向量的表达式,如下: 如果上式子中的B=I,那么就是普通矩阵特征值问题。求解广义特征值与特征向量的MATLAB格式如下: [V,D]=eig(A,B)很遗憾的是,符号运算工具箱中的eig()函数不支持广义特征值的相关运算。 例题2求A,B的广义特征值与特征向量矩阵。 , 解: 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 实验室设备网 版权所有 |