|
| | QuasiNewton () |
| constexpr std::string | name_impl () const |
| template<typename FunctionLambda, typename JacobianLambda> |
| bool | solve_impl (FunctionLambda &&function, JacobianLambda &&jacobian, const Vector &x_ini, Vector &x_sol) |
| void | update (const Vector &delta_x_old, const Vector &delta_function_old, const FirstDerivative &jacobian_old, const Vector &delta_x_new, const Vector &delta_function_new, const Vector &function_new, FirstDerivative &jacobian_new) |
| | RootFinder () |
| constexpr 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, const Input &x_ini, Output &x_sol) |
| | SolverBase () |
| void | reset_bounds (const Integer n=InputTrait::IsDynamic ? 0 :InputTrait::Dimension) |
| const Vector & | lower_bound () const |
| const Vector & | upper_bound () const |
| void | bounds (const Vector &t_lower_bound, const Vector &t_upper_bound) |
| constexpr Integer | input_dimension () const |
| constexpr Integer | output_dimension () const |
| Integer | function_evaluations () const |
| void | max_function_evaluations (const Integer t_max_function_evaluations) |
| Integer | iterations () const |
| Integer | max_iterations () const |
| Scalar | alpha () const |
| Integer | relaxations () const |
| Integer | max_relaxations () const |
| Scalar | 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 |
| std::ostream & | ostream () const |
| bool | solve (FunctionLambda &&function, const Vector &x_ini, Vector &x_sol) |
| bool | rootfind (const FunctionBase< FunctionInput, FunctionOutput, DerivedFunction > &function, const Vector &x_ini, Vector &x_sol) |
| bool | optimize (const FunctionBase< FunctionInput, FunctionOutput, DerivedFunction > &function, const Vector &x_ini, Vector &x_sol) |
| constexpr std::string | name () const |
|
| static constexpr bool | IsRootFinder |
| static constexpr bool | IsOptimizer |
| bool | evaluate_jacobian (JacobianLambda &&jacobian, const Input &x, FirstDerivative &out) |
| bool | evaluate_hessian (HessianLambda &&hessian, const Input &x, SecondDerivative &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_counters () |
| bool | evaluate_function (FunctionLambda &&function, const Vector &x, Vector &out) |
| bool | evaluate_first_derivative (FirstDerivativeLambda &&function, const Vector &x, FirstDerivative &out) |
| bool | evaluate_second_derivative (SecondDerivativeLambda &&function, const Vector &x, SecondDerivative &out) |
| bool | damp (FunctionLambda &&function, const Vector &x_old, const Vector &function_old, const Vector &step_old, Vector &x_new, Vector &function_new, Vector &step_new) |
| void | header () |
| void | bottom () |
| void | info (Scalar residuals, const std::string ¬es="-") |
| Vector | m_lower_bound |
| Vector | 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 |
| Scalar | m_alpha |
| Integer | m_relaxations |
| Integer | m_max_relaxations |
| Scalar | m_tolerance |
| bool | m_verbose |
| bool | m_damped |
| std::ostream * | m_ostream |
| std::string | m_task |
| bool | m_converged |
template<typename Vector, typename DerivedSolver>
requires
TypeTrait<Vector>::IsEigen && (!
TypeTrait<Vector>::IsFixed ||
TypeTrait<Vector>::Dimension > 0)
class Optimist::RootFinder::QuasiNewton< Vector, DerivedSolver >
Quasi-Newton method
The quasi-Newton is a family of methods that approximate the Jacobian matrix or its inverse. Such methods are based on the linearization of the function \(\mathbf{f}(\mathbf{x})\) around the current iterate \(\mathbf{x}_k\), which leads to the linear system
\[ \mathbf{Jf}_{\mathbf{x}}(\mathbf{x}_k) \mathbf{h}_k = -\mathbf{f}(\mathbf{x}_k) \text{.}
\]
Here, the Jacobian matrix \(\mathbf{Jf}_{\mathbf{x}}\) is supposed not to be explicitly available or computationally expensive to compute. For this reason, quasi-Newton methods approximate it iteratively.
- Template Parameters
-
| Vector | Eigen vector type. |
| DerivedSolver | Derived solver type. |