稀疏矩阵的完全SVD库

library for full SVD of sparse matrices

本文关键字:SVD      更新时间:2023-10-16

我想对包含大量零的大型矩阵进行奇异值分解。特别地,我需要U和S,这是从对称矩阵a的对角化获得的。这意味着a=U*S*转置(U^*),其中S是对角矩阵,U包含作为列的所有特征向量。

我在网上搜索了结合SVD和稀疏矩阵的c++库,但只能找到一些,但不能找到所有特征向量的库。有人知道有没有这样的图书馆吗?

同样,在获得U和S之后,我需要将它们乘以一些稠密向量。

对于这个问题,我使用了不同技术的组合:

  • Arpack可以计算一组特征值和相关的特征向量,不幸的是,它只对高频很快,对低频很慢

  • 但是,由于矩阵的逆的特征向量与矩阵的特征向量相同,因此可以对矩阵进行因子分解(如果矩阵是对称的,则使用稀疏矩阵因子分解例程,例如SuperLU或Choldmod)。Arpack的"通信协议"只要求您计算矩阵向量积,因此,如果您使用因子矩阵进行线性系统求解,则这会使Arpack在频谱的低频率下快速(不要忘记用1/lambda替换特征值lambda!)

  • 这个技巧可以用来探索整个频谱,使用广义变换(前一点中的变换被称为"反转"变换)。还有一种"移位-反转"变换,可以探索光谱的任意部分,并使Arpack快速收敛。然后计算(1/lambda+sigma),而不是lambda,当sigma是"移位"时(变换比"反转"变换稍微复杂一些,请参阅下面的参考资料以获得完整的解释)。

ARPACK:http://www.caam.rice.edu/software/ARPACK/

SUPERLU:http://crd-legacy.lbl.gov/~小叶/超级路/

数值算法在我的文章中有解释,可以在这里下载:http://alice.loria.fr/index.php/publications.html?redirect=0&纸张=ManifoldHarmonics@2008

这里提供源代码:https://gforge.inria.fr/frs/download.php/file/27277/manifold_harmonics-a4-src.tar.gz

另请参阅我对这个问题的回答:https://scicomp.stackexchange.com/questions/20243/sparse-generalized-eigensolver-using-opencl/20255#20255

相关文章:
  • 没有找到相关文章