Optimist  0.0.0
A C++ library for optimization
Loading...
Searching...
No Matches
Optimist::RootFinder::Bracketing< Real, DerivedSolver > Class Template Reference

Class container for the Bracketing algorithms. More...

#include <Bracketing.hh>

Inherits Optimist::RootFinder::RootFinder< Real, 1, DerivedSolver >.

Public Types

using FunctionWrapper = typename RootFinder<Real, 1, DerivedSolver>::FunctionWrapper
using FirstDerivativeWrapper = typename RootFinder<Real, 1, DerivedSolver>::FirstDerivativeWrapper
using SecondDerivativeWrapper = typename RootFinder<Real, 1, DerivedSolver>::SecondDerivativeWrapper
Public Types inherited from Optimist::RootFinder::RootFinder< Real, 1, DerivedSolver >
using FunctionWrapper = typename SolverBase<Real, 1, 1, DerivedSolver>::FunctionWrapper
using FirstDerivativeWrapper = typename SolverBase<Real, 1, 1, DerivedSolver>::FirstDerivativeWrapper
using SecondDerivativeWrapper = typename SolverBase<Real, 1, 1, DerivedSolver>::SecondDerivativeWrapper
using Vector
using Matrix
using Tensor
using JacobianWrapper
using HessianWrapper

Public Member Functions

 Bracketing ()
std::string name_impl () const
void tolerance_bracketing (Real t_tolerance)
bool solve_impl (FunctionWrapper function, Real, Real &x_sol)
Real find_root (FunctionWrapper function)
Public Member Functions inherited from Optimist::RootFinder::RootFinder< Real, 1, DerivedSolver >
 RootFinder ()
std::string name () const
bool solve (FunctionWrapper function, Real x_ini, Real &x_sol)
bool solve (FunctionWrapper function, FirstDerivativeWrapper first_derivative, Real x_ini, Real &x_sol)
bool solve (FunctionWrapper function, FirstDerivativeWrapper first_derivative, SecondDerivativeWrapper second_derivate, Real x_ini, Real &x_sol)
Integer jacobian_evaluations () const
Integer max_jacobian_evaluations () const
Integer hessian_evaluations () const
Integer max_hessian_evaluations () const
Public Member Functions inherited from Optimist::SolverBase< Real, N, N, DerivedSolver, false >
 SolverBase ()
const InputTypelower_bound () const
const InputTypeupper_bound () const
void bounds (const InputType &t_lower_bound, const InputType &t_upper_bound)
constexpr Integer input_dimension () const
constexpr Integer output_dimension () const
Integer function_evaluations () const
void max_function_evaluations (Integer t_max_function_evaluations)
Integer iterations () const
Integer max_iterations () const
Real alpha () const
Integer relaxations () const
Integer max_relaxations () const
Real tolerance () const
void verbose_mode (bool t_verbose)
void enable_verbose_mode ()
void disable_verbose_mode ()
void damped_mode (bool t_damped)
void enable_damped_mode ()
void disable_damped_mode ()
std::string task () const
bool converged () const
const TraceTypetrace () const
std::ostream & ostream () const
bool solve (FunctionWrapper function, const InputType &x_ini, InputType &x_sol)
bool rootfind (FunctionBase< Real, FunInDim, FunOutDim, DerivedFunction, ForceEigen &&FunOutDim==1 > const &function, const InputType &x_ini, InputType &x_sol)
bool optimize (FunctionBase< Real, FunInDim, FunOutDim, DerivedFunction, ForceEigen &&FunOutDim==1 > const &function, const InputType &x_ini, InputType &x_sol)
std::string name () const
Public Member Functions inherited from Optimist::SolverBase< Real, 1, 1, DerivedSolver >
 SolverBase ()
const InputTypelower_bound () const
const InputTypeupper_bound () const
void bounds (const InputType &t_lower_bound, const InputType &t_upper_bound)
constexpr Integer input_dimension () const
constexpr Integer output_dimension () const
Integer function_evaluations () const
void max_function_evaluations (Integer t_max_function_evaluations)
Integer iterations () const
Integer max_iterations () const
Real alpha () const
Integer relaxations () const
Integer max_relaxations () const
Real tolerance () const
void verbose_mode (bool t_verbose)
void enable_verbose_mode ()
void disable_verbose_mode ()
void damped_mode (bool t_damped)
void enable_damped_mode ()
void disable_damped_mode ()
std::string task () const
bool converged () const
const TraceTypetrace () const
std::ostream & ostream () const
bool solve (FunctionWrapper function, const InputType &x_ini, InputType &x_sol)
bool rootfind (FunctionBase< Real, FunInDim, FunOutDim, DerivedFunction, false &&FunOutDim==1 > const &function, const InputType &x_ini, InputType &x_sol)
bool optimize (FunctionBase< Real, FunInDim, FunOutDim, DerivedFunction, false &&FunOutDim==1 > const &function, const InputType &x_ini, InputType &x_sol)
std::string name () const

