Jpp
16.0.1
the software that should make you happy
|
Fit method based on the Levenberg-Marquardt method. More...
#include <JGandalf.hh>
Classes | |
struct | result_type |
Data structure for return value of fit function. More... | |
Public Types | |
typedef JModel_t::parameter_type | parameter_type |
Data type of fit parameter. More... | |
Public Member Functions | |
JGandalf () | |
Default constructor. More... | |
template<class JFunction_t , class T , class... Args> | |
result_type | operator() (const JFunction_t &fit, T __begin, T __end, Args...args) |
Multi-dimensional fit of multiple data sets. More... | |
Public Attributes | |
std::vector< parameter_type > | parameters |
fit parameters More... | |
int | numberOfIterations |
number of iterations More... | |
double | lambda |
control parameter More... | |
JModel_t | value |
value More... | |
JModel_t | error |
error More... | |
JMATH::JMatrixNS | V |
Hesse matrix. More... | |
result_type | result |
Static Public Attributes | |
static int | MAXIMUM_ITERATIONS = 1000 |
maximal number of iterations More... | |
static double | EPSILON = 1.0e-3 |
maximal distance to minimum More... | |
static double | LAMBDA_MIN = 0.01 |
minimal value control parameter More... | |
static double | LAMBDA_MAX = 100.0 |
maximal value control parameter More... | |
static double | LAMBDA_UP = 9.0 |
multiplication factor control parameter More... | |
static double | LAMBDA_DOWN = 11.0 |
multiplication factor control parameter More... | |
static double | PIVOT = 1.0e-3 |
minimal value diagonal element of Hesse matrix More... | |
static int | debug = 0 |
debug level (default is off). More... | |
Private Member Functions | |
void | reset () |
Reset current parameters. More... | |
template<class JFunction_t , class T , class... Args> | |
void | update (const JFunction_t &fit, T __begin, T __end, Args...args) |
Recursive method to update current parameters. More... | |
template<class JFunction_t > | |
void | update (const JFunction_t &fit) |
Termination method to update current parameters. More... | |
Static Private Member Functions | |
static double | get (const JModel_t &model, double JModel_t::*parameter) |
Read/write access to parameter value by data member. More... | |
static double & | get (JModel_t &model, double JModel_t::*parameter) |
Read/write access to parameter value by data member. More... | |
static double | get (const JModel_t &model, const size_t index) |
Read/write access to parameter value by index. More... | |
static double & | get (JModel_t &model, const size_t index) |
Read/write access to parameter value by index. More... | |
static double | get (const JModel_t &model, const int index) |
Read/write access to parameter value by index. More... | |
static double & | get (JModel_t &model, const int index) |
Read/write access to parameter value by index. More... | |
Private Attributes | |
std::vector< double > | h |
struct { | |
result_type result | |
JMATH::JMatrixNS V | |
} | current |
struct { | |
JModel_t value | |
JModel_t error | |
result_type result | |
JMATH::JMatrixNS V | |
} | previous |
Fit method based on the Levenberg-Marquardt method.
The template argument refers to the model that should be fitted to the data.
This data structure should have arithmetic capabilities.
The data member JGandalf::value corresponds to the start c.q. final value of the model of the fit procedure and JGandalf::error to the uncertainties.
The co-variance matrix is stored in data member JGandalf::V.
The data member JGandalf::parameters constitutes a list of those parameters of the model that should actually be fitted.
For this, the model should contain the type definition for parameter_type
.
Normally, this type definition corresponds to a pointer to a data member of the model.
Alternatively, the type definition can be size_t
or int
.
In that case, the model class should provide for the element access operator[]
.
The first template parameter in the function operator should provide for an implementation of the actual fit function.
This function should return the data type JGandalf::result_type.
This data type comprises the values of the chi2 and the gradient for a given data point.
The function operator returns the minimal chi2 and combined gradient of the data points.
Definition at line 52 of file JGandalf.hh.
typedef JModel_t::parameter_type JFIT::JGandalf< JModel_t >::parameter_type |
Data type of fit parameter.
Definition at line 63 of file JGandalf.hh.
|
inline |
|
inline |
Multi-dimensional fit of multiple data sets.
The fit function should return the chi2 as well as the partial derivatives for the current value of the model and a given data point.
fit | fit function |
__begin | begin of data |
__end | end of data |
args | optional data |
Definition at line 128 of file JGandalf.hh.
|
inlineprivate |
Reset current parameters.
Definition at line 299 of file JGandalf.hh.
|
inlineprivate |
Recursive method to update current parameters.
fit | fit function |
__begin | begin of data |
__end | end of data |
args | optional data |
Definition at line 319 of file JGandalf.hh.
|
inlineprivate |
Termination method to update current parameters.
fit | fit function |
Definition at line 345 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by data member.
model | model |
parameter | parameter |
Definition at line 362 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by data member.
model | model |
parameter | parameter |
Definition at line 375 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by index.
model | model |
index | index |
Definition at line 388 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by index.
model | model |
index | index |
Definition at line 401 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by index.
model | model |
index | index |
Definition at line 414 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by index.
model | model |
index | index |
Definition at line 427 of file JGandalf.hh.
|
static |
maximal number of iterations
maximal number of iterations.
Definition at line 280 of file JGandalf.hh.
|
static |
maximal distance to minimum
maximal distance to minimum.
Definition at line 281 of file JGandalf.hh.
|
static |
minimal value control parameter
Definition at line 282 of file JGandalf.hh.
|
static |
maximal value control parameter
Definition at line 283 of file JGandalf.hh.
|
static |
multiplication factor control parameter
Definition at line 284 of file JGandalf.hh.
|
static |
multiplication factor control parameter
Definition at line 285 of file JGandalf.hh.
|
static |
minimal value diagonal element of Hesse matrix
minimal value diagonal element of matrix
Definition at line 286 of file JGandalf.hh.
std::vector<parameter_type> JFIT::JGandalf< JModel_t >::parameters |
fit parameters
Definition at line 288 of file JGandalf.hh.
int JFIT::JGandalf< JModel_t >::numberOfIterations |
number of iterations
Definition at line 289 of file JGandalf.hh.
double JFIT::JGandalf< JModel_t >::lambda |
control parameter
Definition at line 290 of file JGandalf.hh.
JModel_t JFIT::JGandalf< JModel_t >::value |
value
Definition at line 291 of file JGandalf.hh.
JModel_t JFIT::JGandalf< JModel_t >::error |
error
Definition at line 292 of file JGandalf.hh.
JMATH::JMatrixNS JFIT::JGandalf< JModel_t >::V |
Hesse matrix.
Definition at line 293 of file JGandalf.hh.
|
private |
Definition at line 432 of file JGandalf.hh.
result_type JFIT::JGandalf< JModel_t >::result |
Definition at line 435 of file JGandalf.hh.
struct { ... } JFIT::JGandalf< JModel_t >::current |
struct { ... } JFIT::JGandalf< JModel_t >::previous |
|
staticinherited |
debug level (default is off).
Definition at line 45 of file JMessage.hh.