Eigen para C++: guia completo com exemplos práticos
1. O que é e para que serve
Eigen é uma biblioteca de álgebra linear de alto desempenho, baseada em templates, para a linguagem C++. Ela oferece aos desenvolvedores ferramentas poderosas e intuitivas para trabalhar com matrizes, vetores, solucionadores numéricos e algoritmos relacionados. Diferente de muitas outras bibliotecas (como BLAS/LAPACK), Eigen é escrito em C++ puro, sem dependências externas, tornando-se a escolha ideal para projetos onde a simplicidade de integração e a portabilidade do código são essenciais.
Para que serve? No mundo da programação moderna, a álgebra linear está na base de inúmeras tarefas: desde computação gráfica e processamento de imagens até aprendizado de máquina, robótica e simulações científicas. Eigen permite que os desenvolvedores não reinventem a roda, utilizando algoritmos otimizados e testados que, muitas vezes, são mais rápidos que implementações manuais. A biblioteca faz uso intensivo de templates C++ (template expressions) para realizar otimizações complexas em tempo de compilação, evitando a sobrecarga de criação de objetos temporários e combinando operações em um único loop eficiente.
Eigen suporta todos os principais tipos de matrizes (densas, esparsas, de tamanho fixo e dinâmico), uma ampla gama de decomposições (LU, QR, SVD, Cholesky, autovalores) e transformações geométricas (rotações, translações, transformações afins). Graças à sua flexibilidade e desempenho, Eigen é o padrão de facto para muitos projetos C++, incluindo frameworks conhecidos como ROS (Robot Operating System), TensorFlow (parcialmente) e CGAL.
2. Instalação
Eigen é uma biblioteca apenas de cabeçalhos (header-only). Isso significa que você não precisa compilar uma biblioteca separada ou fazer linkagem com ela. Basta baixar os arquivos e informar ao compilador o caminho para eles.
Método 1: Instalação manual (recomendado para aprendizado)
# Baixe a versão mais recente do site oficial ou GitHub
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
tar -xzf eigen-3.4.0.tar.gz
sudo mv eigen-3.4.0 /usr/local/include/eigen3
Agora, ao compilar, informe o caminho para os arquivos de cabeçalho:
g++ -std=c++11 -I /usr/local/include/eigen3 meu_programa.cpp -o meu_programa
Método 2: Via gerenciador de pacotes (Linux/macOS)
# Ubuntu/Debian
sudo apt-get install libeigen3-dev
# macOS (via Homebrew)
brew install eigen
Método 3: Via vcpkg ou Conan (Windows)
# vcpkg
vcpkg install eigen3
# Conan
conan install eigen/3.4.0@
Importante: Ao contrário do Python (pip) ou JavaScript (npm), Eigen não é instalado via gerenciador de pacotes da linguagem. É uma biblioteca de sistema em C++.
3. Início rápido — exemplo mínimo funcional
Crie um arquivo main.cpp e copie o código a seguir:
#include <iostream>
#include <Eigen/Dense> // Cabeçalho principal para matrizes densas
int main() {
// Cria uma matriz 2x2 e a preenche
Eigen::Matrix2d mat;
mat << 1, 2,
3, 4;
// Cria um vetor 2x1
Eigen::Vector2d vec(5, 6);
// Multiplica a matriz pelo vetor
Eigen::Vector2d resultado = mat * vec;
// Exibe o resultado
std::cout << "Matriz:\n" << mat << std::endl;
std::cou Também na biblioteca
Validação de dados em Rust: visão geral de bibliotecas e frameworks
Testes em Swift (iOS/macOS): frameworks e ferramentas
Trabalhando com YAML em Rust: biblioteca serde_yaml
Filas de Tarefas em Rust: Visão Geral das Bibliotecas para Processamento Assíncrono
Media3 / ExoPlayer para Kotlin: guia completo com exemplos práticos