Skip to content

Li-Jesse-Jiaze/hermitian-eigensolver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hermitian EigenSolver

A header-only C++ library for computing eigenvalues and eigenvectors of dense Hermitian matrices using Householder tri-diagonalization and QR iteration. This project was developed as the programming exam for the Numerical Linear Algebra course at the University of Heidelberg (2024).

📋 Prerequisites

  • C++ compiler with C++11 support (e.g., GCC, Clang).
  • CMake.
  • Armadillo.

🔧 Build

Codes:

mkdir build && cd build
cmake ..
cmake --build .
# run the tests
# ./main

Documents:

cmake --build . --target doc

▶ Run

Usage #include "HermitianEigenSolver.h"

Example:

arma::cx_mat A = arma::randn<arma::cx_mat>(5, 5);
A = arma::symmatl(A);
HermitianEigenSolver solver(A, false); // eigenvalues only
solver.eigenvalues().t().print("The eigenvalues of A are:");
solver.compute(A + arma::eye(5, 5)); // re-use for A+I
solver.eigenvalues().t().print("The eigenvalues of A+I are:");

Output:

The eigenvalues of A are:
   3.7758  -1.8090  -1.2123   1.2705   0.6426
The eigenvalues of A+I are:
   4.7758  -0.8090  -0.2123   2.2705   1.6426

About

A header-only C++ eigensolver of dense Hermitian matrices using Householder QR.

Topics

Resources

License

Stars

Watchers

Forks