Eigen

      Commentaires fermés sur Eigen

Description

Eigen est une bibliothèque C++ open source dédiée au calcul matriciel, à l’algèbre linéaire et aux opérations numériques.

Elle fournit des structures de données et des algorithmes performants pour manipuler des vecteurs, des matrices, des décompositions, des systèmes linéaires et des transformations géométriques.

Eigen est une bibliothèque « header-only », ce qui signifie qu’elle ne nécessite pas de compilation ni d’édition de liens supplémentaire.

L’objectif est d’offrir une bibliothèque à la fois simple d’utilisation, portable et optimisée pour les applications scientifiques, l’ingénierie, la robotique et le calcul haute performance.

Mise en place de l’environnement

ml libs/eigen
  • Version(s) disponible(s) : 3.4.1

Tutoriel

Cas d’usage : résolution d’un système linéaire

  • L’objectif de cet exemple est de résoudre un système linéaire de la forme :Ax=bAx = b
    • AA est la matrice des coefficients, bbb le vecteur second membre, et xx le vecteur des inconnues.
  • Créer le fichier resolution.cpp
#include <iostream>
#include <Eigen/Dense>

using namespace Eigen;

int main()
{
    // Définition de la matrice A
    Matrix3d A;
    A <<  3,  2, -1,
          2, -2,  4,
         -1, 0.5, -1;

    // Définition du vecteur b
    Vector3d b;
    b << 1, -2, 0;

    // Résolution du système Ax = b
    Vector3d x = A.colPivHouseholderQr().solve(b);

    // Affichage
    std::cout << "Resolution du systeme lineaire A * x = b\n\n";

    std::cout << "Matrice A =\n";
    std::cout << A << "\n\n";

    std::cout << "Vecteur b =\n";
    std::cout << b << "\n\n";

    std::cout << "Solution x =\n";
    std::cout << x << std::endl;

    return 0;
}
  • Compiler
ml libs/eigen
g++ -O3 -std=c++17 resolution.cpp -o resolution
  • Exécuter dans un job
srun ./resolution

Remarque : le module libs/eigen doit être chargé dans l’environnement du shell ou du job avant de compiler et avant d’exécuter le programme.

Documentation