Eigen para C++: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao Eigen: o que é e para que serve

\n\n

Eigen é uma biblioteca de alto desempenho para álgebra linear na linguagem C++. Ela oferece uma ampla gama de funcionalidades para trabalhar com vetores, matrizes, matrizes esparsas, bem como para resolver sistemas de equações lineares, calcular autovalores e decomposição em valores singulares. Eigen é escrito em C++ puro (templates) e não requer dependências externas, o que o torna uma escolha ideal para sistemas embarcados, computação científica, computação gráfica, aprendizado de máquina e robótica.

\n\n

Para que serve o Eigen? Ao contrário de muitas outras bibliotecas (por exemplo, LAPACK ou BLAS), Eigen oferece uma API intuitiva que lembra o trabalho com matrizes no MATLAB ou NumPy. Ela suporta avaliação preguiçosa (lazy evaluation) e vetorização (SSE, AVX, NEON), o que garante desempenho próximo à otimização manual em assembly. Eigen também é totalmente compatível com os padrões modernos de C++ (C++11 e superiores) e é ativamente mantido pela comunidade.

\n\n

Principais funcionalidades:

\n
    \n
  • Trabalho com matrizes densas e esparsas de tamanhos arbitrários.
  • \n
  • Operações: adição, multiplicação, transposição, inversão.
  • \n
  • Resolução de sistemas lineares (LU, QR, Cholesky, SVD).
  • \n
  • Cálculo de autovalores e autovetores.
  • \n
  • Transformações geométricas (rotações, quatérnios).
  • \n
  • Suporte a tipos de dados arbitrários (float, double, complex, tipos personalizados).
  • \n
\n\n

Instalação do Eigen

\n\n

Eigen é uma biblioteca composta apenas por arquivos de cabeçalho (header-only). Isso significa que você não precisa compilar uma biblioteca separada — basta incluir os cabeçalhos necessários no seu projeto. A instalação depende do sistema operacional e do gerenciador de pacotes.

\n\n

Instalação via gerenciadores de pacotes

\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

Instalação manual (para todos os SOs)

\n\n

Baixe a versão mais recente do site oficial ou clone o repositório:

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

Em seguida, indique o caminho para a pasta Eigen no seu compilador. Por exemplo, para g++:

\n
g++ -I /caminho/para/eigen meu_programa.cpp -o meu_programa
\n\n

Nota: Se você estiver usando CMake, adicione no CMakeLists.txt:

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

Início rápido com exemplo de código

\n\n

Vamos escrever um programa simples que cria uma matriz e um vetor, realiza a multiplicação e exibe o resultado.

\n\n
#include <iostream>\n#include <Eigen/Dense>\n\nint main() {\n    // Cria uma matriz 2x2\n    Eigen::Matrix2d A;\n    A << 1, 2,\n         3, 4;\n\n    // Cria um vetor 2x1\n    Eigen::Vector2d b(5, 6);\n\n    // Multiplica a matriz pelo vetor\n    Eigen::Vector2d x = A * b;\n\n    // Exibe o resultado\n    std::cout << "A * b =\\n" << x << std::endl;\n\n    return 0;\n}
\n\n

Compilação e execução:

\n
g++ -I /caminho/para/eigen exemplo.cpp -o exemplo\n./exemplo
\n\n

Saída:

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

Este exemplo demonstra como é simples trabalhar com Eigen: a sintaxe é semelhante a operações matemáticas e a saída é formatada automaticamente.

\n\n

Principais métodos e funções do Eigen

\n\n

Abaixo estão 10 métodos/funções principais do Eigen com descrição detalhada, parâmetros e exemplos.

\n\n

1.

Recommendations