c++Eigen库安装求解矩阵特征值

  使用的是C++的Eigen库

  在官网下载之后,记住文件夹的路径

  在VS2017创建一个项目之后,点击项目,属性,配置属性,C/C++,常规,附加包含目录,

右边手动点击添加即可。

  测试一下这段代码能不能运行吧。

 

#include "pch.h"
#include <iostream>
#include<Eigen/Dense>
using namespace Eigen;
using namespace std;
int main()
{
    MatrixXf a(4, 1);//必须要进行初始化
    a = MatrixXf::Zero(4, 1);//初始化为0
    a << 1, 2, 3, 4;//手动赋值
    cout << "矩阵a:" << endl << a << endl;
    cout << "逆矩阵d转置:" << endl << a.transpose() << endl;

    system("pause");
    return 0;
}

 

创建一个任意大小的矩阵

#include "pch.h"
#include <iostream>
#include<Eigen/Dense>
using namespace Eigen;
using namespace std;
int main()
{
  MatrixXf a(2, 2);//必须要进行初始化
  a = MatrixXf::Zero(2, 2);//初始化为0
  for (int i = 0; i < 2; i++)
  {
    for (int j = 0; j < 2; j++)
    {
      cin >> a(i, j);
    }
  }
  cout << "矩阵a:" << endl << a << endl;
  cout << "逆矩阵d转置:" << endl << a.transpose() << endl;

  system("pause");
  return 0;
}

顺带还有怎么输出矩阵以及矩阵的转置

矩阵的加法运算和乘法运算应该是已经重载好了的

 

 

MatrixXd和MatrixXf应该就是double类型数据和float类型数据的区别吧。

 

关键是计算特征值和特征向量

/*
首先在这个test文件中处理得到
25.4 25
25 25.4
这个矩阵的特征值和特征向量吧
*/
#include "pch.h"
#include <iostream>
#include<Eigen/Dense>
using namespace Eigen;
using namespace std;
int main()
{
    MatrixXd a(2, 2);//必须要进行初始化
    a = MatrixXd::Zero(2, 2);//初始化为0
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            cin >> a(i, j);
        }
    }
    EigenSolver<MatrixXd> es(a);
    MatrixXd D = es.pseudoEigenvalueMatrix();//对角线特征值矩阵
    MatrixXd V = es.pseudoEigenvectors();//特征向量矩阵
    cout << D << endl;
    cout << V << endl;
    return 0;
}

 

 

  

posted @ 2021-04-02 18:38  TheDa  阅读(1039)  评论(0编辑  收藏  举报