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

Classes

class  Epsilon

Typedefs

template<typename Real>
using VectorXd = Eigen::Vector<Real, Eigen::Dynamic>
template<typename Real>
using MatrixXd = Eigen::Matrix<Real, Eigen::Dynamic, Eigen::Dynamic>

Functions

template<typename Real>
Real SideFiniteDifferences (Real const fun_0, Real const fun_1, Real const fun_2, Real h_1, Real h_2)
template<typename Real>
Real CenteredFiniteDifferences (Real const fun_l, Real const fun_c, Real const fun_r, Real h)
template<typename Real>
VectorXd< Real > SideFiniteDifferences (VectorXd< Real > const &fun_0, VectorXd< Real > const &fun_1, VectorXd< Real > const &fun_2, Real h_1, Real h_2)
template<typename Real>
VectorXd< Real > CenteredFiniteDifferences (VectorXd< Real > const &fun_l, VectorXd< Real > const &fun_c, VectorXd< Real > const &fun_r, Real h)
template<typename Function, typename Real>
bool Gradient (VectorXd< Real > const &x, Function fun, VectorXd< Real > &grad)
template<typename Function, typename Real>
bool Jacobian (VectorXd< Real > const &x, Function fun, MatrixXd< Real > &jac)
template<typename Function, typename Real>
bool Hessian (VectorXd< Real > const &x, Function fun, MatrixXd< Real > &hes)
template<typename Vector>
Vector SideFiniteDifferences (Vector const &fun_0, Vector const &fun_1, Vector const &fun_2, typename Vector::Scalar h_1, typename Vector::Scalar h_2)
template<typename Vector>
Vector CenteredFiniteDifferences (Vector const &fun_l, Vector const &fun_c, Vector const &fun_r, typename Vector::Scalar h)
template<typename Function, typename Vector>
bool Gradient (Vector const &x, Function fun, Vector &grad)
template<typename Function, typename Vector, typename Matrix>
bool Jacobian (Vector const &x, Function fun, Matrix &jac)
template<typename Function, typename Vector, typename Matrix>
bool Hessian (Vector const &x, Function fun, Matrix &hes)

Typedef Documentation

◆ MatrixXd

template<typename Real>
using Optimist::FiniteDifferences::MatrixXd = Eigen::Matrix<Real, Eigen::Dynamic, Eigen::Dynamic>

◆ VectorXd

template<typename Real>
using Optimist::FiniteDifferences::VectorXd = Eigen::Vector<Real, Eigen::Dynamic>

< Template alias for VectorXd<Real>. Template alias for MatrixXd<Real>.

Function Documentation

◆ CenteredFiniteDifferences() [1/3]

template<typename Real>
Real Optimist::FiniteDifferences::CenteredFiniteDifferences ( Real const fun_l,
Real const fun_c,
Real const fun_r,
Real h )
inline

Compute centered finite differences (for scalars).

Parameters
[in]fun_lFunction value at \( x-h \).
[in]fun_cFunction value at \( x \).
[in]fun_rFunction value at \( x+h \).
[in]hStep size.
Template Parameters
RealScalar number type.
Returns
Approximated derivative.

◆ CenteredFiniteDifferences() [2/3]

template<typename Vector>
Vector Optimist::FiniteDifferences::CenteredFiniteDifferences ( Vector const & fun_l,
Vector const & fun_c,
Vector const & fun_r,
typename Vector::Scalar h )
inline

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

Parameters
[in]fun_lVector at \( x-h \).
[in]fun_cVector at \( x \).
[in]fun_rVector at \( x+h \).
[in]hStep size.
Template Parameters
VectorFixed-size Eigen vector type.
Returns
Approximated derivative vector.

◆ CenteredFiniteDifferences() [3/3]

template<typename Real>
VectorXd< Real > Optimist::FiniteDifferences::CenteredFiniteDifferences ( VectorXd< Real > const & fun_l,
VectorXd< Real > const & fun_c,
VectorXd< Real > const & fun_r,
Real h )
inline

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

