|
|
5cb4e47 |
--- fityk/fit.cpp.orig 2014-03-08 20:42:18.876972123 -0600
|
|
|
5cb4e47 |
+++ fityk/fit.cpp 2014-03-08 20:43:43.824323999 -0600
|
|
|
5cb4e47 |
@@ -15,7 +15,6 @@
|
|
|
5cb4e47 |
#include "settings.h"
|
|
|
5cb4e47 |
#include "var.h"
|
|
|
5cb4e47 |
#include "LMfit.h"
|
|
|
5cb4e47 |
-#include "CMPfit.h"
|
|
|
5cb4e47 |
#include "GAfit.h"
|
|
|
5cb4e47 |
#include "NMfit.h"
|
|
|
5cb4e47 |
#include "NLfit.h"
|
|
|
5cb4e47 |
@@ -293,38 +292,6 @@
|
|
|
5cb4e47 |
}
|
|
|
5cb4e47 |
}
|
|
|
5cb4e47 |
|
|
|
5cb4e47 |
-// similar to compute_derivatives(), but adjusted for MPFIT interface
|
|
|
5cb4e47 |
-void Fit::compute_derivatives_mp(const vector<realt> &A,
|
|
|
5cb4e47 |
- const vector<DataAndModel*>& dms,
|
|
|
5cb4e47 |
- double **derivs, double *deviates)
|
|
|
5cb4e47 |
-{
|
|
|
5cb4e47 |
- ++evaluations_;
|
|
|
5cb4e47 |
- F_->mgr.use_external_parameters(A);
|
|
|
5cb4e47 |
- int ntot = 0;
|
|
|
5cb4e47 |
- v_foreach (DataAndModel*, i, dms) {
|
|
|
5cb4e47 |
- ntot += compute_derivatives_mp_for(*i, ntot, derivs, deviates);
|
|
|
5cb4e47 |
- }
|
|
|
5cb4e47 |
-}
|
|
|
5cb4e47 |
-
|
|
|
5cb4e47 |
-int Fit::compute_derivatives_mp_for(const DataAndModel* dm, int offset,
|
|
|
5cb4e47 |
- double **derivs, double *deviates)
|
|
|
5cb4e47 |
-{
|
|
|
5cb4e47 |
- const Data* data = dm->data();
|
|
|
5cb4e47 |
- int n = data->get_n();
|
|
|
5cb4e47 |
- vector<realt> xx = data->get_xx();
|
|
|
5cb4e47 |
- vector<realt> yy(n, 0.);
|
|
|
5cb4e47 |
- const int dyn = na_+1;
|
|
|
5cb4e47 |
- vector<realt> dy_da(n*dyn, 0.);
|
|
|
5cb4e47 |
- dm->model()->compute_model_with_derivs(xx, yy, dy_da);
|
|
|
5cb4e47 |
- for (int i = 0; i != n; ++i)
|
|
|
5cb4e47 |
- deviates[offset+i] = (data->get_y(i) - yy[i]) / data->get_sigma(i);
|
|
|
5cb4e47 |
- for (int j = 0; j != na_; ++j)
|
|
|
5cb4e47 |
- if (derivs[j] != NULL)
|
|
|
5cb4e47 |
- for (int i = 0; i != n; ++i)
|
|
|
5cb4e47 |
- derivs[j][offset+i] = -dy_da[i*dyn+j] / data->get_sigma(i);
|
|
|
5cb4e47 |
- return n;
|
|
|
5cb4e47 |
-}
|
|
|
5cb4e47 |
-
|
|
|
5cb4e47 |
// similar to compute_derivatives(), but adjusted for NLopt interface
|
|
|
5cb4e47 |
realt Fit::compute_derivatives_nl(const vector<realt> &A,
|
|
|
5cb4e47 |
const vector<DataAndModel*>& dms,
|
|
|
5cb4e47 |
@@ -682,7 +649,6 @@
|
|
|
5cb4e47 |
{
|
|
|
5cb4e47 |
// these methods correspond to fit_method_enum[]
|
|
|
5cb4e47 |
methods_.push_back(new LMfit(F_, fit_method_enum[0]));
|
|
|
5cb4e47 |
- methods_.push_back(new MPfit(F_, fit_method_enum[1]));
|
|
|
5cb4e47 |
methods_.push_back(new NMfit(F_, fit_method_enum[2]));
|
|
|
5cb4e47 |
methods_.push_back(new GAfit(F_, fit_method_enum[3]));
|
|
|
5cb4e47 |
#if HAVE_LIBNLOPT
|
|
|
5cb4e47 |
@@ -701,7 +667,6 @@
|
|
|
5cb4e47 |
const char* FitMethodsContainer::full_method_names[][2] =
|
|
|
5cb4e47 |
{
|
|
|
5cb4e47 |
{ "Levenberg-Marquardt", "gradient based method" },
|
|
|
5cb4e47 |
- { "MPFIT (another Lev-Mar)", "alternative Lev-Mar implementation" },
|
|
|
5cb4e47 |
{ "Nelder-Mead Simplex", "slow but simple and reliable method" },
|
|
|
5cb4e47 |
{ "Genetic Algorithm", "not really maintained" },
|
|
|
5cb4e47 |
#if HAVE_LIBNLOPT
|