Eigen 编辑

高层次的C ++库

EigenEigen

Eigen是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。Eigen是一个开库,从3.1.1版本开始遵从MPL2许可。

基本信息

编辑

外文名:Eigen

性质:开源C++模板库

简介

编辑
Eigen 目前最新的版本是3.4,除了C++标准库以外,不需要任何其他的依赖包。Eigen使用的CMake建立配置文件和单元测试,并自动安装。如果使用Eigen库,只需包特定模块的的头文件即可。

基本功能

编辑
Eigen适用范围广,支持包括固定大小、任意大小的所有矩阵操作,甚至是稀疏矩阵;支持所有标准的数值类型,并且可以扩展为自定义的数值类型;支持多种矩阵分解及其几何特征的求解;它不支持的模块生态系统 提供了许多专门的功能,如非线性优化,矩阵功能,多项式解算器,快速傅立叶变换等。

Eigen支持多种编译环境,开发人员对库中的实例在多种编译环境下经过测试,以保证其在不同编译环境下的可靠性和实用性。

历史版本

编辑
Eigen 3.3-alpha1 released! (04.09.2015)

Eigen 3.2.5 released! (16.06.2015)

Eigen 3.2.4 released! (21.01.2015)

Eigen 3.2.3 released! (16.12.2014)

Eigen 3.2.2 released! (04.08.2014)

Eigen 3.2.1 released! (26.02.2014)

实例

编辑
1、矩阵操作:

#include <iostream> #include <Eigen/Dense> using namespace Eigen; int main() { MatrixXd m(2,2); m(0,0) = 3; m(1,0) = 2.5; m(0,1) = -1; m(1,1) = m(1,0) + m(0,1); std::cout << "Here is the matrix m:\n" << m << std::endl; VectorXd v(2); v(0) = 4; v(1) = v(0) - 1; std::cout << "Here is the vector v:\n" << v << std::endl; }

输出为

Here is the matrix m:    3  -1 2.5 1.5 Here is the vector v: 4 3

2、求解特征值和特征向量

#include <iostream> #include <Eigen/Dense> using namespace std; using namespace Eigen; int main() { Matrix2f A; A << 1, 2, 2, 3; cout << "Here is the matrix A:\n" << A << endl; SelfAdjointEigenSolver<Matrix2f> eigensolver(A); if (eigensolver.info() != Success) abort(); cout << "The eigenvalues of A are:\n" << eigensolver.eigenvalues() << endl; cout << "Here's a matrix whose columns are eigenvectors of A \n" << "corresponding to these eigenvalues:\n" << eigensolver.eigenvectors() << endl; }

输出为

Here is the matrix A: 1 2 2 3 The eigenvalues of A are: -0.236   4.24 Here's a matrix whose columns are eigenvectors of A corresponding to these eigenvalues: -0.851 -0.526  0.526 -0.851

更多参考实例

下一篇 公共机构

上一篇 分布式软件系统