|
| | Algo748 () |
| std::string | name_impl () const |
| template<typename FunctionLambda> |
| Real | find_root_impl (FunctionLambda &&function) |
| | Bracketing () |
| std::string | name_impl () const |
| void | tolerance_bracketing (Real t_tolerance) |
| bool | solve_impl (FunctionLambda &&function, Real, Real &x_sol) |
| Real | find_root (FunctionLambda &&function) |
| | RootFinder () |
| std::string | name () const |
| Integer | jacobian_evaluations () const |
| Integer | max_jacobian_evaluations () const |
| Integer | hessian_evaluations () const |
| Integer | max_hessian_evaluations () const |
| bool | solve (FunctionLambda &&function, Vector const &x_ini, Vector &x_sol) |
| | SolverBase () |
| InputType const & | lower_bound () const |
| InputType const & | upper_bound () const |
| void | bounds (InputType const &t_lower_bound, InputType const &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 TraceType & | trace () const |
| std::ostream & | ostream () const |
| bool | solve (FunctionLambda &&function, InputType const &x_ini, InputType &x_sol) |
| bool | rootfind (FunctionBase< Real, FunInDim, FunOutDim, DerivedFunction, ForceEigen &&FunOutDim==1 > const &function, InputType const &x_ini, InputType &x_sol) |
| bool | optimize (FunctionBase< Real, FunInDim, FunOutDim, DerivedFunction, ForceEigen &&FunOutDim==1 > const &function, InputType const &x_ini, InputType &x_sol) |
| std::string | name () const |
|
| using | Vector |
| using | Matrix |
| using | Tensor |
| using | InputType |
| using | OutputType |
| using | TraceType |
| using | FirstDerivativeType |
| using | SecondDerivativeType |
| bool | evaluate_jacobian (JacobianLambda &&jacobian, Vector const &x, Matrix &out) |
| bool | evaluate_hessian (HessianLambda &&hessian, Vector const &x, Matrix &out) |
| Integer | first_derivative_evaluations () const |
| Integer | max_first_derivative_evaluations () const |
| Integer | second_derivative_evaluations () const |
| Integer | max_second_derivative_evaluations () const |
| void | reset () |
| bool | evaluate_function (FunctionLambda &&function, InputType const &x, OutputType &out) |
| bool | evaluate_first_derivative (FirstDerivativeLambda &&function, InputType const &x, FirstDerivativeType &out) |
| bool | evaluate_second_derivative (SecondDerivativeLambda &&function, InputType const &x, SecondDerivativeType &out) |
| void | store_trace (InputType const &x) |
| bool | damp (FunctionLambda &&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 ¬es="-") |
| Real | m_tolerance_bracketing |
| Real | m_mu |
| Real | m_interval_shink |
| Real | m_a |
| Real | m_fa |
| Real | m_b |
| Real | m_fb |
| Real | m_c |
| Real | m_fc |
| Real | m_d |
| Real | m_fd |
| Real | m_e |
| Real | m_fe |
| 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 |
template<typename Real>
class Optimist::RootFinder::Algo748< Real >
The algorithm 748 allows to find the roots of a scalar function \(f(x)\) in a given interval \([a, b]\). The algorithm is based on the work of G. Alefeld, F. Potra, and Y. Shi, Algorithm 748: Enclosing Zeros of Continuous Functions, ACM Transactions on Mathematical Software, 21 (1995), pp. 327-344, 10.1145/210089.210111.
- Template Parameters
-
template<typename Real>
template<typename FunctionLambda>
Finds either an exact solution or an approximate solution of the equation \(f(x) = 0\) in the interval \([a,b]\). At the beginning of each iteration, the current enclosing interval is recorded as \([a_0, b_0]\). The first iteration is simply a secant step. Starting with the second iteration, three steps are taken in each iteration.
- The first two steps are either quadratic interpolation or cubic inverse interpolation.
- The third step is a double-size secant step. If the diameter of the enclosing interval obtained after these three steps is larger than \(\mu*(b_0-a_0)\), an additional bisection step will be used to shrink the enclosing interval.
- Template Parameters
-
| FunctionLambda | The lambda function type. |
- Parameters
-
- Returns
- The approximate root.