13#ifndef OPTIMIST_ROOTFINDER_GREENSTADT_HH
14#define OPTIMIST_ROOTFINDER_GREENSTADT_HH
19 namespace RootFinder {
37 template <
typename Vector>
38 requires TypeTrait<Vector>::IsEigen &&
39 (!TypeTrait<Vector>::IsFixed || TypeTrait<Vector>::Dimension > 0)
82 return this->m_method;
90 this->m_method = t_method;
97 this->m_method = Method::ONE;
104 this->m_method = Method::TWO;
112 this->m_method = t_method;
128 const Vector &delta_x_new,
129 const Vector &delta_function_new,
130 const Vector &function_new,
132 if (this->m_method == Method::ONE) {
136 jacobian_old - (jacobian_old * delta_function_new - delta_x_new) /
137 (function_new.dot(delta_function_new)) *
138 function_new.transpose();
139 }
else if (this->m_method == Method::TWO) {
142 Vector C(jacobian_old.transpose() * jacobian_old *
145 jacobian_old - (jacobian_old * delta_function_new - delta_x_new) /
146 (C.dot(delta_function_new)) * C.transpose();
#define OPTIMIST_BASIC_CONSTANTS(Scalar)
Definition Optimist.hh:70
constexpr std::string name_impl() const
Definition Greenstadt.hh:73
enum class Method :Integer { ONE=1, TWO=2 } Method
Definition Greenstadt.hh:55
Method method() const
Definition Greenstadt.hh:81
static constexpr bool RequiresSecondDerivative
Definition Greenstadt.hh:44
void enable_two_method()
Definition Greenstadt.hh:103
static constexpr bool RequiresFunction
Definition Greenstadt.hh:42
void update_impl(const Vector &, const Vector &, const FirstDerivative &jacobian_old, const Vector &delta_x_new, const Vector &delta_function_new, const Vector &function_new, FirstDerivative &jacobian_new)
Definition Greenstadt.hh:125
void set_method(Method t_method)
Definition Greenstadt.hh:111
void enable_one_method()
Definition Greenstadt.hh:96
typename TypeTrait< Vector >::Scalar Scalar
Definition Greenstadt.hh:47
TypeTrait< Vector > VectorTrait
Definition Greenstadt.hh:46
Method m_method
Definition Greenstadt.hh:61
Greenstadt()
Definition Greenstadt.hh:67
void method(Method t_method)
Definition Greenstadt.hh:89
static constexpr bool RequiresFirstDerivative
Definition Greenstadt.hh:43
QuasiNewton()
Definition QuasiNewton.hh:52
std::conditional_t< InputTrait::IsEigen||OutputTrait::IsEigen, std::conditional_t< InputTrait::IsSparse||OutputTrait::IsSparse, Eigen::SparseMatrix< Scalar >, Eigen::Matrix< Scalar, OutputTrait::Dimension, InputTrait::Dimension > >, Scalar > FirstDerivative
Definition SolverBase.hh:80
Namespace for the Optimist library.
Definition Optimist.hh:90
OPTIMIST_DEFAULT_INTEGER_TYPE Integer
The Integer type as used for the API.
Definition Optimist.hh:98
Definition Optimist.hh:114