Matlab 退化矩阵的广义特征值问题与Jordan型
我正在寻找一种方法来结合两种在Matlab中实现的特征值分解方法。第一种方法实现了广义特征值问题,可按如下方式使用:Matlab 退化矩阵的广义特征值问题与Jordan型,matlab,eigenvalue,Matlab,Eigenvalue,我正在寻找一种方法来结合两种在Matlab中实现的特征值分解方法。第一种方法实现了广义特征值问题,可按如下方式使用: [Gamma, Lambda] = eig(M1, M2); 如果矩阵M2不是退化的,这个方法返回与eig(M2^(-1)*M1)相同的答案,但是我需要使用这个广义形式,因为M2可能是退化的 我还有一个问题,即特征向量的返回矩阵是退化的,所以要得到特征值分解,我需要使用Jordan形式。如果矩阵M2没有退化,我可以使用: [Gamma, Lambda] = jordan(M2
[Gamma, Lambda] = eig(M1, M2);
如果矩阵M2不是退化的,这个方法返回与eig(M2^(-1)*M1)相同的答案,但是我需要使用这个广义形式,因为M2可能是退化的
我还有一个问题,即特征向量的返回矩阵是退化的,所以要得到特征值分解,我需要使用Jordan形式。如果矩阵M2没有退化,我可以使用:
[Gamma, Lambda] = jordan(M2 \ M1)
但这不起作用,因为M2是退化的
有没有办法将这两种方法结合起来,这样我就可以解决M2和Gamma都退化的情况下的特征值分解问题
UPD:最小可复制示例:
M1 = [2 -1 0; 1 0 0; 0 0 0]; M2 = [0 0 0; 0 2 -1; 0 1 0];
[Gamma, Lambda] = eig(M1, M2)
Gamma =
0 1 0
0 0 0
-1 0 1
Lambda =
0 0 0
0 Inf 0
0 0 0
在这个例子中,我认为有些特征值是无限的,但我需要一个非退化伽马。我建议你发布一个帖子,这样你就更有可能得到帮助。贾斯汀,谢谢你,我添加了一个例子。