当前位置:   article > 正文

Eigen 求解矩阵特征值特征向量(matlab [B,D] = eig(C))_eigen计算特征值

eigen计算特征值
  1. #include <Eigen/Dense>
  2. #include <iostream>
  3. using namespace Eigen;
  4. using namespace std;
  5. int main(){
  6. MatrixXd K(2,2);
  7. K << 4, 5, 8, 5;
  8. cout << "K" << endl << K << endl;
  9. EigenSolver<MatrixXd> es(K);
  10. MatrixXcd evecs = es.eigenvectors();//获取矩阵特征向量2*2,这里定义的MatrixXcd必须有c,表示获得的是complex复数矩阵
  11. MatrixXd B;//注意这里定义的MatrixXd里没有c
  12. B = evecs.real();//得到对应特征向量
  13. cout << "evecs" << endl << evecs << endl;
  14. cout << "B" << endl << B << endl; //B
  15. MatrixXcd evals = es.eigenvalues();//获取矩阵特征值 2*1
  16. MatrixXd D_temp,D;//注意这里定义的MatrixXd里没有c
  17. D_temp = evals.real();//获取特征值实数部分
  18. D = D_temp.asDiagonal();
  19. cout << "evals" << endl << evals << endl;
  20. cout << "D_temp" << endl << D_temp << endl; //D
  21. cout << "D" << endl << D << endl; //D
  22. MatrixXf::Index evalsMax;
  23. B.rowwise().sum().maxCoeff(&evalsMax);//得到最大特征值的位置
  24. cout << "evalsMax" << endl << evalsMax << endl;
  25. }

 结果

 

matlab结果

注意:matlab eig与Eigen库计算结果可能不一致,某些列符号相反,我不知道这会不会对结果其他计算结果产生影响,正在试验---2020.8.16

参考链接:

Eigen库求取最大特征值和特征向量

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/78196
推荐阅读
相关标签
  

闽ICP备14008679号