numerics 0.1.0
Loading...
Searching...
No Matches
lanczos.hpp File Reference

Lanczos eigensolver for symmetric operators. More...

#include "core/matrix.hpp"
#include "core/policy.hpp"
#include "core/vector.hpp"
#include "kernel/subspace.hpp"
#include "linalg/eigen/jacobi_eig.hpp"
#include "linalg/sparse/sparse.hpp"
#include "core/concepts.hpp"
#include <algorithm>
#include <cmath>
#include <stdexcept>

Go to the source code of this file.

Classes

struct  num::LanczosResult
 

Namespaces

namespace  num
 
namespace  num::detail
 

Functions

template<class Op >
requires LinearOperator<Op, Vector, Vector>
LanczosResult num::detail::lanczos_operator_impl (const Op &A, idx k, real tol, idx max_steps, Backend backend)
 
template<class Op >
requires SymmetricLinearOperator<Op, Vector, Vector>
LanczosResult num::lanczos (const Op &A, idx k, real tol=1e-10, idx max_steps=0, Backend backend=Backend::seq)
 Operator Lanczos for a declared symmetric \(y=A x\) adapter.
 
LanczosResult num::lanczos (const Matrix &A, idx k, real tol=1e-10, idx max_steps=0, Backend backend=Backend::seq)
 
LanczosResult num::lanczos (const SparseMatrix &A, idx k, real tol=1e-10, idx max_steps=0, Backend backend=Backend::seq)
 

Detailed Description

Lanczos eigensolver for symmetric operators.

Builds an orthonormal basis \(Q_m\) such that \(Q_m^T A Q_m = T_m\), with \(T_m\) tridiagonal.

Todo:
Add thick-restart Lanczos and selective reorthogonalization controls.

Definition in file lanczos.hpp.