#ifndef MTT_HJSOLVER #define MTT_HJSOLVER #include "mtt_AlgebraicSolver.hh" namespace MTT { class HJ_Solver : public MTT::AlgebraicSolver { // http://www.netlib.org/opt/hooke.c // Hooke and Jeeves solution public: HJ_Solver (const int npar, const int nu, const int nx, const int ny, const int nyz) : MTT::AlgebraicSolver (npar,nu,nx,ny,nyz) { static_ptr = this; VARS = nyz; } static double f (double tryUi[], int nyz); ~HJ_Solver (void) {}; protected: void Solve (void); double best_nearby (double delta[], double point[], double prevbest, int nvars); int hooke (int nvars, // MTTNYZ double startpt[], // user's initial guess double endpt[], // result double rho = 0.05, // geometric shrink factor double epsilon = 1e-3, // end value stepsize int itermax = 5000); // max # iterations private: int VARS; public: static HJ_Solver *static_ptr; }; } #endif // MTT_HJSOLVER