问题描述
我有两个矩阵,其中一个矩阵的特征谱的一部分与另一个矩阵的特征谱非常相似,但我(目前)能够验证这一点的唯一方法是非常不优雅的。
我愿意接受任何解决方案,但为了在此展示我所寻求的示例,我发现使用 MATLAB 语法最简单:在第一个示例中,我将定义矩阵 A
和 B
,使得B
的两个特征值也在 A
中找到,B
的对应两个 特征向量 也是 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
通过运行命令 [eig(A)' ; eig(B)']
我们看到 A
的两个特征值(它们都是 -1
)与 B
的特征值({{ 1}} 在顶行,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
的 A
的特征向量也与具有 -1
特征值的 B
的特征向量匹配,但是这些出现在特征向量矩阵 {{ -1
的 1}},它们出现在 VA
的特征向量矩阵 A
的第 4 列和第 6 列中:
是否有更优雅的方式来查看这一点,而无需使用蛮力搜索来查看公共特征值的特征向量是否共享?
这里是稍微复杂一点的例子,其中矩阵大小不一样,特征向量不再完全相同,但它们仍然是等价的({{ 3}}):
我已经做了很多寻找解决方案的工作,可以说我知道一些相关的工具,例如:
- ,但不幸的是这不适用于对上述特征向量进行排序
-
MATLAB's
sort
command,这听起来很相关,但似乎对这个目标没有帮助。 -
Simultaneous diagonalization of two matrices 但没有收到任何答案(尽管这是一个有用的命令,用于提取与评论中
VB
的特征值相对应的特征向量:B
)。 - Another "simultaneous diagonalization" question was asked on Mathematics.SE,但这只是告诉我什么时候不要同时尝试匹配特征向量,并没有让我更接近能够优雅地匹配特征向量的目标。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)