Rosetta
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
lmmin.hh
Go to the documentation of this file.
1 //
2 // Project: LevenbergMarquardtLeastSquaresFitting
3 //
4 // File: lmmin.h
5 //
6 // Contents: Public interface to the Levenberg-Marquardt core implementation.
7 //
8 // Author: Joachim Wuttke 2004-2010
9 //
10 // Homepage: www.messen-und-deuten.de/lmfit
11 
12 
13 #ifndef INCLUDED_numeric_nls_LMMIN_HH
14 #define INCLUDED_numeric_nls_LMMIN_HH
15 
16 namespace numeric {
17 namespace nls {
18 
19 //#ifdef __cplusplus
20 //extern "C" {
21 //#endif
22 
23 
24 // Compact high-level interface.
25 // Collection of control (input) parameters.
26 typedef struct {
27  double ftol; // relative error desired in the sum of squares.
28  double xtol; // relative error between last two approximations.
29  double gtol; // orthogonality desired between fvec and its derivs.
30  double epsilon; // step used to calculate the jacobian.
31  double stepbound; // initial bound to steps in the outer loop.
32  int maxcall; // maximum number of iterations.
33  int scale_diag; // UNDOCUMENTED, TESTWISE automatical diag rescaling?
34  int printflags; // OR'ed to produce more noise
36 
37 // Collection of status (output) parameters.
38 typedef struct {
39  double fnorm; // norm of the residue vector fvec.
40  int nfev; // actual number of iterations.
41  int info; // status of minimization.
43 
44 // Recommended control parameter settings.
45 //const lm_control_struct lm_control_double;
46 //const lm_control_struct lm_control_float;
47 
48 // Standard monitoring routine.
49 void lm_printout_std( int n_par, const double *par, int m_dat,
50  const void *data, const double *fvec,
51  int printflags, int iflag, int iter, int nfev);
52 
53 // Refined calculation of Eucledian norm, typically used in printout routine.
54 double lm_enorm( int, const double * );
55 
56 // The actual minimization.
57 void lmmin( int n_par, double *par, int m_dat, const void *data,
58  void (*evaluate) (const double *par, int m_dat, const void *data,
59  double *fvec, int *info),
61  void (*printout) (int n_par, const double *par, int m_dat,
62  const void *data, const double *fvec,
63  int printflags, int iflag, int iter, int nfev) );
64 
65 
66 // Legacy low-level interface.
67 // Alternative to lm_minimize, allowing full control, and read-out
68 // of auxiliary arrays. For usage, see implementation of lm_minimize.
69 void lm_lmdif( int m, int n, double *x, double *fvec, double ftol,
70  double xtol, double gtol, int maxfev, double epsfcn,
71  double *diag, int mode, double factor, int *info, int *nfev,
72  double *fjac, int *ipvt, double *qtf, double *wa1,
73  double *wa2, double *wa3, double *wa4,
74  void (*evaluate) (const double *par, int m_dat, const void *data,
75  double *fvec, int *info),
76  void (*printout) (int n_par, const double *par, int m_dat,
77  const void *data, const double *fvec,
78  int printflags, int iflag, int iter, int nfev),
79  int printflags, const void *data );
80 
81 //const char *lm_infmsg[];
82 //const char *lm_shortmsg[];
83 
84 //#ifdef __cplusplus
85 //}
86 //#endif
87 
88 }
89 }
90 
91 #endif // INCLUDED_numeric_nls_LMMIN_HH
def status
def x
static void info(const char *fmt,...)
Definition: Svm.cc:48
double lm_enorm(int n, const double *x)
Definition: lmmin.cc:1255
void lmmin(int n_par, double *par, int m_dat, const void *data, void(*evaluate)(const double *par, int m_dat, const void *data, double *fvec, int *info), lm_status_struct *status, void(*printout)(int n_par, const double *par, int m_dat, const void *data, const double *fvec, int printflags, int iflag, int iter, int nfev))
Definition: lmmin.cc:96
void lm_printout_std(int n_par, const double *par, int m_dat, const void *, const double *fvec, int printflags, int iflag, int iter, int nfev)
Definition: lmmin.cc:43
string mode
Definition: contacts.py:32
void lm_lmdif(int m, int n, double *x, double *fvec, double ftol, double xtol, double gtol, int maxfev, double epsfcn, double *diag, int mode, double factor, int *info, int *nfev, double *fjac, int *ipvt, double *qtf, double *wa1, double *wa2, double *wa3, double *wa4, void(*evaluate)(const double *par, int m_dat, const void *data, double *fvec, int *info), void(*printout)(int n_par, const double *par, int m_dat, const void *data, const double *fvec, int printflags, int iflag, int iter, int nfev), int printflags, const void *data)
Definition: lmmin.cc:187