vnl_brent.h
Go to the documentation of this file.
1 // This is core/vnl/algo/vnl_brent.h
2 #ifndef vnl_brent_h_
3 #define vnl_brent_h_
4 //:
5 // \file
6 // \author awf@robots.ox.ac.uk
7 // \date 07 Dec 00
8 //
9 // \verbatim
10 // Modifications
11 // 31 May 2001 Ian Scott (Manchester). Added some documentation
12 // 31 May 2001 Ian Scott (Manchester). Added minimize_given_bounds_and_1st_f
13 // \endverbatim
14 
15 #include <vnl/vnl_cost_function.h>
17 #include <vnl/algo/vnl_algo_export.h>
18 
19 //: Brent 1D minimizer (deprecated)
20 //
21 // Please use vnl_brent_minimizer instead.
22 //
23 // This routine used to contain copyrighted code, and is deprecated.
24 // It is now simply a wrapper around vnl_brent_minimizer.
25 class VNL_ALGO_EXPORT vnl_brent : public vnl_brent_minimizer
26 {
27  public:
28  vnl_brent(vnl_cost_function* functor);
29  ~vnl_brent() override;
30 
31  //: Find a minimum of f(x) near to ax.
32  double minimize(double ax);
33 
34  //: Find the minimum value of f(x) within a<= x <= c.
35  // The minimum value is the return value, and *xmin the relevant value of x.
36  // You need to provide a bracket for the minimum
37  // Also returns fa = f(a), etc.
38  double minimize_given_bounds(double ax, double bx, double cx,
39  double tol,
40  double *xmin);
41 
42  //: Save time over minimize_given_bounds() if you know f(b)
43  // This function avoids a single computation of f, if you already know
44  // it.
45  double minimize_given_bounds_and_1st_f(double ax, double bx, double fb,
46  double cx, double tol, double *xmin);
47 
48  //: Given distinct points ax, and bx, find a bracket for the minimum.
49  // Return a bracket ax > bx > cx, f(b) < f(a), f(b) < f(c) for minimum.
50  // Also returns fa = f(a), etc.
51  //
52  // You should probably use vnl_bracket_minimum instead of this function.
53  void bracket_minimum(double *ax, double *bx, double *cx,
54  double *fa, double *fb, double *fc);
55 
56  //: Given distinct points ax, and bx, find a bracket for the minimum.
57  // Return a bracket ax > bx > cx, f(b) < f(a), f(b) < f(c) for minimum.
58  //
59  // You should probably use vnl_bracket_minimum instead of this function.
60  void bracket_minimum(double *ax, double *bx, double *cx);
61 };
62 
63 #endif // vnl_brent_h_
An object that represents a function from R^n -> R.
Brent 1D minimizer (deprecated).
Definition: vnl_brent.h:25
Vector->Real function.
double minimize_given_bounds(double ax, double bx, double cx)
Find the minimum value of f(x) within a<= x <= c.
Brent 1D minimizer.
double minimize(double ax)
Find a minimum of f(x) near to ax.