语言, C/C++专题

C++线性代数库Eigen的安装和示例​

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]]
349 次浏览

【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code