在一个C++程序中,我计算了一个大的稀疏矩阵energy_mat,我知道它是系统的。
我试图通过得到最大和最小的特征值来计算它的条件数,比如:
Spectra::SparseGenMatProd<double> op(energy_mat);
Spectra::GenEigsSolver<Spectra::SparseGenMatProd<double>> eigs(op, 3, 6);
// Initialize and compute
eigs.init();
int nconv = eigs.compute(Spectra::SortRule::LargestMagn);
// Retrieve results
Eigen::VectorXcd evalues;
if (eigs.info() == Spectra::CompInfo::Successful)
evalues = eigs.eigenvalues();
std::cout << "Eigenvalues found:\n"
<< evalues << std::endl;我看到:
Eigenvalues found:也就是说,数组是空的。但是我知道energy mat是对称的(我检查过了),后来我用它来求解线性方程组,所以它是数字声音(它没有nans或infs)。
为什么光谱没有本征值?
发布于 2022-10-22 01:42:46
将迭代次数从6次增加到40次似乎解决了这个问题。
https://stackoverflow.com/questions/73917303
复制相似问题