使用 Eigen3 的稀疏矩阵的特征值
Posted
技术标签:
【中文标题】使用 Eigen3 的稀疏矩阵的特征值【英文标题】:Eigenvalues of sparse matrix using Eigen3 【发布时间】:2015-05-14 19:52:17 【问题描述】:是否有一种独特而有效的方法可以在 Eigen3 中找到一个真实的、对称的、非常大的(比如 10000x10000)稀疏矩阵的特征值和特征向量?有一个密集矩阵的特征值求解器,但它没有利用矩阵的属性,例如这是对称的。此外,我不想密集存储矩阵。
或者是否有更好的(+更好的文档记录)库来做到这一点?
【问题讨论】:
查看此链接以获取可以使用稀疏矩阵查找特征值的库列表:NetLib.org 这是一个不错的列表,但我担心这是最新的 这个问题与***.com/questions/30188482/…重复 只是因为被迁移了 Sparse eigenvalues using eigen3/sparse的可能重复 【参考方案1】:假设您正在寻找 C++ 库,请查看 Armadillo。
eigs_sym()
函数似乎正是您想要的。引用文档,它:
获取稀疏对称实矩阵X的有限个特征值和特征向量
适用于您所需矩阵大小的文档中的一个最小示例:
// generate sparse matrix
sp_mat A = sprandu<sp_mat>(10000, 10000, 0.1);
sp_mat B = A.t()*A;
vec eigval;
mat eigvec;
eigs_sym(eigval, eigvec, B, 5); // find 5 eigenvalues/eigenvectors
【讨论】:
以上是关于使用 Eigen3 的稀疏矩阵的特征值的主要内容,如果未能解决你的问题,请参考以下文章