32 #ifndef _math_optimize_function_h
33 #define _math_optimize_function_h
38 #include <util/state/state.h>
39 #include <math/optimize/transform.h>
40 #include <math/scmat/matrix.h>
41 #include <math/scmat/result.h>
62 virtual void set_value(
double);
76 virtual void set_actual_value_accuracy(
double);
77 virtual void set_actual_gradient_accuracy(
double);
78 virtual void set_actual_hessian_accuracy(
double);
109 double gradacc = DBL_EPSILON,
double hessacc = DBL_EPSILON);
123 virtual double value();
143 virtual RefSCVector gradient();
144 int gradient_needed()
const;
145 int do_gradient(
int);
146 virtual void set_desired_gradient_accuracy(
double);
147 virtual double actual_gradient_accuracy()
const;
148 virtual double desired_gradient_accuracy()
const;
149 AccResultRefSCVector& gradient_result() {
return gradient_; }
156 virtual RefSymmSCMatrix hessian();
157 int hessian_needed()
const;
159 virtual void set_desired_hessian_accuracy(
double);
160 virtual double actual_hessian_accuracy()
const;
161 virtual double desired_hessian_accuracy()
const;
162 AccResultRefSymmSCMatrix& hessian_result() {
return hessian_; }
170 virtual RefSymmSCMatrix inverse_hessian(RefSymmSCMatrix&);
175 virtual int gradient_implemented()
const;
176 virtual int hessian_implemented()
const;
179 virtual void set_x(
const RefSCVector&);
180 RefSCVector get_x()
const {
return x_.copy(); }
181 const RefSCVector& get_x_no_copy()
const {
return x_; }