繁体   English   中英

稀疏矩阵的完整SVD的库

[英]library for full SVD of sparse matrices

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

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

同样,在获得U和SI之后,需要将它们乘以某个密集的向量。

对于此问题,我使用了多种不同技术的组合:

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

  • 但是由于矩阵逆的特征向量与矩阵的特征向量相同,因此可以分解矩阵(使用稀疏矩阵分解例程,例如SuperLU或Choldmod,如果矩阵是对称的)。 带有Arpack的“通信协议”只希望您计算矩阵向量乘积,因此,如果您使用分解因子矩阵进行线性系统求解,那么这会使Arpack更快地应对频谱的低频(不要忘了将特征值lambda替换为1 / lambda!)

  • 此技巧可用于通过广义变换来探索整个频谱(上一点中的变换称为“反转”变换)。 还有一个“移位-反转”变换,允许人们探索频谱的任意部分并快速收敛Arpack。 然后,当sigma是“移位”时,您将计算(1 / lambda + sigma)而不是lambda(变换比“ invert”变换稍微复杂一些,请参见下面的参考资料以获取完整说明)。

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

SUPERLU: http ://crd-legacy.lbl.gov/~xiaoye/SuperLU/

我的文章中对数值算法进行了解释,可以在此处下载: http : //alice.loria.fr/index.php/publications.html?redirect=0&Paper=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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM