roboptim::NumericQuadraticFunction Class Reference

Build a quadratic function from a matrix and a vector. More...

#include <roboptim/core/numeric-quadratic-function.hh>

+ Inheritance diagram for roboptim::NumericQuadraticFunction:

List of all members.

Public Types

typedef
ublas::symmetric_matrix
< double, ublas::lower > 
symmetric_t
 Symmetric matrix type.

Public Member Functions

 NumericQuadraticFunction (const symmetric_t &A, const vector_t &b) throw ()
 Build a quadratic function from a matrix and a vector.
 ~NumericQuadraticFunction () throw ()
virtual std::ostream & print (std::ostream &) const throw ()
 Display the function on the specified output stream.
- Public Member Functions inherited from roboptim::QuadraticFunction
 QuadraticFunction (size_type inputSize, size_type outputSize=1, std::string name=std::string()) throw ()
 Concrete class constructor should call this constructor.
- 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.

Protected Member Functions

void impl_compute (result_t &, const argument_t &) const throw ()
 Function evaluation.
void impl_gradient (gradient_t &, const argument_t &, size_type=0) const throw ()
 Gradient evaluation.
void impl_hessian (hessian_t &hessian, const argument_t &argument, size_type functionId=0) const throw ()
 Hessian evaluation.

Detailed Description

Build a quadratic function from a matrix and a vector.

 Implement a quadratic function using the general formula:

\[f(x) = \frac{1}{2} x^t A x + b^t x\]

where $A$ and $B$ are set when the class is instantiated.

Note:
A is a symmetric matrix.
Examples:
numeric-quadratic-function.cc.

Member Typedef Documentation

typedef ublas::symmetric_matrix<double, ublas::lower> roboptim::NumericQuadraticFunction::symmetric_t

Symmetric matrix type.


Constructor & Destructor Documentation

roboptim::NumericQuadraticFunction::NumericQuadraticFunction ( const symmetric_t A,
const vector_t b 
) throw ()

Build a quadratic function from a matrix and a vector.

See class documentation for A and b definition.

Parameters:
AA symmetric matrix
bb vector
roboptim::NumericQuadraticFunction::~NumericQuadraticFunction ( ) throw ()

Member Function Documentation

void roboptim::NumericQuadraticFunction::impl_compute ( result_t result,
const argument_t argument 
) const throw ()
protectedvirtual

Function evaluation.

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

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.

void roboptim::NumericQuadraticFunction::impl_gradient ( gradient_t gradient,
const argument_t argument,
size_type  functionId = 0 
) const throw ()
protectedvirtual

Gradient evaluation.

Compute the gradient, has to be implemented in concrete classes. 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 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::NumericQuadraticFunction::impl_hessian ( hessian_t hessian,
const argument_t argument,
size_type  functionId = 0 
) const throw ()
protectedvirtual

Hessian evaluation.

Compute the hessian, has to be implemented in concrete classes. 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.

std::ostream & roboptim::NumericQuadraticFunction::print ( std::ostream &  o) const throw ()
virtual

Display the function on the specified output stream.

Parameters:
ooutput stream used for display
Returns:
output stream

Reimplemented from roboptim::QuadraticFunction.

References roboptim::decindent(), roboptim::iendl(), and roboptim::incindent().