|
Jpp
18.6.0-rc.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 JFIT_LOCAL::JTypedef_t < 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 = 10.0 |
| multiplication factor control parameter More... | |
| static double | LAMBDA_DOWN = 10.0 |
| multiplication factor control parameter More... | |
| static double | PIVOT = std::numeric_limits<double>::epsilon() |
| 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 |
| JMATH::JVectorND | x |
| struct { | |
| result_type result | |
| } | current |
| struct { | |
| JModel_t value | |
| JModel_t error | |
| result_type result | |
| } | 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.
If not defined, the parameters are assumed to be data members of type double.
Alternatively, the type definition can be size_t or int.
In that case, the model 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 structure comprises the values of the chi2 and the gradient for a given data point.
The function operator returns the minimal chi2 and summed gradient of all data points.
Definition at line 84 of file JGandalf.hh.
| typedef JFIT_LOCAL::JTypedef_t<JModel_t>::parameter_type JFIT::JGandalf< JModel_t >::parameter_type |
Data type of fit parameter.
Definition at line 95 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 160 of file JGandalf.hh.
|
inlineprivate |
Reset current parameters.
Definition at line 341 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 361 of file JGandalf.hh.
|
inlineprivate |
Termination method to update current parameters.
| fit | fit function |
Definition at line 387 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by data member.
| model | model |
| parameter | parameter |
Definition at line 404 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by data member.
| model | model |
| parameter | parameter |
Definition at line 417 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by index.
| model | model |
| index | index |
Definition at line 430 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by index.
| model | model |
| index | index |
Definition at line 443 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by index.
| model | model |
| index | index |
Definition at line 456 of file JGandalf.hh.
|
inlinestaticprivate |
Read/write access to parameter value by index.
| model | model |
| index | index |
Definition at line 469 of file JGandalf.hh.
|
static |
maximal number of iterations
maximal number of iterations.
Definition at line 322 of file JGandalf.hh.
|
static |
maximal distance to minimum
maximal distance to minimum.
Definition at line 323 of file JGandalf.hh.
|
static |
minimal value control parameter
Definition at line 324 of file JGandalf.hh.
|
static |
maximal value control parameter
Definition at line 325 of file JGandalf.hh.
|
static |
multiplication factor control parameter
Definition at line 326 of file JGandalf.hh.
|
static |
multiplication factor control parameter
Definition at line 327 of file JGandalf.hh.
|
static |
minimal value diagonal element of Hesse matrix
minimal value diagonal element of matrix
Definition at line 328 of file JGandalf.hh.
| std::vector<parameter_type> JFIT::JGandalf< JModel_t >::parameters |
fit parameters
Definition at line 330 of file JGandalf.hh.
| int JFIT::JGandalf< JModel_t >::numberOfIterations |
number of iterations
Definition at line 331 of file JGandalf.hh.
| double JFIT::JGandalf< JModel_t >::lambda |
control parameter
Definition at line 332 of file JGandalf.hh.
| JModel_t JFIT::JGandalf< JModel_t >::value |
value
Definition at line 333 of file JGandalf.hh.
| JModel_t JFIT::JGandalf< JModel_t >::error |
error
Definition at line 334 of file JGandalf.hh.
| JMATH::JMatrixNS JFIT::JGandalf< JModel_t >::V |
Hesse matrix.
Definition at line 335 of file JGandalf.hh.
|
private |
Definition at line 474 of file JGandalf.hh.
|
private |
Definition at line 475 of file JGandalf.hh.
| result_type JFIT::JGandalf< JModel_t >::result |
Definition at line 478 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.
1.8.5