gpt4 book ai didi

c++ - 对于巨大的稀疏对称矩阵,哪个是 Spectra 库中最快的特征值求解器?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:44:23 24 4
gpt4 key购买 nike

我想求解大型稀疏对称矩阵(通常为 20,000 - 60,000 的数量级)的特征值。我曾尝试利用 SymEigsShiftSolver/SymEigsSolver,但生成我的特征值需要花费大量时间。有加速的方法吗??我附上了我打算做的演示代码。我错过了什么吗?

主要内容(){

Eigen::MatrixXd A = Eigen::MatrixXd::Random(10000, 10000);
Eigen::MatrixXd M = A.transpose() * A;

// Matrix operation objects
DenseGenMatProd<double> op_largest(M);
DenseSymShiftSolve<double> op_smallest(M);

// Construct solver object, requesting the smallest 10 eigenvalues
SymEigsShiftSolver< double, LARGEST_MAGN, DenseSymShiftSolve<double> >
eigs_smallest(&op_smallest, 10, 30, 0.0);

eigs_smallest.init();
eigs_smallest.compute();
std::cout << "Smallest 10 Eigenvalues :\n" <<
eigs_smallest.eigenvalues() << std::endl;

return 0;

最佳答案

您的代码示例正在融合密集矩阵。第一件事是正确组装 Eigen::SparseMatrix<double>详情 there .然后,在 Spectra 端,使用相应的 SparseSymShiftSolve helper 。

此外,不要忘记在编译器优化开启的情况下进行编译。这对于此类仅 header 库很重要。

关于c++ - 对于巨大的稀疏对称矩阵,哪个是 Spectra 库中最快的特征值求解器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42129192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com