roboptim::NTimesDerivableFunction< 2 > Class Template Reference

Explicit specialization for the stop case of NTimesDerivable class. More...

#include <roboptim/core/n-times-derivable-function.hh>

+ Inheritance diagram for roboptim::NTimesDerivableFunction< 2 >:

List of all members.

Public Member Functions

virtual ~NTimesDerivableFunction () throw ()
size_type derivativeSize () const throw ()
 Return the size of the derivative vector.
bool isValidDerivative (const gradient_t &derivative) const throw ()
 Check if a derivative is valid (check sizes).
result_t operator() (double argument) const throw ()
 Evaluate the function at a specified point.
void operator() (result_t &result, double argument) const throw ()
 Evaluate the function at a specified point.
gradient_t derivative (double argument, size_type order=1) const throw ()
 Compute the derivative of the function. Derivative is computed for a certain order, at a given point.
void derivative (gradient_t &derivative, double argument, size_type order=1) const throw ()
 Compute the derivative of the function. Derivative is computed for a certain order, at a given point.
virtual std::ostream & print (std::ostream &o) const throw ()
 Display the function on the specified output stream.
- Public Member Functions inherited from roboptim::TwiceDerivableFunction
hessianSize_t hessianSize () const throw ()
 Return the size of a hessian.
bool isValidHessian (const hessian_t &hessian) const throw ()
 Check if the hessian is valid (check sizes).
hessian_t hessian (const argument_t &argument, size_type functionId=0) const throw ()
 Compute the hessian at a given point.
void hessian (hessian_t &hessian, const argument_t &argument, size_type functionId=0) const throw ()
 Compute the hessian at a given point.
- Public Member Functions inherited from roboptim::DerivableFunction
size_type gradientSize () const throw ()
 Return the gradient size.
jacobianSize_t jacobianSize () const throw ()
 Return the jacobian size as a pair.
bool isValidGradient (const gradient_t &gradient) const throw ()
 Check if the gradient is valid (check size).
bool isValidJacobian (const jacobian_t &jacobian) const throw ()
 Check if the jacobian is valid (check sizes).
jacobian_t jacobian (const argument_t &argument) const throw ()
 Computes the jacobian.
void jacobian (jacobian_t &jacobian, const argument_t &argument) const throw ()
 Computes the jacobian.
gradient_t gradient (const argument_t &argument, size_type functionId=0) const throw ()
 Computes the gradient.
void gradient (gradient_t &gradient, const argument_t &argument, size_type functionId=0) const throw ()
 Computes the gradient.
- Public Member Functions inherited from roboptim::Function
bool isValidResult (const result_t &result) const throw ()
 Check the given result size is valid.
