矩阵的特征值与特征向量分解(Eigen)
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());
}
}
评论已关闭