GNU Info

Info Node: (gnuplot.info)fit

(gnuplot.info)fit


Next: adjustable parameters Prev: exit Up: Commands
Enter node , (file) or (file)node

 The `fit` command can fit a user-defined function to a set of data points
 (x,y) or (x,y,z), using an implementation of the nonlinear least-squares
 (NLLS) Marquardt-Levenberg algorithm.  Any user-defined variable occurring in
 the function body may serve as a fit parameter, but the return type of the
 function must be real.

 Syntax:
       fit {[xrange] {[yrange]}} <function> '<datafile>'
           {datafile-modifiers}
           via '<parameter file>' | <var1>{,<var2>,...}

 Ranges may be specified to temporarily limit the data which is to be fitted;
 any out-of-range data points are ignored. The syntax is
       [{dummy_variable=}{<min>}{:<max>}],
 analogous to `plot` (Note: plot ); see  `plot ranges` (Note: ranges ).

 <function> is any valid `gnuplot` (Note: gnuplot ) expression, although it
 is usual to use a previously user-defined function of the form f(x) or
 f(x,y).

 <datafile> is treated as in the `plot` command.  All the `plot datafile`
 (Note: data-file ) modifiers (`using` (Note: using ),  `every`
 (Note: every ),...) except  `smooth` (Note: smooth ) are applicable to
 fit. See `plot datafile`.

 The default data formats for fitting functions with a single independent
 variable, y=f(x), are {x:}y or x:y:s; those formats can be changed with
 the datafile `using` qualifier.  The third item, (a column number or an
 expression), if present, is interpreted as the standard deviation of the
 corresponding y value and is used to compute a weight for the datum, 1/s**2.
 Otherwise, all data points are weighted equally, with a weight of one.

 To fit a function with two independent variables, z=f(x,y), the required
 format is `using` with four items, x:y:z:s.  The complete format must be
 given---no default columns are assumed for a missing token.  Weights for
 each data point are evaluated from 's' as above.  If error estimates are
 not available, a constant value can be specified as a constant expression
 (see `plot datafile using`), e.g., `using 1:2:3:(1)`.

 Multiple datasets may be simultaneously fit with functions of one
 independent variable by making y a 'pseudo-variable', e.g., the dataline
 number, and fitting as two independent variables.  See `fit multibranch`.

 The `via` qualifier specifies which parameters are to be adjusted, either
 directly, or by referencing a parameter file.

 Examples:
       f(x) = a*x**2 + b*x + c
       g(x,y) = a*x**2 + b*y**2 + c*x*y
       FIT_LIMIT = 1e-6
       fit f(x) 'measured.dat' via 'start.par'
       fit f(x) 'measured.dat' using 3:($7-5) via 'start.par'
       fit f(x) './data/trash.dat' using 1:2:3 via a, b, c
       fit g(x,y) 'surface.dat' using 1:2:3:(1) via a, b, c

 After each iteration step, detailed information about the current state
 of the fit is written to the display.  The same information about the
 initial and final states is written to a log file, "fit.log".  This file
 is always appended to, so as to not lose any previous fit history;  it
 should be deleted or renamed as desired.

 The fit may be interrupted by pressing Ctrl-C (any key but Ctrl-C under
 MSDOS and Atari Multitasking Systems).  After the current iteration
 completes, you have the option to (1) stop the fit and accept the current
 parameter values, (2) continue the fit, (3) execute a `gnuplot` command
 as specified by the environment variable FIT_SCRIPT.  The default for
 FIT_SCRIPT is `replot` (Note: replot ), so if you had previously plotted
 both the data and the fitting function in one graph, you can display the
 current state of the fit.

 Once `fit` has finished, the `update` (Note: update ) command may be used to
 store final values in a file for subsequent use as a parameter file.   See
 `update` for details.


adjustable parameters
beginner's guide
error estimates
fit controlling
multi-branch
starting values
tips

automatically generated by info2www version 1.2.2.9