Eigen 的下载:
- Eigen 官网:https://eigen.tuxfamily.org(可能打不开)
- GitLab 仓库:https://gitlab.com/libeigen/eigen
- GitHub 仓库:https://github.com/PX4/eigen
说明:Eigen 软件包要求编译器使用 C++14 或更高标准。
使用方法一,复制 /eigen/Eigen/ 文件夹到项目目录中,路径大概为 /project/Eigen,编译命令为:
g++ -std=c++14 cpp_with_eigen_package.cpp
使用方法二,复制 /eigen/Eigen/ 文件夹到 ~/eigen/Eigen 路径,编译命令为:
g++ -std=c++14 -I$HOME/eigen cpp_with_eigen_package.cpp
使用方法三,复制 /eigen/Eigen/ 文件夹到 ~/eigen/Eigen 路径,然后设置环境变量,增加环境到 .bashrc,然后 source .bashrc。
export CPLUS_INCLUDE_PATH="$HOME/eigen:$CPLUS_INCLUDE_PATH"
于是,编译命令简化为:
g++ -std=c++14 cpp_with_eigen_package.cpp
C++ 代码示例 cpp_with_eigen_package.cpp(使用 Eigen 库求矩阵的逆):
#include <iostream>
#include <Eigen/Dense>
int main() {
// 定义矩阵
Eigen::MatrixXd A(4, 4);
A << 2, 1, 1, 0,
1, 3, 1, 1,
1, 1, 4, 1,
0, 1, 1, 5;
// 求逆矩阵
Eigen::MatrixXd A_inv = A.inverse();
std::cout << "A:\n" << A << std::endl;
std::cout << "\nA_inv:\n" << A_inv << std::endl;
std::cout << "\nA*A_inv:\n" << A * A_inv << std::endl;
return 0;
}
运行结果:
A:
2 1 1 0
1 3 1 1
1 1 4 1
0 1 1 5
A_inv:
0.666667 -0.2 -0.133333 0.0666667
-0.2 0.44 -0.04 -0.08
-0.133333 -0.04 0.306667 -0.0533333
0.0666667 -0.08 -0.0533333 0.226667
A*A_inv:
1 -2.08167e-17 0 6.93889e-18
-1.38778e-16 1 0 -2.77556e-17
-1.38778e-16 0 1 0
0 0 -5.55112e-17 1
Python 代码检验:
import numpy as np
A = np.array([
[2, 1, 1, 0],
[1, 3, 1, 1],
[1, 1, 4, 1],
[0, 1, 1, 5]
])
A_inv = np.linalg.inv(A)
print("A_inv:\n", A_inv)
运行结果:
A_inv:
[[ 0.66666667 -0.2 -0.13333333 0.06666667]
[-0.2 0.44 -0.04 -0.08 ]
[-0.13333333 -0.04 0.30666667 -0.05333333]
[ 0.06666667 -0.08 -0.05333333 0.22666667]]
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】