Matlab - 计算两个矩阵之间的近似共同特征向量基作为公差的函数

计算科学 matlab 矩阵 本征
2021-12-26 18:44:49

我正在寻找或者更确切地说在 2 个矩阵之间构建公共特征向量矩阵 X AB例如:

AX=aX with "a" the diagonal matrix corresponding to the eigenvalues

BX=bX with "b" the diagonal matrix corresponding to the eigenvalues

其中AB是可对角化的方阵。

我看了一下类似的帖子,但没有得出结论,即当我构建F由以下定义的最终想要的内同态时得到有效的结果:F = P D P^-1

我还阅读了维基百科主题和这篇有趣的论文,但不必提取非常容易实现的方法。

从数学交流中,一个建议在换向器 [A,B] 上使用奇异值分解 (SVD),即在 Matlab 中通过:

“如果𝑣是一个共同的特征向量,那么 ‖(𝐴𝐵−𝐵𝐴)𝑣‖=0。该SVD方法为您提供了一个最小化 ‖(𝐴𝐵−𝐵𝐴)𝑣”的单位向量 𝑣(约束条件为 ‖𝑣‖=1) "

所以我从 中提取近似特征向量 V:

[U,S,V] = svd(A*B-B*A)

有没有办法提高精度以尽可能地最小化‖(𝐴𝐵−𝐵𝐴)𝑣‖,我的意思是公差尽可能小?

相结合的换向器的最小化,即 ‖(𝐴𝐵−𝐵𝐴)𝑣‖ ?v

我看到有另一个函数调用rref它可以接受一个容差参数但是:

  1. 奇异值分解有什么区别svd
  2. 我可以应用哪个标准来选择公差值

找到近似共同特征向量矩阵的 2 个矩阵可在此处获得:

矩阵

B矩阵

任何人都可以尝试应用适当的函数 Matlab 来找到共同特征向量的基础,或者为此编写一个小的 Matlab 脚本?即使是近似基础也足够了,一切都取决于我准备接受的容差,但目前我不知道如何用SVD算法引入这个容差参数。

更新1:在我尝试使用的不同方法中,任何人都可以解释method of Pool Variance如果它可以很容易实现。我记得它是通过取每个对角化的 Fisher 矩阵的一半并将它们相加以返回到最终的协方差空间中,即只需应用 : Cov = P Fisher_diagonal_sum P^-1?

使用这种方法,我得到了有趣的结果,但从理论的角度来看,我无法证明这个池方差矩阵的原理是正确的(即,通过取对角 Fisher 矩阵值的一半并返回协方差):为什么一半?

欢迎任何建议/跟踪/线索帮助

2个回答

这个问题被称为联合对角化,它有两种变体:正交,其中基向量是正交的,非正交的,这更难解决,但可能更适合您的应用程序。

我所知道的最简单的方法是寻找一个酉矩阵的非对角线元素的平方和上标表示 Hermitian 转置)。矩阵由 Givens 矩阵的乘积组成,就像在 Jacobi 对角化算法中一样。可以在这里找到包括 matlab 在内的多种语言的实现:http ://www2.iap.fr/users/cardoso/jointdiag.htmlUUHAUUHBUHU

如果您放宽对角化矩阵是单一的约束,您可能能够进一步降低成本函数,尽管优化变得更加困难。参见例如:https ://www.eng.tau.ac.il/~arie/Files/tsp02.pdf 。

正如其文档在多个地方所暗示的那样,rref“主要是学术兴趣”(阅​​读:“仅用于向本科生解释高斯消除”),并且在稳定性方面不是基于 SVD 的算法的重要竞争对手。我建议反对。