Parameters
[in]fun_lVector at \( x-h \).
[in]fun_cVector at \( x \).
[in]fun_rVector at \( x+h \).
[in]hStep size.
Template Parameters
RealScalar number type.
Returns
Approximated derivative vector.

◆ Gradient() [1/2]

template<typename Function, typename Vector>
bool Optimist::FiniteDifferences::Gradient ( Vector const & x,
Function fun,
Vector & grad )

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

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

◆ Gradient() [2/2]

template<typename Function, typename Real>
bool Optimist::FiniteDifferences::Gradient ( VectorXd< Real > const & x,
Function fun,
VectorXd< Real > & grad )

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

Parameters
[in]xPoint at which to compute gradient.
[in]funFunction to differentiate.
[out]gradGradient vector.
Template Parameters
FunctionCallable type bool(VectorXd const &, Real &).
RealScalar number type.
Returns
True if successful, false otherwise.

◆ Hessian() [1/2]

template<typename Function, typename Vector, typename Matrix>
bool Optimist::FiniteDifferences::Hessian ( Vector const & x,
Function fun,
Matrix & hes )

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

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

◆ Hessian() [2/2]

template<typename Function, typename Real>
bool Optimist::FiniteDifferences::Hessian ( VectorXd< Real > const & x,
Function fun,
MatrixXd< Real > & hes )

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

Parameters
[in]xPoint at which to compute Hessian.
[in]funFunction to differentiate.
[out]hesHessian matrix.
Template Parameters
FunctionCallable type bool(VectorXd<Real> const &, Real&).
RealScalar number type.
Returns
True if successful, false otherwise.

◆ Jacobian() [1/2]

template<typename Function, typename Vector, typename Matrix>
bool Optimist::FiniteDifferences::Jacobian ( Vector const & x,
Function fun,
Matrix & jac )

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

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

◆ Jacobian() [2/2]

template<typename Function, typename Real>
bool Optimist::FiniteDifferences::Jacobian ( VectorXd< Real > const & x,
Function fun,
MatrixXd< Real > & jac )

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

Parameters
[in]xPoint at which to compute Jacobian.
[in]funFunction to differentiate.
[out]jacOutput Jacobian matrix.
Template Parameters
FunctionCallable type bool(VectorXd<Real> const &, VectorXd<Real> &).
RealScalar number type.
Returns
True if successful, false otherwise.

◆ SideFiniteDifferences() [1/3]

template<typename Real>
Real Optimist::FiniteDifferences::SideFiniteDifferences ( Real const fun_0,
Real const fun_1,
Real const fun_2,
Real h_1,
Real h_2 )
inline

Compute one-sided finite differences (for scalars).

Parameters
[in]fun_0Function value at \( x \).
[in]fun_1Function value at \( x+h_1 \).
[in]fun_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/3]

template<typename Vector>
Vector Optimist::FiniteDifferences::SideFiniteDifferences ( Vector const & fun_0,
Vector const & fun_1,
Vector const & fun_2,
typename Vector::Scalar h_1,
typename Vector::Scalar h_2 )
inline

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

Parameters
[in]fun_0Vector at \( x \).
[in]fun_1Vector at \( x+h_1 \).
[in]fun_2Vector at \( x+h_2 \).
[in]h_1Step size 1.
[in]h_2Step size 2.
Template Parameters
VectorFixed-size Eigen vector type.
Returns
Approximated derivative vector.

◆ SideFiniteDifferences() [3/3]

template<typename Real>
VectorXd< Real > Optimist::FiniteDifferences::SideFiniteDifferences ( VectorXd< Real > const & fun_0,
VectorXd< Real > const & fun_1,
VectorXd< Real > const & fun_2,
Real h_1,
Real h_2 )
inline

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

Parameters
[in]fun_0Vector at \( x \).
[in]fun_1Vector at \( x+h_1 \).
[in]fun_2Vector at \( x+h_2 \).
[in]h_1Step size 1.
[in]h_2Step size 2.
Template Parameters
RealScalar number type.
Returns
Approximated derivative vector.