广义奇异值分解和稀疏矩阵

5
我想计算稀疏矩阵A和B的广义奇异值分解(GSVD)。因此,我正在寻找一种能够使用稀疏矩阵的特殊数据结构的实现。我找到的唯一实现(here)是LAPACK包的一部分,它是用Fortran 77编写的。它工作得很好,但不幸的是它无法处理稀疏矩阵。

3
为什么不在 http://scicomp.stackexchange.com 上发布这个? - milancurcic
SVDPACK包括四种迭代数值方法,使用双精度ANSI Fortran-77计算大型稀疏矩阵的奇异值分解(SVD)。或许这对你有所帮助。我对该软件包没有任何经验。 - Ali
谢谢,但我正在寻找广义奇异值分解。 - Matthias Munz
2
也许不是你想要的答案,但你考虑过自己编写一个吗? - Kyle Kanos
这是我最初尝试做的事情。但我仍然不理解算法,这是我的主要问题。 - Matthias Munz
这里讨论了几种不同的稀疏SVD包(在Python封装的上下文中,但这并不重要):http://jakevdp.github.io/blog/2012/12/19/sparse-svds-in-python/。此外,如果您不介意进行额外的矩阵求逆运算,可以将广义SVD问题转换为常规SVD问题。当然,前提是您知道其中一个矩阵肯定是非奇异的。 - DaveP
2个回答

2

MATLAB的gsvd函数支持稀疏矩阵。我相信Octave(免费提供)也支持gsvd


1
接受稀疏矩阵意味着将它们转换为完整存储并计算所有奇异值。问题在于具有与“svds”相同语义的广义SV分解,该函数仅返回少量奇异值,而不是全部。 - Stefano M

1

我在Scicomp上提出了同样的问题,并得到了很好的答案。帖子可以在这里找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接