特征库函数与lapack dsyev_相同

时间:2016-07-22 08:22:00

标签: eigen lapack eigenvalue

我使用lapack/blas下载了一些开源,我希望将其更改为基于Eigen的自动SIMD代码生成源。

Eigen库中的任何功能是否与dsyev中的LAPACK相同。

dsyve为了多种目的返回info值。

但据我所知,eigensolver库中的Eigen会返回eigenvalueeigenvector

Eigen库中是否有我想要的功能。

1 个答案:

答案 0 :(得分:2)

我认为您想要的是.info(),以及SelfAdjointEigenSolver提供的其他API。

tutorial page也说明了如何使用它。

#include <iostream>
#include <Eigen/Dense>

using namespace std;
using namespace Eigen;

int main()
{
   Matrix2f A;
   A << 1, 2, 2, 3;
   cout << "Here is the matrix A:\n" << A << endl;
   SelfAdjointEigenSolver<Matrix2f> eigensolver(A);
   if (eigensolver.info() != Success) abort();
   cout << "The eigenvalues of A are:\n" << eigensolver.eigenvalues() << endl;
   cout << "Here's a matrix whose columns are eigenvectors of A \n"
        << "corresponding to these eigenvalues:\n"
        << eigensolver.eigenvectors() << endl;
}

如果您真的想知道dsyev()报告的NoConvergence的详细信息,则可能必须使用低级LAPACK API。

  

此函数返回值信息。

     

如果info = 0,则执行成功。

     

如果info = -i,则第i个参数具有非法值。

     

如果info = i,则算法无法收敛;我表示   中间三对角形式的元素数量没有   收敛到零。