Eigen für C++: Vollständiger Leitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in Eigen: Was es ist und warum man es braucht

\n\n

Eigen ist eine leistungsstarke Bibliothek für lineare Algebra in der Sprache C++. Sie bietet eine breite Palette von Möglichkeiten für die Arbeit mit Vektoren, Matrizen, dünnbesetzten Matrizen sowie zur Lösung linearer Gleichungssysteme, Berechnung von Eigenwerten und Singulärwertzerlegung. Eigen ist in reinem C++ (Templates) geschrieben und benötigt keine externen Abhängigkeiten, was es zur idealen Wahl für eingebettete Systeme, wissenschaftliches Rechnen, Computergrafik, maschinelles Lernen und Robotik macht.

\n\n

Warum braucht man Eigen? Im Gegensatz zu vielen anderen Bibliotheken (z. B. LAPACK oder BLAS) bietet Eigen eine intuitive API, die an die Arbeit mit Matrizen in MATLAB oder NumPy erinnert. Sie unterstützt Lazy Evaluation und Vektorisierung (SSE, AVX, NEON), was eine Leistung ermöglicht, die nahe an manueller Optimierung in Assembler liegt. Eigen ist zudem vollständig kompatibel mit modernen C++-Standards (C++11 und höher) und wird aktiv von der Community unterstützt.

\n\n

Hauptfunktionen:

\n
    \n
  • Arbeit mit dichten und dünnbesetzten Matrizen beliebiger Größe.
  • \n
  • Operationen: Addition, Multiplikation, Transponierung, Invertierung.
  • \n
  • Lösung linearer Systeme (LU, QR, Cholesky, SVD).
  • \n
  • Berechnung von Eigenwerten und Eigenvektoren.
  • \n
  • Geometrische Transformationen (Rotationen, Quaternionen).
  • \n
  • Unterstützung beliebiger Datentypen (float, double, complex, benutzerdefinierte Typen).
  • \n
\n\n

Installation von Eigen

\n\n

Eigen ist eine reine Header-Only-Bibliothek. Das bedeutet, dass Sie keine separate Bibliothek kompilieren müssen – es reicht aus, die benötigten Header in Ihr Projekt einzubinden. Die Installation hängt vom Betriebssystem und Paketmanager ab.

\n\n

Installation über Paketmanager

\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

Manuelle Installation (für alle Betriebssysteme)

\n\n

Laden Sie die neueste Version von der offiziellen Website herunter oder klonen Sie das Repository:

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

Geben Sie dann den Pfad zum Ordner Eigen in Ihrem Compiler an. Zum Beispiel für g++:

\n
g++ -I /pfad/zu/eigen mein_programm.cpp -o mein_programm
\n\n

Hinweis: Wenn Sie CMake verwenden, fügen Sie in CMakeLists.txt hinzu:

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

Schnellstart mit einem Codebeispiel

\n\n

Schreiben wir ein einfaches Programm, das eine Matrix und einen Vektor erstellt, eine Multiplikation durchführt und das Ergebnis ausgibt.

\n\n
#include <iostream>\n#include <Eigen/Dense>\n\nint main() {\n    // Erstellen einer 2x2-Matrix\n    Eigen::Matrix2d A;\n    A << 1, 2,\n         3, 4;\n\n    // Erstellen eines 2x1-Vektors\n    Eigen::Vector2d b(5, 6);\n\n    // Multiplizieren der Matrix mit dem Vektor\n    Eigen::Vector2d x = A * b;\n\n    // Ausgabe des Ergebnisses\n    std::cout << "A * b =\\n" << x << std::endl;\n\n    return 0;\n}
\n\n

Kompilierung und Ausführung:

\n
g++ -I /pfad/zu/eigen beispiel.cpp -o beispiel\n./beispiel
\n\n

Ausgabe:

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

Dieses Beispiel zeigt, wie einfach die Arbeit mit Eigen ist: Die Syntax ähnelt mathematischen Operationen und die Ausgabe wird automatisch formatiert.

\n\n

Wichtige Methoden und Funktionen von Eigen

\n\n

Nachfolgend sind 10 wichtige Methoden/Funktionen von Eigen mit detaillierter Beschreibung, Parametern und Beispielen aufgeführt.

\n\n

1.

Empfehlungen