当我知道右特征向量时计算左特征向量

计算科学 线性代数 特征值
2021-12-09 21:42:56

我正在使用幂迭代来找到一些具有非负元素的大型矩阵(左右,也许我以后需要更大)的主要右特征向量。1000×100010000×10000

我需要知道对应于最大特征值的左右特征向量。显然我可以通过对矩阵的转置进行幂迭代来找到左特征向量。然而,这是相当昂贵的,因为我已经进行了幂迭代来找到正确的特征向量和领先的特征值,似乎有一种方法可以使用该信息来计算左特征向量。

矩阵是实数并且只有非负元素,但除此之外它们没有特殊性质,例如它们不是对称的并且它们不是随机矩阵。前导左右特征向量都有正元素,我要保证数值误差不会引入负元素。(这就是为什么我使用幂迭代而不是任何其他方法来找到领先的特征向量。)因此,我想避免任何涉及数值反转矩阵或类似的技术,除非可以保持这种保证。

我正在使用 Python/numpy,但我不喜欢它——我宁愿专注于我应该使用的算法。

1个回答

请记住,Perron-Frobenius 定理仅在矩阵不可约的特殊情况下适用于非负矩阵(即某些幂具有严格的正元素)。您需要确保您的非负矩阵是不可约的。 A

此外,通常您可能有多个复特征值,其绝对值与最大实特征值相同 - 在这种情况下,幂方法不能保证收敛。有一些专门的方法可以找到与保证收敛的主要实特征值相对应的正确特征向量 - 您应该使用其中一种方法。一些方法同时计算左右主特征向量,这将消除你的问题。

假设你确实知道对应于主导实特征值的右特征向量,那么因为你知道主导特征值,找到对应于该特征值的左特征向量只是求解方程组的问题(左特征向量的方程加上一个将特征向量归一化为的额外方程。x1=1

Perron-Frobenious 定理(对于不可约的非负矩阵)确保将有一个唯一的(直到归一化)与主要实特征值相对应的实数和正左特征向量。因此,您应该能够解决该线性方程组并完成它。

实际上,在求解这个方程组后,您的左特征向量可能会得到略微负值。强制非负性的一种选择是应用非负最小二乘算法(例如,Parker 和 Stark 的 BVLS 等主动集方法)以获得该线​​性系统的非负最小二乘解。您需要检查该解决方案是否仍然相当接近原始矩阵的左特征向量。

您还没有说过矩阵的稀疏性。这可能会对通过某种迭代方案找到左特征向量或求解线性方程组是否更快产生巨大影响。 A