广州优化网站推广,网站的虚拟人怎么做的,重庆网站建设重庆网站设计,网站没备案可以上线吗#x1f60f;★,:.☆(#xffe3;▽#xffe3;)/$:.★ #x1f60f; 这篇文章主要介绍Eigen3矩阵与线性代数库配置使用。 无专精则不能成#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客#xff0c;一起学习#xff0c;共同进步。 喜欢的朋友可以关注一下★,°:.☆(▽)/$:.°★ 这篇文章主要介绍Eigen3矩阵与线性代数库配置使用。 无专精则不能成无涉猎则不能通。——梁启超 欢迎来到我的博客一起学习共同进步。 喜欢的朋友可以关注一下下次更新不迷路 文章目录 :smirk:1. 项目介绍:blush:2. 环境配置:satisfied:3. 使用说明 1. 项目介绍
项目Gitlab地址https://gitlab.com/libeigen/eigen
官网https://eigen.tuxfamily.org/index.php?titleMain_Page
Eigen3 是一个开源的 C 模板库用于线性代数和数值计算。它提供了高效、灵活和易于使用的矩阵、向量和线性代数运算功能广泛应用于科学计算、机器学习、图像处理和工程领域等。重点是轻量级只包含头文件。
以下是 Eigen3 的一些主要特点和功能 1.高性能Eigen3 通过使用表达式模板技术能够在编译时进行优化并产生高度优化的机器码。这使得 Eigen3 在数值计算中具有出色的性能并且比某些其他常见的线性代数库更快。 2.易于使用Eigen3 提供了直观和简洁的 API使得编写线性代数代码变得容易。它采用了类似于数学符号的语法使得代码可读性强更接近人类思维方式。 3.丰富的功能Eigen3 提供了许多功能来支持常见的线性代数操作包括矩阵和向量的基本运算加、减、乘、除、矩阵分解LU、QR、SVD 等、特征值和特征向量计算、线性方程组求解、矩阵代数操作转置、逆、行列式等以及各种线性代数算法。 4.平台无关性Eigen3 是一个纯模板库不依赖于任何特定的硬件或操作系统因此可以在多个平台上使用和移植。 5.轻量级Eigen3 的代码库非常小巧只有头文件易于集成到其他项目中。 6.兼容性Eigen3 支持 C11 或更高版本的编译器并且与其他常见的 C 库和框架如 STL、Boost 等兼容。 2. 环境配置
下面进行环境配置
# ubuntu安装
sudo apt install libeigen3-dev要在项目中使用eigen3可创建cmake工程CMakeLists.txt示例
cmake_minimum_required(VERSION 3.12)
project(useEigen)set(CMAKE_CXX_STANDARD 11)# 寻找Eigen库
find_package(Eigen3 REQUIRED)
# 将Eigen库include进来
include_directories(${EIGEN3_INCLUDE_DIRS})add_executable(${PROJECT_NAME} main.cpp)另外简单的可以在g时带上头文件目录编译示例
g -o main main.cpp -I /usr/include/eigen3/3. 使用说明
下面进行使用分析
矩阵运算示例
#include iostream
#include Eigen/Denseusing namespace std;
using namespace Eigen;int main() {// 以Xd方式声明一个3x3的矩阵MatrixXd mat(3, 3);// 将矩阵(0,0)位置元素赋为1.5mat(0, 0) 1.5;cout MatrixXd:\n mat endl;// 以Matrix方式声明一个5x2的矩阵Matrixdouble, 5, 2 m1;cout Matrix:\n m1 endl;// 随机数矩阵MatrixXd m2 MatrixXd::Random(5, 3);cout MatrixXd::Random:\n m2 endl;return 0;
}向量运算示例
#include iostream
#include Eigen/Denseusing namespace std;
using namespace Eigen;int main() {Vector3d v(1, 2, 3);cout ori vector:\n v endl;cout * result:\n v * 3 endl;// 点乘cout dot result:\n v.dot(v) endl;// 叉乘cout cross result:\n v.cross(v) endl;return 0;
}求解线性方程组示例
#include iostream
#include Eigen/Denseusing namespace std;
using namespace Eigen;int main() {// 创建系数矩阵 AMatrix3d A;A 2, 1, -1,-3, -1, 2,-2, 1, 2;// 创建右侧常数向量 bVector3d b;b 8, -11, -3;// 求解线性方程组 AxbVector3d x A.colPivHouseholderQr().solve(b);// 打印解向量 xstd::cout Solution x \n x std::endl;return 0;
}以上。