|
| Newton () |
std::string | name_impl () const |
bool | solve_impl (FunctionWrapper function, JacobianWrapper jacobian, Vector const &x_ini, Vector &x_sol) |
| 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 (FunctionWrapper function, Vector const &x_ini, Vector &x_sol) |
| SolverBase () |
const InputType & | lower_bound () const |
const InputType & | upper_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 TraceType & | trace () 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 |
|
using | InputType |
using | OutputType |
using | TraceType |
using | FirstDerivativeType |
using | SecondDerivativeType |
using | FunctionWrapper |
using | FirstDerivativeWrapper |
using | SecondDerivativeWrapper |
void | evaluate_jacobian (JacobianWrapper jacobian, const Vector &x, Matrix &out) |
void | evaluate_hessian (HessianWrapper hessian, const Vector &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 () |
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 ¬es="-") |
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,
Integer N>
class Optimist::RootFinder::Newton< Real, N >
Newton's method
Newton's method, including its damped variant with an affine-invariant step, is 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{.}
\]
The advancing step \(\mathbf{h}_k\) is then computed as
\[ \mathbf{x}_{k+1} = \mathbf{x}_k + \alpha_k \mathbf{h}_k \text{,}
\]
where \(\alpha_k\) is a damping coefficient that ensures affine-invariant criteria is satisfied.
- Template Parameters
-
Real | Scalar number type. |
N | Dimension of the root-finding problem. |