Skip to content
Snippets Groups Projects
gradient.h 992 B
#ifndef _GRADIENT_H
#define _GRADIENT_H

#include <vector>
#include <boost/function.hpp>
#include <functional>

#define DEFAULT_MAX_INC       0.1

class CGradient
{
  private:
    double max_coord_inc; 
    boost::function<double (double)> p_function;
    boost::function<double (double)> p_function_der; 
    double max_coord;
    double min_coord;
    double value; 
    double coordinate;
  protected:
    
  public:
    CGradient();
    CGradient(double max_coord_inc);
    void set_max_coord_inc(double max_inc);
    double get_max_coord_inc(void);
    void set_coord_constraints(double max,double min);
    void get_coord_constraints(double &max,double &min);
    void set_function(boost::function<double (double)> p_function);
    void set_function_der(boost::function<double (double)> p_function);
    bool compute(double max_func_error,unsigned int max_iter,double start_point,bool max=true);
    double get_value(void);
    double get_coordinate(void);
    ~CGradient();
};

#endif