size_type inputSize () const throw ()
 Return the input size (i.e. argument's vector size).
size_type outputSize () const throw ()
 Return the output size (i.e. result's vector size).
virtual ~Function () throw ()
 Trivial destructor.
result_t operator() (const argument_t &argument) const throw ()
 Evaluate the function at a specified point.
void operator() (result_t &result, const argument_t &argument) const throw ()
 Evaluate the function at a specified point.
const std::string & getName () const throw ()
 Get function name.

Static Public Attributes

static const size_type derivabilityOrder = 2
 Function derivability order.

Protected Member Functions

 NTimesDerivableFunction (size_type outputSize=1, std::string name=std::string()) throw ()
 Concrete class constructor should call this constructor.
void impl_compute (result_t &result, const argument_t &argument) const throw ()
 Function evaluation.
virtual void impl_compute (result_t &result, double t) const =0 throw ()
 Function evaluation.
void impl_gradient (gradient_t &gradient, const argument_t &argument, size_type functionId=0) const throw ()
 Gradient evaluation.
virtual void impl_derivative (gradient_t &derivative, double argument, size_type order=1) const =0 throw ()
 Derivative evaluation.
void impl_hessian (hessian_t &hessian, const argument_t &argument, size_type functionId=0) const throw ()
 Hessian evaluation.
- Protected Member Functions inherited from roboptim::TwiceDerivableFunction
 TwiceDerivableFunction (size_type inputSize, size_type outputSize=1, std::string name=std::string()) throw ()
 Concrete class constructor should call this constructor.
- Protected Member Functions inherited from roboptim::DerivableFunction
 DerivableFunction (size_type inputSize, size_type outputSize=1, std::string name=std::string()) throw ()
 Concrete class constructor should call this constructor.
virtual void impl_jacobian (jacobian_t &jacobian, const argument_t &arg) const throw ()
 Jacobian evaluation.
- Protected Member Functions inherited from roboptim::Function
 Function (size_type inputSize, size_type outputSize=1, std::string name=std::string()) throw ()
 Concrete class constructor should call this constructor.

Additional Inherited Members

- Public Types inherited from roboptim::TwiceDerivableFunction
typedef
ublas::symmetric_matrix
< value_type, ublas::lower > 
hessian_t
 Hessian type.
typedef std::pair< size_type,
size_type
hessianSize_t
 Hessian size type represented as a pair of values.
- Public Types inherited from roboptim::DerivableFunction
typedef vector_t gradient_t
 Gradient type.
typedef matrix_t jacobian_t
 Jacobian type.
typedef std::pair< value_type,
value_type
jacobianSize_t
 Jacobian size type (pair of values).
- Public Types inherited from roboptim::Function
typedef double value_type
 Values type.
typedef std::size_t size_type
 Size type.
typedef ublas::vector< value_typevector_t
 Basic vector type.
typedef ublas::matrix< value_typematrix_t
 Basic matrix type.
typedef vector_t result_t
 Type of a function evaluation result.
typedef vector_t argument_t
 Type of a function evaluation argument.
typedef std::pair< value_type,
value_type
interval_t
 Interval type (lower, upper). Use negative or positive infinity to respectively disable the lower or upper bound.
typedef std::vector< interval_tintervals_t
 Vector of intervals.
typedef boost::tuple
< value_type, value_type,
value_type
discreteInterval_t
 Types representing a discrete interval. A discrete interval is a triplet of values:

Detailed Description

template<>
class roboptim::NTimesDerivableFunction< 2 >

Explicit specialization for the stop case of NTimesDerivable class.

This specialization defines the interface of a ``n times derivable function'' and implements generic methods required by upper classes using this class specific interface.


Constructor & Destructor Documentation

virtual roboptim::NTimesDerivableFunction< 2 >::~NTimesDerivableFunction ( ) throw ()
inlinevirtual
roboptim::NTimesDerivableFunction< 2 >::NTimesDerivableFunction ( size_type  outputSize = 1,
std::string  name = std::string () 
) throw ()
inlineprotected

Concrete class constructor should call this constructor.

Parameters:
outputSizeoutput size (result size)
namefunction's name

Member Function Documentation

gradient_t roboptim::NTimesDerivableFunction< 2 >::derivative ( double  argument,
size_type  order = 1 
) const throw ()
inline

Compute the derivative of the function. Derivative is computed for a certain order, at a given point.

Parameters:
argumentpoint at which the derivative will be computed
orderderivative order (if 0 then function is evaluated)
Returns:
derivative vector
void roboptim::NTimesDerivableFunction< 2 >::derivative ( gradient_t derivative,
double  argument,
size_type  order = 1 
) const throw ()
inline

Compute the derivative of the function. Derivative is computed for a certain order, at a given point.

Parameters:
derivativederivative will be stored in this vector
argumentpoint at which the derivative will be computed
orderderivative order (if 0 then function is evaluated)

References roboptim::NTimesDerivableFunction< DerivabilityOrder >::derivabilityOrder.

size_type roboptim::NTimesDerivableFunction< 2 >::derivativeSize ( ) const throw ()
inline

Return the size of the derivative vector.

Returns:
derivative vector size
void roboptim::NTimesDerivableFunction< 2 >::impl_compute ( result_t result,
const argument_t argument 
) const throw ()
inlineprotectedvirtual

Function evaluation.

Implement generic function evaluation, as required by Function, using this class evaluation method (using a double instead of a vector).

Warning:
Do not call this function directly, call operator()(result_t&, const argument_t&) const throw () instead.
Parameters:
resultresult will be stored in this vector
argumentpoint at which the function will be evaluated

Implements roboptim::Function.

virtual void roboptim::NTimesDerivableFunction< 2 >::impl_compute ( result_t result,
double  t 
) const throw ()
protectedpure virtual

Function evaluation.

Evaluate the function, has to be implemented in concrete classes.

Warning:
Do not call this function directly, call operator()(double) const throw () instead.
Parameters:
resultresult will be stored in this vector
tpoint at which the function will be evaluated
virtual void roboptim::NTimesDerivableFunction< 2 >::impl_derivative ( gradient_t derivative,
double  argument,
size_type  order = 1 
) const throw ()
protectedpure virtual

Derivative evaluation.

Compute the derivative, has to be implemented in concrete classes.

Warning:
Do not call this function directly, call derivative instead.
Parameters:
derivativederivative will be store in this argument
argumentpoint where the gradient will be computed
orderderivative order (if 0 evaluates the function)
void roboptim::NTimesDerivableFunction< 2 >::impl_gradient ( gradient_t gradient,
const argument_t argument,
size_type  functionId = 0 
) const throw ()
inlineprotectedvirtual

Gradient evaluation.

Implement the gradient computation, as required by DerivableFunction. The gradient is computed for a specific sub-function which id is passed through the functionId argument.

Warning:
Do not call this function directly, call gradient or derivative instead.
Parameters:
gradientgradient will be store in this argument
argumentpoint where the gradient will be computed
functionIdevaluated function id in the split representation

Implements roboptim::DerivableFunction.

void roboptim::NTimesDerivableFunction< 2 >::impl_hessian ( hessian_t hessian,
const argument_t argument,
size_type  functionId = 0 
) const throw ()
inlineprotectedvirtual

Hessian evaluation.

Implement the hessian computation, as required by the TwiceDerivableFunction class using the derivative method. The hessian is computed for a specific sub-function which id is passed through the functionId argument.

Warning:
Do not call this function directly, call hessian instead.
Parameters:
hessianhessian will be stored here
argumentpoint where the hessian will be computed
functionIdevaluated function id in the split representation

Implements roboptim::TwiceDerivableFunction.

bool roboptim::NTimesDerivableFunction< 2 >::isValidDerivative ( const gradient_t derivative) const throw ()
inline

Check if a derivative is valid (check sizes).

Parameters:
derivativederivative vector to be checked
Returns:
true if valid, false if not
result_t roboptim::NTimesDerivableFunction< 2 >::operator() ( double  argument) const throw ()
inline

Evaluate the function at a specified point.

The program will abort if the argument does not have the expected size.

Parameters:
argumentpoint at which the function will be evaluated
Returns:
computed result
void roboptim::NTimesDerivableFunction< 2 >::operator() ( result_t result,
double  argument 
) const throw ()
inline

Evaluate the function at a specified point.

The program will abort if the argument does not have the expected size.

Parameters:
resultresult will be stored in this vector
argumentpoint at which the function will be evaluated
Returns:
computed result
virtual std::ostream& roboptim::NTimesDerivableFunction< 2 >::print ( std::ostream &  o) const throw ()
inlinevirtual

Display the function on the specified output stream.

Parameters:
ooutput stream used for display
Returns:
output stream

Reimplemented from roboptim::TwiceDerivableFunction.

References roboptim::NTimesDerivableFunction< DerivabilityOrder >::derivabilityOrder.


Member Data Documentation

const size_type roboptim::NTimesDerivableFunction< 2 >::derivabilityOrder = 2
static

Function derivability order.