namespace ewalena
0.2.15
ewalena is not an acronym
|
#include <include/ewalena/lac/solver_jacobi.h>
Public Member Functions | |
virtual void | solve (const Matrix< ValueType > &A, Vector< ValueType > &lambda, VectorBasis< ValueType > &X) |
SolverJacobi (SolverControl< ValueType > &solver_control) | |
Protected Member Functions | |
void | do_jacobi_rotation (ValueType *index_i, ValueType *index_j, const ValueType &root) |
void | sort (Vector< ValueType > &lambda) |
void | sort (Vector< ValueType > &lambda, VectorBasis< ValueType > &X) |
The SolverJacobi class is a standard eigenspectrum solver that uses cyclic Jacobi transformations to annihilate the upper triangle of the matrix .
Let the definition of the rotation angle
can be written as
where the smaller root corresponds to an angle
ewalena::SolverJacobi< ValueType >::SolverJacobi | ( | SolverControl< ValueType > & | solver_control | ) |
Constructor.
void ewalena::SolverJacobi< ValueType >::do_jacobi_rotation | ( | ValueType * | index_i, |
ValueType * | index_j, | ||
const ValueType & | root | ||
) | [inline, protected] |
Do a jacobi rotation with two indices index_i
and index_j
. The variable root
is the root of the quadratic: , as defined in the class documentation.
virtual void ewalena::SolverJacobi< ValueType >::solve | ( | const Matrix< ValueType > & | A, |
Vector< ValueType > & | lambda, | ||
VectorBasis< ValueType > & | X | ||
) | [virtual] |
Actually solve the eigensystem .
Reimplemented from ewalena::SolverBase< ValueType >.
void ewalena::SolverJacobi< ValueType >::sort | ( | Vector< ValueType > & | lambda | ) | [inline, protected] |
Sort eigenvalues in ascending order.
void ewalena::SolverJacobi< ValueType >::sort | ( | Vector< ValueType > & | lambda, |
VectorBasis< ValueType > & | X | ||
) | [inline, protected] |
Sort eigenpairs in ascending order.