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; }