Loading...
Searching...
No Matches
roboptim::finiteDifferenceGradientPolicies::FivePointsRule< T > Class Template Reference

Precise finite difference gradient computation. More...

#include <roboptim/core/decorator/finite-difference-gradient.hh>

Inheritance diagram for roboptim::finiteDifferenceGradientPolicies::FivePointsRule< T >:
Collaboration diagram for roboptim::finiteDifferenceGradientPolicies::FivePointsRule< T >:

Public Member Functions

 ROBOPTIM_DIFFERENTIABLE_FUNCTION_FWD_TYPEDEFS_ (GenericDifferentiableFunction< T >)
 
 FivePointsRule (const GenericFunction< T > &adaptee)
 
void computeColumn (value_type epsilon, gradient_ref column, const_argument_ref argument, size_type colIdx, argument_ref xEps) const
 
void computeGradient (value_type epsilon, gradient_ref gradient, const_argument_ref argument, size_type idFunction, argument_ref xEps) const
 
void computeJacobian (value_type epsilon, jacobian_ref jacobian, const_argument_ref argument, argument_ref xEps) const
 
void compute_deriv (typename GenericFunction< T >::size_type j, double h, double &result, double &round, double &trunc, typename GenericFunction< T >::const_argument_ref argument, typename GenericFunction< T >::size_type idFunction, typename GenericFunction< T >::argument_ref xEps) const
 Algorithm from the Gnu Scientific Library. More...
 
void computeGradient (value_type epsilon, gradient_ref gradient, const_argument_ref argument, size_type idFunction, argument_ref xEps) const
 
void computeJacobian (value_type epsilon, jacobian_ref jacobian, const_argument_ref argument, argument_ref xEps) const
 
void computeColumn (value_type, gradient_ref, const_argument_ref, size_type, argument_ref) const
 
- Public Member Functions inherited from roboptim::finiteDifferenceGradientPolicies::Policy< T >
 ROBOPTIM_DIFFERENTIABLE_FUNCTION_FWD_TYPEDEFS_ (GenericDifferentiableFunction< T >)
 
 Policy (const GenericFunction< T > &adaptee)
 
virtual ~Policy ()
 Virtual destructor. More...
 
virtual void computeGradient (value_type epsilon, gradient_ref gradient, const_argument_ref argument, size_type idFunction, argument_ref xEps) const =0
 
virtual void computeColumn (value_type epsilon, gradient_ref column, const_argument_ref argument, size_type colIdx, argument_ref xEps) const =0
 
virtual void computeJacobian (value_type epsilon, jacobian_ref jacobian, const_argument_ref argument, argument_ref xEps) const
 
void computeJacobian (value_type epsilon, jacobian_ref jacobian, const_argument_ref argument, argument_ref xEps) const
 

Additional Inherited Members

- Protected Attributes inherited from roboptim::finiteDifferenceGradientPolicies::Policy< T >
const GenericFunction< T > & adaptee_
 Wrapped function. More...
 
vector_t column_
 Vector storing temporary Jacobian column. More...
 
gradient_t gradient_
 Vector storing temporary Jacobian row. More...
 

Detailed Description

template<typename T>
class roboptim::finiteDifferenceGradientPolicies::FivePointsRule< T >

Precise finite difference gradient computation.

Finite difference is computed using five-points stencil (i.e. $\{x-2h, x-h, x, x+h, x+2h\}$).

Constructor & Destructor Documentation

◆ FivePointsRule()

template<typename T >
roboptim::finiteDifferenceGradientPolicies::FivePointsRule< T >::FivePointsRule ( const GenericFunction< T > &  adaptee)
inlineexplicit

Member Function Documentation

◆ compute_deriv()

template<typename T >
void roboptim::finiteDifferenceGradientPolicies::FivePointsRule< T >::compute_deriv ( typename GenericFunction< T >::size_type  j,
double  h,
double &  result,
double &  round,
double &  trunc,
typename GenericFunction< T >::const_argument_ref  argument,
typename GenericFunction< T >::size_type  idFunction,
typename GenericFunction< T >::argument_ref  xEps 
) const

Algorithm from the Gnu Scientific Library.

◆ computeColumn() [1/2]

template<typename T >
void roboptim::finiteDifferenceGradientPolicies::FivePointsRule< T >::computeColumn ( value_type  epsilon,
gradient_ref  column,
const_argument_ref  argument,
size_type  colIdx,
argument_ref  xEps 
) const
virtual

◆ computeColumn() [2/2]

void roboptim::finiteDifferenceGradientPolicies::FivePointsRule< EigenMatrixSparse >::computeColumn ( value_type  ,
gradient_ref  ,
const_argument_ref  ,
size_type  ,
argument_ref   
) const
inlinevirtual

◆ computeGradient() [1/2]

template<typename T >
void roboptim::finiteDifferenceGradientPolicies::FivePointsRule< T >::computeGradient ( value_type  epsilon,
gradient_ref  gradient,
const_argument_ref  argument,
size_type  idFunction,
argument_ref  xEps 
) const
virtual

◆ computeGradient() [2/2]

void roboptim::finiteDifferenceGradientPolicies::FivePointsRule< EigenMatrixSparse >::computeGradient ( value_type  epsilon,
gradient_ref  gradient,
const_argument_ref  argument,
size_type  idFunction,
argument_ref  xEps 
) const
inlinevirtual

◆ computeJacobian() [1/2]

template<typename T >
void roboptim::finiteDifferenceGradientPolicies::FivePointsRule< T >::computeJacobian ( value_type  epsilon,
jacobian_ref  jacobian,
const_argument_ref  argument,
argument_ref  xEps 
) const
virtual

◆ computeJacobian() [2/2]

void roboptim::finiteDifferenceGradientPolicies::FivePointsRule< EigenMatrixSparse >::computeJacobian ( value_type  epsilon,
jacobian_ref  jacobian,
const_argument_ref  argument,
argument_ref  xEps 
) const
inlinevirtual

ROBOPTIM_DO_NOT_CHECK_ALLOCATION

ROBOPTIM_DO_NOT_CHECK_ALLOCATION

Reimplemented from roboptim::finiteDifferenceGradientPolicies::Policy< T >.

References roboptim::is_malloc_allowed(), and roboptim::set_is_malloc_allowed().

◆ ROBOPTIM_DIFFERENTIABLE_FUNCTION_FWD_TYPEDEFS_()

template<typename T >
roboptim::finiteDifferenceGradientPolicies::FivePointsRule< T >::ROBOPTIM_DIFFERENTIABLE_FUNCTION_FWD_TYPEDEFS_ ( GenericDifferentiableFunction< T >  )