使用 Eigen3 的稀疏矩阵的特征值

Eigenvalues of sparse matrix using Eigen3

是否有一种独特而有效的方法来查找 Eigen3 中实数、对称、非常大(比方说 10000x10000)稀疏矩阵的特征值和特征向量?有一个用于稠密矩阵的特征值求解器,但它没有利用矩阵的属性,例如它是对称的。此外,我不想密集存储矩阵。

或者是否有更好的(+更好的文档)库来做到这一点?

假设您正在寻找 C++ 库,请检查 Armadillo

eigs_sym()功能好像是你想要的。引用文档,它:

Obtains a limited number of eigenvalues and eigenvectors of sparse symmetric real matrix 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