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

Classes

class  Epsilon

Functions

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

Function Documentation

◆ CenteredFiniteDifferences() [1/2]

template<typename Vector, typename Scalar>
void Optimist::FiniteDifferences::CenteredFiniteDifferences ( const Scalar f_l,
const Scalar f_c,
const Scalar f_r,
const Scalar h,
const Integer i,
Vector & out )
inline

Compute centered finite differences.

Template Parameters
ScalarFloating-point number type.
Parameters
[in]f_lFunction value at \( x-h \).
[in]f_cFunction value at \( x \).
[in]f_rFunction value at \( x+h \).
[in]hStep size.
[in]iIndex of the variable.
[out]outThe approximated derivative.

◆ CenteredFiniteDifferences() [2/2]

template<typename Vector, typename Matrix, typename Scalar>
void Optimist::FiniteDifferences::CenteredFiniteDifferences ( const Vector & f_l,
const Vector & f_c,
const Vector & f_r,
const Scalar h,
const Integer i,
Matrix && out )
inline

Compute centered finite differences (for dense and Eigen vectors).

Template Parameters
VectorDense or sparse Eigen vector type.
MatrixDense or sparse Eigen matrix type.
ScalarFloating-point number type.
Parameters
[in]f_lVector at \( x-h \).
[in]f_cVector at \( x \).
[in]f_rVector at \( x+h \).
[in]hStep size.
[in]iIndex of the variable.
[out]outThe approximated derivative vector.

◆ Gradient()

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

Compute finite differences gradient for a scalar function (for dense Eigen vectors).

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

◆ Hessian()

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

Compute finite differences Hessian for a scalar function (for dense Eigen vectors).

Template Parameters
FunctionCallable type bool(Vector const &, Scalar &).
VectorDense Eigen vector type.
MatrixDense Eigen matrix type.
ScalarFloating-point number type.
Parameters
[in]functionFunction to differentiate.
[in]xPoint at which to compute Hessian.
[out]outHessian matrix.
Returns
True if successful, false otherwise.

◆ Jacobian()

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

Compute finite differences Jacobian for a vector function (for dense Eigen vectors).

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

◆ SideFiniteDifferences() [1/2]

template<typename Vector, typename Scalar>
void Optimist::FiniteDifferences::SideFiniteDifferences ( const Scalar f_0,
const Scalar f_1,
const Scalar f_2,
const Scalar h_1,
const Scalar h_2,
const Integer i,
Vector & out )
inline

Compute one-sided finite differences.

Template Parameters
ScalarFloating-point number type.
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.
[in]iIndex of the variable.
[out]outThe approximated derivative.

◆ SideFiniteDifferences() [2/2]

template<typename Vector, typename Matrix, typename Scalar>
void Optimist::FiniteDifferences::SideFiniteDifferences ( const Vector & f_0,
const Vector & f_1,
const Vector & f_2,
const Scalar h_1,
const Scalar h_2,
const Integer i,
Matrix & out )
inline

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

Template Parameters
VectorDense or sparse Eigen vector type.
MatrixDense or sparse Eigen matrix type.
ScalarFloating-point number type.
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.
[in]iIndex of the variable.
[out]outThe approximated derivative.