簡體   English   中英

對於龐大的稀疏對稱矩陣,Spectra庫中哪一個最快的特征值求解器?

[英]Which is the fastest Eigenvalue solver in the Spectra library for a huge sparse symmetric matrix?

我希望解決大型稀疏對稱矩陣的特征值(通常約為20,000-60,000)。 我曾嘗試利用SymEigsShiftSolver / SymEigsSolver,但要花費大量時間才能生成我的特征值。 有加速的方法嗎? 我已附上我打算做的演示代碼。 我錯過了什么嗎?

int main(){

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>在此處進行詳細介紹。 然后,在“光譜”側,使用各自的SparseSymShiftSolve幫助器。

另外,不要忘記在編譯器優化為ON的情況下進行編譯。 這對於僅標頭的lib非常重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM