提交scripts
This commit is contained in:
1 parent
82caf72036
commit
07dabbd186
224 files changed
+130146
No files matched your search
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Project: LevenbergMarquardtLeastSquaresFitting
|
||||
*
|
||||
* File: lmmin.h
|
||||
*/
|
||||
|
||||
#ifndef LMMIN_H
|
||||
#define LMMIN_H
|
||||
|
||||
|
||||
/** Compact high-level interface. **/
|
||||
|
||||
/* Collection of control (input) parameters. */
|
||||
typedef struct {
|
||||
double ftol; /* relative error desired in the sum of squares. */
|
||||
double xtol; /* relative error between last two approximations. */
|
||||
double gtol; /* orthogonality desired between fvec and its derivs. */
|
||||
double epsilon; /* step used to calculate the jacobian, or 0 for user provided jacobian. */
|
||||
double stepbound; /* initial bound to steps in the outer loop. */
|
||||
int maxcall; /* maximum number of iterations. */
|
||||
int scale_diag; /* UNDOCUMENTED, TESTWISE automatic diag rescaling? */
|
||||
#ifdef LMFIT_PRINTOUT
|
||||
int printflags; /* OR'ed to produce more noise */
|
||||
#endif
|
||||
} lm_control_struct;
|
||||
|
||||
/* Collection of status (output) parameters. */
|
||||
typedef struct {
|
||||
double fnorm; /* norm of the residue vector fvec. */
|
||||
int nfev; /* actual number of iterations. */
|
||||
int info; /* status (index for lm_infmsg and lm_shortmsg). */
|
||||
} lm_status_struct;
|
||||
|
||||
/* Recommended control parameter settings. */
|
||||
extern const lm_control_struct lm_control_double;
|
||||
extern const lm_control_struct lm_control_float;
|
||||
|
||||
#ifdef LMFIT_PRINTOUT
|
||||
/* Standard monitoring routine. */
|
||||
void lm_printout_std( int n_par, const double *par, int m_dat,
|
||||
const void *data, const double *fvec,
|
||||
int printflags, int iflag, int iter, int nfev );
|
||||
#endif
|
||||
|
||||
/* Refined calculation of Eucledian norm, typically used in printout routine. */
|
||||
double lm_enorm( int, const double * );
|
||||
|
||||
/* The actual minimization. */
|
||||
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, double *fjac, int *info),
|
||||
const lm_control_struct *control, lm_status_struct *status
|
||||
#ifdef LMFIT_PRINTOUT
|
||||
, 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) = NULL
|
||||
#endif
|
||||
);
|
||||
|
||||
|
||||
/** Legacy low-level interface. **/
|
||||
|
||||
/* Alternative to lm_minimize, allowing full control, and read-out
|
||||
of auxiliary arrays. For usage, see implementation of lmmin. */
|
||||
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, double *fjac, int *info),
|
||||
const void *data
|
||||
#ifdef LMFIT_PRINTOUT
|
||||
, 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
|
||||
#endif
|
||||
);
|
||||
|
||||
extern const char *lm_infmsg[];
|
||||
extern const char *lm_shortmsg[];
|
||||
|
||||
|
||||
#endif /* LMMIN_H */
|
||||
Reference in new issue
Block a user