You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
3.3 KiB
82 lines
3.3 KiB
4 months ago
|
/*
|
||
|
* Library: lmfit (Levenberg-Marquardt least squares fitting)
|
||
|
*
|
||
|
* File: lmstruct.h
|
||
|
*
|
||
|
* Contents: Declarations of parameter records, used in lmmin.h and lmcurve.h
|
||
|
*
|
||
|
* Copyright: Joachim Wuttke, Forschungszentrum Juelich GmbH (2004-2013)
|
||
|
*
|
||
|
* License: see ../COPYING (FreeBSD)
|
||
|
*
|
||
|
* Homepage: apps.jcns.fz-juelich.de/lmfit
|
||
|
*/
|
||
|
|
||
|
#ifndef LMSTRUCT_H
|
||
|
#define LMSTRUCT_H
|
||
|
#undef __BEGIN_DECLS
|
||
|
#undef __END_DECLS
|
||
|
#ifdef __cplusplus
|
||
|
#define __BEGIN_DECLS extern "C" {
|
||
|
#define __END_DECLS }
|
||
|
#else
|
||
|
#define __BEGIN_DECLS /* empty */
|
||
|
#define __END_DECLS /* empty */
|
||
|
#endif
|
||
|
__BEGIN_DECLS
|
||
|
|
||
|
#include <stdio.h>
|
||
|
|
||
|
/* Collection of input parameters for fit control. */
|
||
|
typedef struct {
|
||
|
double ftol; /* Relative error desired in the sum of squares.
|
||
|
Termination occurs when both the actual and
|
||
|
predicted relative reductions in the sum of squares
|
||
|
are at most ftol. */
|
||
|
double xtol; /* Relative error between last two approximations.
|
||
|
Termination occurs when the relative error between
|
||
|
two consecutive iterates is at most xtol. */
|
||
|
double gtol; /* Orthogonality desired between fvec and its derivs.
|
||
|
Termination occurs when the cosine of the angle
|
||
|
between fvec and any column of the Jacobian is at
|
||
|
most gtol in absolute value. */
|
||
|
double epsilon; /* Step used to calculate the Jacobian, should be
|
||
|
slightly larger than the relative error in the
|
||
|
user-supplied functions. */
|
||
|
double stepbound; /* Used in determining the initial step bound. This
|
||
|
bound is set to the product of stepbound and the
|
||
|
Euclidean norm of diag*x if nonzero, or else to
|
||
|
stepbound itself. In most cases stepbound should lie
|
||
|
in the interval (0.1,100.0). Generally, the value
|
||
|
100.0 is recommended. */
|
||
|
int patience; /* Used to set the maximum number of function evaluations
|
||
|
to patience*(number_of_parameters+1). */
|
||
|
int scale_diag; /* If 1, the variables will be rescaled internally.
|
||
|
Recommended value is 1. */
|
||
|
FILE* msgfile; /* Progress messages will be written to this file. */
|
||
|
int verbosity; /* OR'ed: 1: print some messages; 2: print Jacobian. */
|
||
|
int n_maxpri; /* -1, or max number of parameters to print. */
|
||
|
int m_maxpri; /* -1, or max number of residuals to print. */
|
||
|
} lm_control_struct;
|
||
|
|
||
|
/* Collection of output parameters for status info. */
|
||
|
typedef struct {
|
||
|
double fnorm; /* norm of the residue vector fvec. */
|
||
|
int nfev; /* actual number of iterations. */
|
||
|
int outcome; /* Status indicator. Nonnegative values are used as index
|
||
|
for the message text lm_infmsg, set in lmmin.c. */
|
||
|
int userbreak; /* Set when function evaluation requests termination. */
|
||
|
} lm_status_struct;
|
||
|
|
||
|
/* Preset (and recommended) control parameter settings. */
|
||
|
extern const lm_control_struct lm_control_double;
|
||
|
extern const lm_control_struct lm_control_float;
|
||
|
|
||
|
/* Preset message texts. */
|
||
|
|
||
|
extern const char* lm_infmsg[];
|
||
|
extern const char* lm_shortmsg[];
|
||
|
|
||
|
__END_DECLS
|
||
|
#endif /* LMSTRUCT_H */
|