Fit

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

5#5function6#6 is any valid **gnuplot** expression, although it is usual to use a
previously user-defined function of the form f(x) or f(x,y).

5#5datafile6#6 is treated as in the **plot** command. All the **plot datafile**
modifiers (**using**, **every**,...) except **smooth** and the deprecated **thru**
are applicable to **fit**. See **plot datafile (p. )**.

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.
Note that if you don't specify a **using** option at all, no y deviations are
read from the datafile even if it does have a third column, so you'll
always get unit weights.

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 (p. )**), 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 multi-branch (p. )**.

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. By using the command
**set fit logfile**, the name of the log file can be changed.

If gnuplot was built with this option, and you activated it using **set fit
errorvariables**, the error for each fitted parameter will be stored in
a variable named like the parameter, but with `"`_err`"` appended. Thus the
errors can be used as input for further computations.

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**, 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** command may be used to store final
values in a file for subsequent use as a parameter file. See **update (p. )**
for details.