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).
Codes:
mkdir build && cd build
cmake ..
cmake --build .
# run the tests
# ./mainDocuments:
cmake --build . --target docUsage #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