c++使用Eigen库计算矩阵特征值

5 篇文章 1 订阅

Eigen
是一个方便使用的c++矩阵运算库,只要包含Eigen的源码头文件,就能使用。
下面的例子是计算矩阵的特征值特征向量,并把特征向量矩阵实部和虚部分开。


#include <iostream>
#include <Eigen/Dense>


using namespace std;
using namespace Eigen;


int main()
{

    Matrix3d A;  //定义3*3  double 型矩阵
    A << 1, 2, 3, 5,-5,3,4,6,9;

    cout << "Here is a matrix, A:" << endl << A << endl << endl;
    EigenSolver<MatrixXd> es(A);

    cout << "The eigenvalues of A are:" << endl << es.eigenvalues() << endl;

    MatrixXcd vect = es.eigenvectors();//特征向量矩阵
    cout << "复数形式输出:" << endl << vect << endl;

    MatrixXd realvect(vect.rows(), vect.cols());
    MatrixXd imagvect(vect.rows(), vect.cols());

    cout << "虚实拆分:" << endl;
    /*两种拆分方式等价
    for (size_t i = 0; i < vect.rows(); i++)
    {
        for (size_t j = 0; j < vect.cols(); j++)
        {
            realvect(i, j) = real(vect(i, j));
            imagvect(i, j) = imag(vect(i, j));
        }
    }*/
    for (size_t i = 0; i < vect.size(); i++)
    {
        *(realvect.data() + i) = real(*(vect.data() + i));
        *(imagvect.data() + i) = imag(*(vect.data() + i));
    }

    cout << "realvect:" << endl << realvect << endl;
    cout << "imagvect:" << endl << imagvect << endl;

}
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值