Static Public Attributes

static constexpr bool requires_function {DerivedSolver::requires_function}
static constexpr bool requires_first_derivative {DerivedSolver::requires_first_derivative}
static constexpr bool requires_second_derivative {DerivedSolver::requires_second_derivative}
Static Public Attributes inherited from Optimist::RootFinder::RootFinder< Real, 1, DerivedSolver >
static constexpr bool is_rootfinder {true}
static constexpr bool is_optimizer {false}
static constexpr bool requires_function {DerivedSolver::requires_function}
static constexpr bool requires_first_derivative {DerivedSolver::requires_first_derivative}
static constexpr bool requires_second_derivative {DerivedSolver::requires_second_derivative}

Protected Attributes

Real m_tolerance_bracketing {100*EPSILON}
Real m_mu {0.5}
Real m_interval_shink {0.025}
Real m_a {0.0}
Real m_fa {0.0}
Real m_b {0.0}
Real m_fb {0.0}
Real m_c {0.0}
Real m_fc {0.0}
Real m_d {0.0}
Real m_fd {0.0}
Real m_e {0.0}
Real m_fe {0.0}
Protected Attributes inherited from Optimist::SolverBase< Real, N, N, DerivedSolver, false >
InputType m_lower_bound
InputType m_upper_bound
Integer m_function_evaluations
Integer m_first_derivative_evaluations
Integer m_second_derivative_evaluations
Integer m_max_function_evaluations
Integer m_max_first_derivative_evaluations
Integer m_max_second_derivative_evaluations
Integer m_iterations
Integer m_max_iterations
Real m_alpha
Integer m_relaxations
Integer m_max_relaxations
Real m_tolerance
bool m_verbose
bool m_damped
std::ostream * m_ostream
std::string m_task
bool m_converged
TraceType m_trace
Protected Attributes inherited from Optimist::SolverBase< Real, 1, 1, DerivedSolver >
InputType m_lower_bound
InputType m_upper_bound
Integer m_function_evaluations
Integer m_first_derivative_evaluations
Integer m_second_derivative_evaluations
Integer m_max_function_evaluations
Integer m_max_first_derivative_evaluations
Integer m_max_second_derivative_evaluations
Integer m_iterations
Integer m_max_iterations
Real m_alpha
Integer m_relaxations
Integer m_max_relaxations
Real m_tolerance
bool m_verbose
bool m_damped
std::ostream * m_ostream
std::string m_task
bool m_converged
TraceType m_trace

Additional Inherited Members

Protected Types inherited from Optimist::SolverBase< Real, N, N, DerivedSolver, false >
using InputType
using OutputType
using TraceType
using FirstDerivativeType
using SecondDerivativeType
using FunctionWrapper
using FirstDerivativeWrapper
using SecondDerivativeWrapper
Protected Types inherited from Optimist::SolverBase< Real, 1, 1, DerivedSolver >
using InputType
using OutputType
using TraceType
using FirstDerivativeType
using SecondDerivativeType
using FunctionWrapper
using FirstDerivativeWrapper
using SecondDerivativeWrapper
Protected Member Functions inherited from Optimist::RootFinder::RootFinder< Real, 1, DerivedSolver >
void evaluate_jacobian (JacobianWrapper jacobian, const Vector &x, Matrix &out)
void evaluate_hessian (HessianWrapper hessian, const Vector &x, Matrix &out)
Protected Member Functions inherited from Optimist::SolverBase< Real, N, N, DerivedSolver, false >
Integer first_derivative_evaluations () const
Integer max_first_derivative_evaluations () const
Integer second_derivative_evaluations () const
Integer max_second_derivative_evaluations () const
void reset ()
void evaluate_function (FunctionWrapper function, const InputType &x, OutputType &out)
void evaluate_first_derivative (FirstDerivativeWrapper function, const InputType &x, FirstDerivativeType &out)
void evaluate_second_derivative (SecondDerivativeWrapper function, const InputType &x, SecondDerivativeType &out)
void store_trace (const InputType &x)
bool damp (FunctionWrapper function, InputType const &x_old, InputType const &function_old, InputType const &step_old, InputType &x_new, InputType &function_new, InputType &step_new)
void header ()
void bottom ()
void info (Real residuals, std::string const &notes="-")
Protected Member Functions inherited from Optimist::SolverBase< Real, 1, 1, DerivedSolver >
Integer first_derivative_evaluations () const
Integer max_first_derivative_evaluations () const
Integer second_derivative_evaluations () const
Integer max_second_derivative_evaluations () const
void reset ()
void evaluate_function (FunctionWrapper function, const InputType &x, OutputType &out)
void evaluate_first_derivative (FirstDerivativeWrapper function, const InputType &x, FirstDerivativeType &out)
void evaluate_second_derivative (SecondDerivativeWrapper function, const InputType &x, SecondDerivativeType &out)
void store_trace (const InputType &x)
bool damp (FunctionWrapper function, InputType const &x_old, InputType const &function_old, InputType const &step_old, InputType &x_new, InputType &function_new, InputType &step_new)
void header ()
void bottom ()
void info (Real residuals, std::string const &notes="-")

