Optimist  0.0.0
A C++ library for optimization
Loading...
Searching...
No Matches
Optimist::FiniteDifferences Namespace Reference

Classes

class  Epsilon

Functions

template<typename Real>
Real SideFiniteDifferences (Real const f_0, Real const f_1, Real const f_2, Real h_1, Real h_2)
template<typename Real>
Real CenteredFiniteDifferences (Real const f_l, Real const f_c, Real const f_r, Real h)
template<typename Vector, typename Real = typename Vector::Scalar>
Vector SideFiniteDifferences (Vector const &f_0, Vector const &f_1, Vector const &f_2, Real h_1, Real h_2)
template<typename Vector, typename Real = typename Vector::Scalar>
Vector CenteredFiniteDifferences (Vector const &f_l, Vector const &f_c, Vector const &f_r, Real h)
template<typename Function, typename Vector, typename Real = typename Vector::Scalar>
bool Gradient (Vector const &x, Function &&function, Vector &out)
template<typename Function, typename Vector, typename Matrix, typename Real = typename Vector::Scalar>
bool Jacobian (Vector const &x, Function &&function, Matrix &out)
template<typename Function, typename Vector, typename Matrix, typename Real = typename Vector::Scalar>
bool Hessian (Vector const &x, Function &&function, Matrix &out)

Function Documentation

◆ CenteredFiniteDifferences() [1/2]

template<typename Real>
Real Optimist::FiniteDifferences::CenteredFiniteDifferences ( Real const f_l,
Real const f_c,
Real const f_r,
Real h )
inline

Compute centered finite differences (for scalars).

Parameters
[in]f_lFunction value at \( x-h \).
[in]f_cFunction value at \( x \).
[in]f_rFunction value at \( x+h \).
[in]hStep size.
Template Parameters
RealScalar number type.
Returns
Approximated derivative.

◆ CenteredFiniteDifferences() [2/2]

template<typename Vector, typename Real = typename Vector::Scalar>
Vector Optimist::FiniteDifferences::CenteredFiniteDifferences ( Vector const & f_l,
Vector const & f_c,
Vector const & f_r,
Real h )
inline

Compute centered finite differences (for fixed-size Eigen vectors).

Parameters
[in]f_lVector at \( x-h \).
[in]f_cVector at \( x \).
[in]f_rVector at \( x+h \).
[in]hStep size.
Template Parameters
VectorFixed-size Eigen vector type.
RealScalar number type.
Returns
Approximated derivative vector.

◆ Gradient()

template<typename Function, typename Vector, typename Real = typename Vector::Scalar>
bool Optimist::FiniteDifferences::Gradient ( Vector const & x,
Function && function,
Vector & out )

Compute finite differences gradient for a scalar function (for fixed-size Eigen vectors).

Template Parameters
FunctionCallable type bool(Vector const &, Real &).
VectorFixed-size Eigen vector type.
RealScalar number type.
Parameters
[in]xPoint at which to compute gradient.
[in]functionFunction to differentiate.
[out]outGradient vector.
Returns
True if successful, false otherwise.

◆ Hessian()

template<typename Function, typename Vector, typename Matrix, typename Real = typename Vector::Scalar>
bool Optimist::FiniteDifferences::Hessian ( Vector const & x,
Function && function,
Matrix & out )

Compute finite differences Hessian for a scalar function (for fixed-size Eigen vectors).

Template Parameters
FunctionCallable type bool(Vector const &, Real &).
VectorFixed-size Eigen vector type.
MatrixFixed-size Eigen matrix type.
RealScalar number type.
Parameters
[in]xPoint at which to compute Hessian.
[in]functionFunction to differentiate.
[out]outHessian matrix.
Returns
True if successful, false otherwise.

◆ Jacobian()

template<typename Function, typename Vector, typename Matrix, typename Real = typename Vector::Scalar>
bool Optimist::FiniteDifferences::Jacobian ( Vector const & x,
Function && function,
Matrix & out )

Compute finite differences Jacobian for a vector function (for fixed-size Eigen vectors).

Template Parameters
FunctionCallable type bool(Vector const &, Vector &).
VectorFixed-size Eigen vector type.
MatrixFixed-size Eigen matrix type.
RealScalar number type.
Parameters
[in]xPoint at which to compute Jacobian.
[in]funFunction to differentiate.
[out]outJacobian matrix.
Returns
True if successful, false otherwise.

◆ SideFiniteDifferences() [1/2]

template<typename Real>
Real Optimist::FiniteDifferences::SideFiniteDifferences ( Real const f_0,
Real const f_1,
Real const f_2,
Real h_1,
Real h_2 )
inline

Compute one-sided finite differences (for scalars).

Parameters
[in]f_0Function value at \( x \).
[in]f_1Function value at \( x+h_1 \).
[in]f_2Function value at \( x+h_2 \).
[in]h_1Step size 1.
[in]h_2Step size 2.
Template Parameters
RealScalar number type.
Returns
Approximated derivative.

◆ SideFiniteDifferences() [2/2]

template<typename Vector, typename Real = typename Vector::Scalar>
Vector Optimist::FiniteDifferences::SideFiniteDifferences ( Vector const & f_0,
Vector const & f_1,
Vector const & f_2,
Real h_1,
Real h_2 )
inline

Compute one-sided finite differences (for fixed-size Eigen vectors).

Parameters
[in]f_0Vector at \( x \).
[in]f_1Vector at \( x+h_1 \).
[in]f_2Vector at \( x+h_2 \).
[in]h_1Step size 1.
[in]h_2Step size 2.
Template Parameters
VectorFixed-size Eigen vector type.
RealScalar number type.
Returns
Approximated derivative vector.