Power 和 Rayleigh 迭代是根本不同的野兽,因为前者仅使用的矩阵向量乘积,而后者使用的矩阵向量乘积。这是非常重要的一点——两种算法都不需要显式访问矩阵本身,而只需要矩阵的某些操作。A(A+zI)−1
选择一个而不是另一个的选择很大程度上取决于每个操作的特定于应用程序的复杂性,这并不总是根据您引用的数字进行扩展。
考虑实际上是稠密的,但可以有效地计算矩阵向量乘积的情况。例如,重力是一种密集的相互作用,这意味着每个物体都与其他物体相互作用。物体之间的相互作用强度列成矩阵,那么它将包含非零元素。对于非常大的,这些元素甚至可能不适合内存。然而,矩阵向量乘积可以使用快速多极方法以复杂度计算,而无需形成矩阵Ann×nAn2nn2AxO(n). 因此,可以使用幂迭代扩展到数十亿。λmax(A)n
另一方面,当是稀疏矩阵时,通常存在矩阵列的重新排序,使得可以以接近线性或线性的复杂度计算。在初始符号分解步骤之后,计算每个 Rayleigh 迭代只需要在这种情况下,几乎没有理由考虑幂迭代。A(A+zI)−1x≈O(n)
最后,我应该注意,幂迭代是一种次优的 Krylov 子空间方法。无论在哪里可以使用幂迭代,Lanczos 迭代都可以做得更好。事实上,使用精确算术,Lanczos 保证在次迭代后收敛。n