Class fit_nonlin (o2scl)¶
-
template<class func_t = gen_fit_funct<>, class vec_t = boost::numeric::ublas::vector<double>, class mat_t = boost::numeric::ublas::matrix<double>>
class fit_nonlin : public o2scl::fit_nonlin_b<boost::numeric::ublas::vector<double>, boost::numeric::ublas::matrix<double>>, public o2scl::fit_base<gen_fit_funct<>, boost::numeric::ublas::vector<double>, boost::numeric::ublas::matrix<double>>¶ Non-linear least-squares fitting class (GSL)
The GSL-based fitting class using a Levenberg-Marquardt type algorithm. The algorithm stops when
\[ |dx_i| < \mathrm{tol\_abs}+\mathrm{tol\_rel}\times|x_i| \]where \(dx\) is the last step and \(x\) is the current position. If test_gradient is true, then additionally fit() requires that\[ \sum_i |g_i| < \mathrm{tol\_abs} \]where \(g_i\) is the \(i\)-th component of the gradient of the function \(\Phi(x)\) where\[ \Phi(x) = || F(x) ||^2 \]Default template arguments
func_t
- gen_fit_funct<>vec_t
- boost::numeric::ublas::vector <double >mat_t
- boost::numeric::ublas::matrix <double >
Todo
In class fit_nonlin:
Allow the user to specify the derivatives
Fix so that the user can specify automatic scaling of the fitting parameters, where the initial guess are used for scaling so that the fitting parameters are near unity.
- Idea for Future:
Some of these member functions (like update_diag()) don’t depend on member data and could be possibly be moved to a parent class?
Public Functions
-
inline fit_nonlin()¶
-
inline virtual ~fit_nonlin()¶
-
inline virtual int print_iter_nonlin(size_t nv, vec_t &x, vec_t &dx, int iter2, double l_epsabs, double l_epsrel)¶
Print the progress in the current iteration.
-
inline void resize(size_t n, size_t p)¶
Allocate memory with
n
data points andp
parameters.
-
inline int set(size_t npar, vec_t &parms, func_t &fitfun)¶
Set the initial values of the parameters and the fitting function to use for the next call to iterate()
-
inline int iterate()¶
Perform an iteration.
-
inline virtual int fit(size_t npar, vec_t &parms, mat_t &covar, double &chi2, func_t &fitfun)¶
Fit the data specified in (xdat,ydat) to the function
fitfun
with the parameters inpar
.The covariance matrix for the parameters is returned in
covar
and the value of \( \chi^2 \) is returned inchi2
.
-
inline virtual const char *type()¶
Return string denoting type (“fit_nonlin”)
Public Members
-
bool test_gradient¶
If true, test the gradient also (default false)
-
bool use_scaled¶
Use the scaled routine if true (default true)
Protected Functions
-
inline void free()¶
Free allocated memory.