Compute automatically a gradient with finite differences. More...
#include <roboptim/core/finite-difference-gradient.hh>
Public Member Functions | |
| FiniteDifferenceGradient (const Function &f, value_type e=finiteDifferenceEpsilon) throw () | |
| Instantiate a finite differences gradient. | |
| ~FiniteDifferenceGradient () throw () | |
Protected Member Functions | |
| void | impl_compute (result_t &, const argument_t &) const throw () |
| Function evaluation. | |
| void | impl_gradient (gradient_t &, const argument_t &argument, size_type=0) const throw () |
| Gradient evaluation. | |
Protected Attributes | |
| const Function & | adaptee_ |
| Reference to the wrapped function. | |
| const value_type | epsilon_ |
Compute automatically a gradient with finite differences.
Finite difference gradient is a method to approximate a function's gradient. It is particularly useful in RobOptim to avoid the need to compute the analytical gradient manually.
This class takes a Function as its input and wraps it into a derivable function.
The one dimensional formula is:
where
is a constant given when calling the class constructor.
| roboptim::FiniteDifferenceGradient< FdgPolicy >::FiniteDifferenceGradient | ( | const Function & | f, | |
| value_type | e = finiteDifferenceEpsilon | |||
| ) | throw () [inline] |
Instantiate a finite differences gradient.
Instantiate a derivable function that will wraps a non derivable function and compute automatically its gradient using finite differences.
| f | function that will e wrapped | |
| e | epsilon used in finite difference computation |
| roboptim::FiniteDifferenceGradient< FdgPolicy >::~FiniteDifferenceGradient | ( | ) | throw () [inline] |
| void roboptim::FiniteDifferenceGradient< FdgPolicy >::impl_compute | ( | result_t & | result, | |
| const argument_t & | argument | |||
| ) | const throw () [inline, protected, virtual] |
Function evaluation.
Evaluate the function, has to be implemented in concrete classes.
| result | result will be stored in this vector | |
| argument | point at which the function will be evaluated |
Implements roboptim::Function.
| void roboptim::FiniteDifferenceGradient< FdgPolicy >::impl_gradient | ( | gradient_t & | gradient, | |
| const argument_t & | argument, | |||
| size_type | functionId = 0 | |||
| ) | const throw () [inline, protected, virtual] |
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.
| gradient | gradient will be store in this argument | |
| argument | point where the gradient will be computed | |
| functionId | evaluated function id in the split representation |
Implements roboptim::DerivableFunction.
const Function& roboptim::FiniteDifferenceGradient< FdgPolicy >::adaptee_ [protected] |
Reference to the wrapped function.
const value_type roboptim::FiniteDifferenceGradient< FdgPolicy >::epsilon_ [protected] |