Detailed Description

template<typename Real, typename DerivedSolver>
class Optimist::RootFinder::Bracketing< Real, DerivedSolver >

The Bracketing algorithms allow to find the roots of a scalar function \(f(x)\) in a given interval \([a, b]\).

Template Parameters
RealScalar number type.

Member Typedef Documentation

◆ FirstDerivativeWrapper

template<typename Real, typename DerivedSolver>
using Optimist::RootFinder::Bracketing< Real, DerivedSolver >::FirstDerivativeWrapper = typename RootFinder<Real, 1, DerivedSolver>::FirstDerivativeWrapper

◆ FunctionWrapper

template<typename Real, typename DerivedSolver>
using Optimist::RootFinder::Bracketing< Real, DerivedSolver >::FunctionWrapper = typename RootFinder<Real, 1, DerivedSolver>::FunctionWrapper

◆ SecondDerivativeWrapper

template<typename Real, typename DerivedSolver>
using Optimist::RootFinder::Bracketing< Real, DerivedSolver >::SecondDerivativeWrapper = typename RootFinder<Real, 1, DerivedSolver>::SecondDerivativeWrapper

Constructor & Destructor Documentation

◆ Bracketing()

template<typename Real, typename DerivedSolver>
Optimist::RootFinder::Bracketing< Real, DerivedSolver >::Bracketing ( )
inline

Class constructor for the Algorithm 748.

Member Function Documentation

◆ find_root()

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::find_root ( FunctionWrapper function)
inline

Finds either an exact solution or an approximate solution of the equation \(f(x) = 0\) in the interval \([a, b]\).

Parameters
[in]functionFunction wrapper.
Returns
The approximate root.

◆ name_impl()

template<typename Real, typename DerivedSolver>
std::string Optimist::RootFinder::Bracketing< Real, DerivedSolver >::name_impl ( ) const
inline

Get the Algorithm 748 solver name.

Returns
The Algorithm 748 solver name.

◆ solve_impl()

template<typename Real, typename DerivedSolver>
bool Optimist::RootFinder::Bracketing< Real, DerivedSolver >::solve_impl ( FunctionWrapper function,
Real ,
Real & x_sol )
inline

Solve the nonlinear equation \( f(x) = 0 \), with \( f: \mathbb{R} \rightarrow \mathbb{R} \).

Parameters
[in]functionFunction wrapper.
[in]x_iniInitialization point (not used).
[out]x_solSolution point.
Returns
The convergence boolean flag.

◆ tolerance_bracketing()

template<typename Real, typename DerivedSolver>
void Optimist::RootFinder::Bracketing< Real, DerivedSolver >::tolerance_bracketing ( Real t_tolerance)
inline

Set the tolerance for the Algorithm 748 solver.

Parameters
[in]t_toleranceThe input value at which the tolerance is computed.
Note
To accurately find polynomial roots, the tolerance should be set to \( 100\epsilon(0) \).

Member Data Documentation

◆ m_a

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_a {0.0}
protected

◆ m_b

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_b {0.0}
protected

◆ m_c

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_c {0.0}
protected

◆ m_d

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_d {0.0}
protected

◆ m_e

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_e {0.0}
protected

◆ m_fa

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_fa {0.0}
protected

◆ m_fb

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_fb {0.0}
protected

◆ m_fc

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_fc {0.0}
protected

◆ m_fd

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_fd {0.0}
protected

◆ m_fe

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_fe {0.0}
protected

◆ m_interval_shink

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_interval_shink {0.025}
protected

Interval shrinking factor.

◆ m_mu

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_mu {0.5}
protected

Parameter \( \mu \).

◆ m_tolerance_bracketing

template<typename Real, typename DerivedSolver>
Real Optimist::RootFinder::Bracketing< Real, DerivedSolver >::m_tolerance_bracketing {100*EPSILON}
protected

Tolerance for the Algorithm 748 solver.

◆ requires_first_derivative

template<typename Real, typename DerivedSolver>
bool Optimist::RootFinder::Bracketing< Real, DerivedSolver >::requires_first_derivative {DerivedSolver::requires_first_derivative}
staticconstexpr

◆ requires_function

template<typename Real, typename DerivedSolver>
bool Optimist::RootFinder::Bracketing< Real, DerivedSolver >::requires_function {DerivedSolver::requires_function}
staticconstexpr

◆ requires_second_derivative

template<typename Real, typename DerivedSolver>
bool Optimist::RootFinder::Bracketing< Real, DerivedSolver >::requires_second_derivative {DerivedSolver::requires_second_derivative}
staticconstexpr

Basic constants.


The documentation for this class was generated from the following file: