File linearization.h#
-
namespace sym
Typedefs
-
template<typename Scalar>
using SparseLinearization = Linearization<Eigen::SparseMatrix<Scalar>>#
-
using SparseLinearizationd = SparseLinearization<double>#
-
using SparseLinearizationf = SparseLinearization<float>#
-
template<typename Scalar>
using DenseLinearization = Linearization<MatrixX<Scalar>>#
-
using DenseLinearizationd = DenseLinearization<double>#
-
using DenseLinearizationf = DenseLinearization<float>#
Functions
-
template<typename Scalar>
sparse_matrix_structure_t GetSparseStructure(const Eigen::SparseMatrix<Scalar> &matrix)# Returns the sparse matrix structure of matrix.
-
template<typename Derived>
sparse_matrix_structure_t GetSparseStructure(const Eigen::EigenBase<Derived> &matrix)# Return a default initialized sparse structure because arg is dense.
-
template<typename MatrixType, typename Scalar, typename std::enable_if_t<kIsSparseEigenType<MatrixType>, bool> = true>
Eigen::Map<const Eigen::SparseMatrix<Scalar>> MatrixViewFromSparseStructure(const sparse_matrix_structure_t &structure, const MatrixX<Scalar> &values)# Returns the reconstructed matrix from the stored values and sparse_matrix_structure_t
Useful for reconstructing the jacobian for an iteration in the OptimizationStats
The result contains references to structure and values, so its lifetime must be shorter than those.
- Parameters:
rows – The number of rows in the matrix (must match structure.shape for sparse matrices)
cols – The number of columns in the matrix (must match structure.shape for sparse matrices)
structure – The sparsity pattern of the matrix, as obtained from GetSparseStructure or stored in OptimizationStats::iterations. For dense matrices, this should be empty.
values – The coefficients of the matrix; flat for sparse matrices, 2d for dense
- Template Parameters:
MatrixType – The type of the matrix used to decide if the result is sparse or dense. This is not otherwise used
Scalar – The scalar type of the result (must match the scalar type of values)
-
template<typename MatrixType, typename Scalar, typename std::enable_if_t<kIsEigenType<MatrixType>, bool> = true>
Eigen::Map<const MatrixX<Scalar>> MatrixViewFromSparseStructure(const sparse_matrix_structure_t &structure, const MatrixX<Scalar> &values)# Returns the reconstructed matrix from the stored values and sparse_matrix_structure_t
Useful for reconstructing the jacobian for an iteration in the OptimizationStats
The result contains references to structure and values, so its lifetime must be shorter than those.
- Parameters:
rows – The number of rows in the matrix (must match structure.shape for sparse matrices)
cols – The number of columns in the matrix (must match structure.shape for sparse matrices)
structure – The sparsity pattern of the matrix, as obtained from GetSparseStructure or stored in OptimizationStats::iterations. For dense matrices, this should be empty.
values – The coefficients of the matrix; flat for sparse matrices, 2d for dense
- Template Parameters:
MatrixType – The type of the matrix used to decide if the result is sparse or dense. This is not otherwise used
Scalar – The scalar type of the result (must match the scalar type of values)
-
template<typename Scalar>
Eigen::Map<const VectorX<Scalar>> JacobianValues(const Eigen::SparseMatrix<Scalar> &matrix)# Returns coefficients of matrix. Overloads exist for both dense and sparse matrices to make writing generic code easier.
This version returns the non-zero values of an Eigen::SparseMatrix
Note: it returns a map, so be careful about mutating or disposing of matrix before you are finished with the output.
-
template<typename MatrixType>
struct Linearization# - #include <linearization.h>
Class for storing a problem linearization evaluated at a Values (i.e. a residual, jacobian, hessian, and rhs)
MatrixType is expected to be an Eigen MatrixX or SparseMatrix.
Public Functions
-
inline void Reset()#
Set to invalid
-
inline bool IsInitialized() const#
Returns whether the linearization is currently valid for the corresponding values. Accessing any of the members when this is false could result in unexpected behavior
-
inline void SetInitialized(const bool initialized = true)#
-
inline Scalar LinearDeltaError(const Vector &x_update, const Vector &damping_vector) const#
Returns the change in error predicted by the Linearization at the given update
- Parameters:
x_update – The update to the values
damping_vector – The vector added to the diagonal of the hessian during the linear solve
Private Members
-
bool initialized_ = {false}#
-
inline void Reset()#
-
template<typename Scalar>