在两个矩阵中匹配相似的特征谱

use*_*772 6 matlab matrix linear-algebra eigenvalue eigenvector

我有两个矩阵,其中一个矩阵的特征谱的一部分与另一个矩阵的特征谱非常相似,但我(目前)能够验证这一点的唯一方法是非常不优雅的。

我对任何解决方案都持开放态度,但为了在此处展示我所寻求的示例,我发现使用 MATLAB 语法最简单:在第一个示例中,我将定义矩阵,A并且BB中也可以找到 的两个特征值A,以及相应的两个特征向量ofB也是A具有相同特征值的特征向量,但是如果不取其特征B值共享的特征向量A并“搜索”以查看这些相同的特征向量在 中是否具有相同的特征值,则这并不明显A

下面是两个这样的矩阵A和的示例B

  A      = diag([1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1]);
  B      = diag([19.9385 7.6177 17.2969 9.6177 11.3208 -1 8.6792 1 11.3208 -1 8.6792 1 19.9385 7.6177 17.2969 9.6177]); 
  B(2,1) = 9.2832; B(4,3)=B(2,1); B(14,13)=-B(2,1); B(16,15)=-B(2,1); 
  B      = tril(B,-1)'+B; % Make it Hermitian by mirroring the lower triangle into the upper triangle
Run Code Online (Sandbox Code Playgroud)

通过运行该命令,[eig(A)' ; eig(B)']我们看到A' 的两个特征值(它们都是-1)与B' 的特征值(A在顶行和B底行中)共享:

-1 -1 -1 -1 -1 -1 -1 -1  1  1  1  1  1  1  1  1
-1 -1  1  1  8  8  9  9 10 10 11 11 17 17 20 20
Run Code Online (Sandbox Code Playgroud)

A具有特征值的特征向量-1也与具有特征值的 的特征向量匹配B-1但是虽然它们出现在 的特征向量矩阵VA的第1 和第 2 列中A,但它们出现在 的特征向量矩阵VB的第4 和第 6 列中B

在此处输入图片说明

有没有更优雅的方式来查看这一点,而无需使用蛮力搜索来查看公共特征值的特征向量是否共享?

这是一个稍微复杂一些的例子,其中矩阵大小不相同,特征向量不再完全相同,但它们仍然是等价的(将特征向量乘以标量会得到一个也是特征向量的向量,具有相同的特征值):

在此处输入图片说明

我已经做了很多寻找解决方案的工作,可以说我知道一些相关的工具,例如:

Mis*_*ous 0

我将首先比较所有特征值和所有特征向量,然后查看特征值和特征向量是否同时匹配。

\n

我不确定这种方法是否更优雅。这可能会更加暴力。但是您可以摆脱繁琐的搜索和匹配特征值-特征向量过程,并且此代码应该更短。

\n

通过取内积来比较特征向量,因为它们比外积更容易实现。由于 matlab 自动标准化特征向量,通过Cauchy\xe2\x80\x93Schwarz 不等式,线性相关特征向量的内积应为-11

\n
% compare eigenvalues\nis_val_same = abs(diag(EA)-diag(EB).\') < 1e-8;\n\n% total number of eigenvectors\nm=size(VA,2);\nn=size(VB,2);\n\n% calculate dot products\ndotAB = sum(permute(repmat(conj(VB), 1, 1, m), [1 3 2]).*repmat(VA, 1, 1, n), 1);\ndotAB = reshape(dotAB, m, n);\n\n% compare eigenvectors\nis_vec_same = abs(abs(dotAB)-1) < 1e-8;\n\n% find the matching eigen pairs\n[index_A, index_B]=find(is_vec_same & is_val_same)\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
index_A =\n 4\n 6\n16\n12\n\nindex_B =\n 1\n 2\n 3\n 4\n
Run Code Online (Sandbox Code Playgroud)\n

这意味着 的 列4 6 16 12分别A对应于1 2 3 4的列B

\n

当矩阵大小不同时它也适用。简并性可以通过使用与上述类似的代码查找A和的重复特征向量来识别。B

\n