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

#include

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

原文链接: https://www.cnblogs.com/theda/p/14612090.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/209237

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午11:48
下一篇 2023年2月12日 下午11:49

相关推荐