13#ifndef OPTIMIST_ROOTFINDER_GREENSTADT_HH
14#define OPTIMIST_ROOTFINDER_GREENSTADT_HH
40 template <
typename Real, Integer N>
73 std::ostringstream os;
75 if (this->m_method == Method::ONE) {
77 }
else if (this->m_method == Method::TWO) {
123 Vector const & delta_x_new,
Vector const & delta_function_new,
Vector const & function_new,
126 if (this->m_method == Method::ONE) {
129 jacobian_new = jacobian_old - (jacobian_old*delta_function_new-delta_x_new)/(function_new.transpose()*delta_function_new)*function_new.transpose();
130 }
else if (this->m_method == Method::TWO) {
133 Vector C(jacobian_old.transpose()*jacobian_old*delta_function_new);
134 jacobian_new = jacobian_old - (jacobian_old*delta_function_new-delta_x_new)/(C.transpose()*delta_function_new)*C.transpose();
#define OPTIMIST_BASIC_CONSTANTS(Real)
Definition Optimist.hh:71
void enable_two_method()
Definition Greenstadt.hh:103
void method(Method t_method)
Definition Greenstadt.hh:93
Method method() const
Definition Greenstadt.hh:87
enum class Method :Integer {ONE=1, TWO=2} Method
Definition Greenstadt.hh:56
std::string name_impl() const
Definition Greenstadt.hh:71
void set_method(Method t_method)
Definition Greenstadt.hh:109
static constexpr bool requires_function
Definition Greenstadt.hh:44
static constexpr bool requires_first_derivative
Definition Greenstadt.hh:45
void enable_one_method()
Definition Greenstadt.hh:98
void update_impl(Vector const &, Vector const &, Matrix const &jacobian_old, Vector const &delta_x_new, Vector const &delta_function_new, Vector const &function_new, Matrix &jacobian_new)
Definition Greenstadt.hh:121
Greenstadt()
Definition Greenstadt.hh:65
static constexpr bool requires_second_derivative
Definition Greenstadt.hh:46
Method m_method
Definition Greenstadt.hh:59
Class container for the QuasiNewton's method.
Definition QuasiNewton.hh:42
QuasiNewton()
Definition QuasiNewton.hh:61
typename SolverBase< Real, N, N, Greenstadt< Real, N >, ForceEigen >::InputType Vector
Definition RootFinder.hh:61
typename SolverBase< Real, N, N, Greenstadt< Real, N >, ForceEigen >::FirstDerivativeType Matrix
Definition RootFinder.hh:64
Namespace for the Optimist library.
Definition Optimist.hh:88
OPTIMIST_DEFAULT_INTEGER_TYPE Integer
The Integer type as used for the API.
Definition Optimist.hh:96