Summary
QNFIT: a curve fitting program for advanced users
This program is for those who have a good understanding of
constrained, weighted least squares curve fitting, and wish
to take control of the optimisation process. It is definitely
not a program for beginners. The basic version just uses
a quasi-Newton method to fit one or more functions of one or
several variables, or a single ordinary differential equations,
where the equations are taken
from a dynamic link library, or from an ASCII text file that
you supply, as described in program USERMOD. Some versions
provide options to use alternative optimisation methods, such
as LM, modified Gauss-Newton, or SQP.
After a model has been fitted, there are then options for
goodness of fit, plotting, extrapolation, graphical deconvolution,
storing objective function values, parameters and covariance
matrices for model discrimination, and using the best fit
model for calibration, or estimating derivatives and
areas under the best fit curve.
Problems such as failure to converge, finding local minima or
slow running may happen with four or more parameters, functions
of several variables, or particularly differential equations.
To avoid such problems
you must have good data and weights, and you must understand the
mathematics of the model selected.
In EXPERT mode you can put
parameter starting estimates and limits on your data file,
and this is how QNFIT should be used for single functions.
For examples just
inspect the test files qnfit.tf1, qnfit.tf2 and qnfit.tf3.
To see how to supply parameters from files, inspect qnfit.tfl.
This is a library file referencing several parameter limits
files. Ideally you would construct your own library of
parameter limits files from which you can select appropriate
starting estimates and parameter limits.
In all cases you need good starting estimates. This program
uses your starting estimates as a diagonal matrix to scale
the parameters, i.e.
external_p(i) = starting estimate(i)*internal_p(i).
It is possible to use a random search before commencing a fitting
session, but this should only be regarded as a soft option and
should not be used where random parameter values can lead to
singularities, say with exponential models, or bifurcations
with differential equations. Initial values can be regarded
as parameters to be estimated with differential equations,
but this should be avoided if at all possible, as it greatly
compounds the difficulties of fitting.
A special convention is required for fiting differential
equations. Here the last parameter must be the initial
condition y0 = f(0), that is, the function value at x = 0.
If possible, this should be fixed and not varied, as numerous
problems arise when advancing the solution from a different
starting point at each iteration. So you must have x >= 0 with
differential equations and, even if your data start at x > 0,
the last parameter will still be used as y0 = f(0). Any attempt
to fit data with x < 0, or to extrapolate with x < 0 for
calibration or calculating areas or derivatives, etc., will
simply generate all f(i) = y0. Note that program DEQSOL can be
used for sytems of differential equations.
Back to Help Menu or End Help