Eigen para C++: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a Eigen: qué es y para qué sirve

\n\n

Eigen es una biblioteca de alto rendimiento para álgebra lineal en el lenguaje C++. Proporciona una amplia gama de capacidades para trabajar con vectores, matrices, matrices dispersas, así como para resolver sistemas de ecuaciones lineales, calcular valores propios y descomposición en valores singulares. Eigen está escrito en C++ puro (plantillas) y no requiere dependencias externas, lo que lo convierte en una opción ideal para sistemas embebidos, computación científica, gráficos por computadora, aprendizaje automático y robótica.

\n\n

¿Para qué sirve Eigen? A diferencia de muchas otras bibliotecas (por ejemplo, LAPACK o BLAS), Eigen ofrece una API intuitiva que se asemeja al trabajo con matrices en MATLAB o NumPy. Soporta evaluación perezosa (lazy evaluation) y vectorización (SSE, AVX, NEON), lo que proporciona un rendimiento cercano a la optimización manual en ensamblador. Eigen también es completamente compatible con los estándares modernos de C++ (C++11 y superiores) y cuenta con el apoyo activo de la comunidad.

\n\n

Capacidades principales:

\n
    \n
  • Trabajo con matrices densas y dispersas de tamaños arbitrarios.
  • \n
  • Operaciones: suma, multiplicación, transposición, inversión.
  • \n
  • Solución de sistemas lineales (LU, QR, Cholesky, SVD).
  • \n
  • Cálculo de valores propios y vectores propios.
  • \n
  • Transformaciones geométricas (rotaciones, cuaterniones).
  • \n
  • Soporte para tipos de datos arbitrarios (float, double, complex, tipos definidos por el usuario).
  • \n
\n\n

Instalación de Eigen

\n\n

Eigen es una biblioteca que consta solo de archivos de encabezado (header-only). Esto significa que no necesita compilar una biblioteca separada; simplemente incluya los encabezados necesarios en su proyecto. La instalación depende del sistema operativo y del gestor de paquetes.

\n\n

Instalación a través de gestores de paquetes

\n\n

Linux (Ubuntu/Debian):

\n
sudo apt-get install libeigen3-dev
\n\n

macOS (Homebrew):

\n
brew install eigen
\n\n

Windows (vcpkg):

\n
vcpkg install eigen3
\n\n

Windows (Conan):

\n
conan install eigen/3.4.0@
\n\n

Instalación manual (para todos los SO)

\n\n

Descargue la última versión desde el sitio web oficial o clone el repositorio:

\n
git clone https://gitlab.com/libeigen/eigen.git
\n\n

Luego, indique la ruta a la carpeta Eigen en su compilador. Por ejemplo, para g++:

\n
g++ -I /ruta/a/eigen mi_programa.cpp -o mi_programa
\n\n

Nota: Si usa CMake, agregue en CMakeLists.txt:

\n
find_package(Eigen3 REQUIRED)\ntarget_link_libraries(mi_objetivo Eigen3::Eigen)
\n\n

Inicio rápido con un ejemplo de código

\n\n

Escribamos un programa simple que crea una matriz y un vector, realiza una multiplicación e imprime el resultado.

\n\n
#include <iostream>\n#include <Eigen/Dense>\n\nint main() {\n    // Crear una matriz 2x2\n    Eigen::Matrix2d A;\n    A << 1, 2,\n         3, 4;\n\n    // Crear un vector 2x1\n    Eigen::Vector2d b(5, 6);\n\n    // Multiplicar la matriz por el vector\n    Eigen::Vector2d x = A * b;\n\n    // Imprimir el resultado\n    std::cout << "A * b =\\n" << x << std::endl;\n\n    return 0;\n}
\n\n

Compilación y ejecución:

\n
g++ -I /ruta/a/eigen ejemplo.cpp -o ejemplo\n./ejemplo
\n\n

Salida:

\n
A * b =\n17\n39
\n\n

Este ejemplo demuestra lo sencillo que es trabajar con Eigen: la sintaxis se asemeja a las operaciones matemáticas y la salida se formatea automáticamente.

\n\n

Métodos y funciones principales de Eigen

\n\n

A continuación se presentan 10 métodos/funciones clave de Eigen con descripción detallada, parámetros y ejemplos.

\n\n

1.

Recommendations