Eigen::Matrix3d  A;


Eigen::EigenSolver<Eigen::Matrix3d> es(A);


if(eigensolver.info() != Eigen::Success){

  abort();

}

Eigen::VectorXcd  ed = eigensolver.eigenvalues(); // 复数向量,因为特征值可能为复数

for(int i=0; i<ed.size(); i++){

  printf("%f,%f\n", ed[i].real(), ed[i].imag());

}

Eigen::MatrixXcd   eigenvectors = eigensolver.eigenvectors(); //特征向量用复数矩阵保存


for(int i=0; i<eigenvectors.cols(); i++){

  Eigen::VectorXcd  ev = eigenvectors.col(i); // 复数向量, std::complex<double>

      for(int j=0; j<ev.size(); j++){

    printf("i=%d, %f, %f\n", i, ev[j].real(), ev[j].imag());  

  }

}



标签: none

评论已关闭