【Eigen】从入门到放弃(一):安装和使用

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

什么是Eigen

Eigen 是C++语言里的一个开源模版库支持线性代数运算矩阵和矢量运算数值分析及其相关的算法。
Eigen适用范围广支持包括固定大小、任意大小的所有矩阵操作甚至是稀疏矩阵支持所有标准的数值类型并且可以扩展为自定义的数值类型支持多种矩阵分解及其几何特征的求解它不支持的模块生态系统提供了许多专门的功能如非线性优化矩阵功能多项式解算器快速傅立叶变换等。

怎么安装EigenWindows+Visual Studio

  1. 下载Eigen
  2. 解压放到合适的目录下
  3. 项目中添加该目录

占坑后面会补齐Liunx环境下的安装方法

Eigen库的模块及其头文件

为了应对不同的需求Eigen库被分为多个功能模块每个模块都有自己相对应的头文件以供调用。 其中Dense模块整合了绝大部分的模块而Eigen模块更是整合了所有模块也就是整个Eigen库。

模板头文件功能
Core#include <Eigen/Core>Matrix和Array类,基础的线性代数运算和数组操作
Geometry#include<Eigen/Geometry>旋转﹑平移、缩放、2D和3D的各种变换
LU#include<Eigen/LU>求逆行列式LU分解
Cholesky#include<Eigen/Cholesky>LLT和LDLTCholesky分解
Householder#include<Eigen/Householder>豪斯霍尔德变换,用于线性代数运算
SVD#include<Eigen/SVD>SVD分解
QR#include<Eigen/QR>QR分解
Eigenvalues#include<Eigen/Eigenvalues>特征值,特征向量分解
Sparse#include<Eigen/Sparse>稀疏矩阵的存储和一些基本的线性运算
Dense#include<Eigen/Dense>包含了Core / Geometrg/ LU / Cholesky / SVD/QR/ Eigenoalues模块
Eigen#include<Eigen/Eigen>包括Dense和Sparse(整个Eigen库)

Eigen的使用

此处列举几种构建2*2矩阵的方法

#include <iostream>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
int main()
{
	MatrixXd m1(2, 2);//MatrixXd表示是任意尺寸的矩阵i*j, m(2,2)代表一个2x2的方块矩阵
	m1 << 5, 7, 2, 13;
	cout << m1 << endl;//输出矩阵m1

	MatrixXd m2 = MatrixXd::Random(2, 2); //定义2*2的随机矩阵m各元素取值范围是[-11]
	cout << m2 << endl;//输出矩阵m2

	Matrix2d m3; //"Matrix2d"直接定义了一个2-by-2的方块矩阵
	m3(0, 0) = 1;
	m3(1, 0) = 2;
	m3(0, 1) = 3;
	m3(1, 1) = 4;
	cout << m3 << endl;//输出矩阵m3
}
}
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6