19 typedef typename PINOCCHIO_EIGEN_PLAIN_TYPE(
_Vector) Vector;
23 const Eigen::DenseIndex size,
const int max_it = 10,
const Scalar rel_tol =
Scalar(1
e-8))
24 : principal_eigen_vector(size)
25 , lowest_eigen_vector(size)
29 , eigen_vector_prev(size)
34 template<
typename MatrixLike>
37 PINOCCHIO_CHECK_INPUT_ARGUMENT(max_it >= 1);
41 for (it = 0; it < max_it; ++it)
45 eigen_vector_prev = principal_eigen_vector;
46 principal_eigen_vector.noalias() =
mat * eigen_vector_prev;
60 template<
typename MatrixLike,
typename VectorLike>
67 template<
typename MatrixLike>
70 PINOCCHIO_CHECK_INPUT_ARGUMENT(max_it >= 1);
78 for (it = 0; it < max_it; ++it)
82 eigen_vector_prev = lowest_eigen_vector;
83 lowest_eigen_vector.noalias() =
mat * eigen_vector_prev;
84 lowest_eigen_vector -= largest_eigen_value * eigen_vector_prev;
98 template<
typename MatrixLike,
typename VectorLike>
116 largest_eigen_value = std::numeric_limits<Scalar>::min();
117 lowest_eigen_value = std::numeric_limits<Scalar>::max();
120 Vector principal_eigen_vector;
121 Vector lowest_eigen_vector;
122 Scalar largest_eigen_value;
123 Scalar lowest_eigen_value;
127 Scalar convergence_criteria;
130 Vector eigen_vector_prev;
void computeLargestEigenvector(const MatrixLike &mat, const Eigen::PlainObjectBase< VectorLike > &_eigenvector_est, const int max_it=10, const typename MatrixLike::Scalar rel_tol=1e-8)
Compute the lagest eigenvector of a given matrix according to a given eigenvector estimate.
void computeLowestEigenvector(const MatrixLike &mat, const Eigen::PlainObjectBase< VectorLike1 > &largest_eigenvector_est, const Eigen::PlainObjectBase< VectorLike2 > &lowest_eigenvector_est, const bool compute_largest=true, const int max_it=10, const typename MatrixLike::Scalar rel_tol=1e-8)
Compute the lagest eigenvector of a given matrix according to a given eigenvector estimate.