Class mmin_gsl_base (o2scl)

O2scl : Class List

template<class func_t = multi_funct, class vec_t = boost::numeric::ublas::vector<double>, class dfunc_t = grad_funct, class auto_grad_t = gradient<multi_funct, boost::numeric::ublas::vector<double>>, class def_auto_grad_t = gradient_gsl<multi_funct, boost::numeric::ublas::vector<double>>>
class mmin_gsl_base : public o2scl::mmin_base<multi_funct, grad_funct, boost::numeric::ublas::vector<double>>

Base minimization routines for mmin_conf and mmin_conp.

This class is used by the mmin_conf and mmin_conp minimizers to perform the line minimization along a specified direction. It is not intended for a casual end-user.

Default template arguments

Subclassed by o2scl::mmin_conf< multi_funct, boost::numeric::ublas::vector< double >, grad_funct, gradient< multi_funct, boost::numeric::ublas::vector< double > >, gradient_gsl< multi_funct, boost::numeric::ublas::vector< double > > >, o2scl::mmin_conf< func_t, vec_t, dfunc_t, auto_grad_t, def_auto_grad_t >

Public Functions

inline mmin_gsl_base()
inline int base_set(func_t &ufunc, auto_grad_t &u_def_grad)

Set the function.

inline int base_set_de(func_t &ufunc, dfunc_t &udfunc)

Set the function and the .

inline int base_allocate(size_t nn)

Allocate memory.

inline int base_free()

Clear allocated memory.

Public Members

double deriv_h

Stepsize for finite-differencing ( default \( 10^{-4} \) )

int nmaxiter

Maximum iterations for line minimization (default 10)

def_auto_grad_t def_grad

Default automatic object.

Protected Types

typedef boost::numeric::ublas::vector<double> ubvector
typedef boost::numeric::ublas::matrix<double> ubmatrix

Protected Functions

inline void take_step(const vec_t &x, const vec_t &px, double stepx, double lambda, vec_t &x1x, vec_t &dx)

Take a step.

inline void intermediate_point(const vec_t &x, const vec_t &px, double lambda, double pg, double stepa, double stepc, double fa, double fc, vec_t &x1x, vec_t &dx, vec_t &gradient, double *stepx, double *f)

Line minimization.

Do a line minimisation in the region (xa,fa) (xc,fc) to find an intermediate (xb,fb) satisifying fa > fb < fc. Choose an initial xb based on parabolic interpolation.

inline void min(const vec_t &x, const vec_t &xp, double lambda, double stepa, double stepb, double stepc, double fa, double fb, double fc, double xtol, vec_t &x1x, vec_t &dx1x, vec_t &x2x, vec_t &dx2x, vec_t &gradient, double *xstep, double *f, double *gnorm_u)

Perform the minimization.

Starting at (x0, f0) move along the direction p to find a minimum f(x0 - lambda * p), returning the new point x1 = x0-lambda*p, f1=f(x1) and g1 = grad(f) at x1.

Protected Attributes

func_t *func

User-specified function.

dfunc_t *grad

User-specified gradient.

auto_grad_t *agrad

Automatic gradient object.

bool grad_given

If true, a gradient has been specified.

size_t dim

Memory size.