gnuplot 4.6
61
Part III
Commands
This section lists the commands acceptable to gnuplot in alphabetical order. Printed versions of this
document contain all commands; the text available interactively may not be complete. Indeed, on some
systems there may be no commands at all listed under this heading.
Note that in most cases unambiguous abbreviations for command names and their options are permissible,
i.e., "p f(x) w li" instead of "plot f(x) with lines".
In the syntax descriptions, braces (fg) denote optional arguments and a vertical bar (j) separates mutually
exclusive choices.
Cd
The cd command changes the working directory.
Syntax:
cd ’<directory-name>’
The directory name must be enclosed in quotes.
Examples:
cd ’subdir’
cd ".."
It is recommended that Windows users use single-quotes, because backslash [n] has special signicance inside
double-quotes and has to be escaped. For example,
cd "c:\newdata"
fails, but
cd ’c:\newdata’
cd "c:\\newdata"
work as expected.
Call
The call command is identical to the load command with one exception: you can have up to ten additional
parameters to the command (delimited according to the standard parser rules) which can be substituted
into the lines read from the le. As each line is read from the called input le, it is scanned for the sequence
$(dollar-sign) followed by a digit (0{9). If found, the sequence is replaced by the corresponding parameter
from the call command line. If the parameter was specied as a string in the call line, it is substituted
without its enclosing quotes. Sequence $# is replaced by the number of passed parameters. $ followed by
any character will be that character; e.g. use $$ to get a single $. Providing more than ten parameters on
the call command line will cause an error. A parameter that was not provided substitutes as nothing. Files
being called may themselves contain call or load commands.
Syntax:
call "<input-file>" <parameter-0> <parm-1> ... <parm-9>
The name of the input le must be enclosed in quotes, and it is recommended that parameters are similarly
enclosed in quotes (future versions of gnuplot may treat quoted and unquoted arguments dierently).
Example:
If the le ’calltest.gp’ contains the line:
Convert pdf pages into powerpoint slides - Library software class:C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in C#.net, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
www.rasteredge.com
Convert pdf pages into powerpoint slides - Library software class:VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in vb.net, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
www.rasteredge.com
62
gnuplot 4.6
print "argc=$# p0=$0 p1=$1 p2=$2 p3=$3 p4=$4 p5=$5 p6=$6 p7=x$7x"
entering the command:
call ’calltest.gp’ "abcd" 1.2 + "’quoted’" -- "$2"
will display:
argc=7 p0=abcd p1=1.2 p2=+ p3=’quoted’ p4=- p5=- p6=$2 p7=xx
NOTE: there is a clash in syntax with the datale using callback operator. Use $$n or column(n) to
access column n from a datale inside a called datale plot.
Clear
The clear command erases the current screen or output device as specied by set output. This usually
generates a formfeed on hardcopy devices. Use set terminal to set the device type.
For some terminals clear erases only the portion of the plotting surface dened by set size, so for these it
can be used in conjunction with set multiplot to create an inset.
Example:
set multiplot
plot sin(x)
set origin 0.5,0.5
set size 0.4,0.4
clear
plot cos(x)
unset multiplot
Please see set multiplot (p. 129), set size (p. 146), and set origin (p. 134) for details of these
commands.
Do
Syntax:
do for <iteration-spec> {
<commands>
<commands>
}
Execute a sequence of commands multiple times. The commands must be enclosed in curly brackets, and
the opening "f" must be on the same line as the do keyword. This command cannot be used with old-style
(un-bracketed) if/else statements. See if (p.70). For examples of iteration speciers, see iteration (p.71).
Example:
set multiplot layout 2,2
do for [name in "A B C D"] {
filename = name . ".dat"
set title sprintf("Condition %s",name)
plot filename title name
}
unset multiplot
Evaluate
The evaluate command executes the commands given as an argument string. Newline characters are not
allowed within the string.
Syntax:
Library software class:C# PowerPoint - How to Process PowerPoint
NET PowerPoint control, developers are able to split a PowerPoint into two or It enables you to move out useless PowerPoint document pages simply with
www.rasteredge.com
Library software class:VB.NET PowerPoint: Process & Manipulate PPT (.pptx) Slide(s)
split one PPT (.pptx) document file into smaller sub library SDK, this VB.NET PowerPoint processing control & profession imaging controls, PDF document, image
www.rasteredge.com
gnuplot 4.6
63
eval <string expression>
This is especially useful for a repetition of similar commands.
Example:
set_label(x, y, text) \
= sprintf("set label ’%s’ at %f, %f point pt 5", text, x, y)
eval set_label(1., 1., ’one/one’)
eval set_label(2., 1., ’two/one’)
eval set_label(1., 2., ’one/two’)
Please see substitution macros (p.40) for another way to execute commands from a string.
Exit
The commands exit and quit, as well as the END-OF-FILE character (usually Ctrl-D) terminate input
from the current input stream: terminal session, pipe, and le input (pipe).
If input streams are nested (inherited load scripts), then reading will continue in the parent stream. When
the top level stream is closed, the program itself will exit.
The command exit gnuplot will immediately and unconditionally cause gnuplot to exit even if the input
stream is multiply nested. In this case any open output les may not be completed cleanly. Example of use:
bind "ctrl-x" "unset output; exit gnuplot"
See help for batch/interactive (p.20) for more details.
Fit
The t command can t a user-supplied expression to a set of data points (x,z) or (x,y,z), using an imple-
mentation of the nonlinear least-squares (NLLS) Marquardt-Levenberg algorithm. Any user-dened variable
occurring in the expression may serve as a t parameter, but the return type of the expression must be real.
Syntax:
fit {<ranges>} <expression>
’<datafile>’ {datafile-modifiers}
via ’<parameter file>’ | <var1>{,<var2>,...}
Ranges may be specied to temporarily limit the data which is to be tted; any out-of-range data points are
ignored. The syntax is
[{dummy_variable=}{<min>}{:<max>}],
analogous to plot; see plot ranges (p. 89).
<expression> is any valid gnuplot expression, although it is usual to use a previously user-dened function
of the form f(x) or f(x,y).
<datale> is treated as in the plot command. All the plot datale modiers (using, every,...) except
smooth and the deprecated thru are applicable to t. See plot datale (p. 78).
The default data formats for tting functions with a single independent variable, z=f(x), are z or x:z. That
is, if there is only a single column then it is the dependent variable and the line numbers is the independent
variable. If there are two columns, the rst is the independent variable and the second is the dependent
variable.
Those formats can be changed with the datale using qualier, for example to take the z value from a
dierent column or to calculate it from several columns. A third using qualier (a column number or an
expression), if present, is interpreted as the standard deviation of the corresponding z 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
Library software class:VB.NET PowerPoint: Merge and Split PowerPoint Document(s) with PPT
one of the split PPT document will contain slides/pages 1-4 &ltsummary> ''' Split a document into 2 sub Note: If you want to see more PDF processing functions in
www.rasteredge.com
Library software class:VB.NET PowerPoint: Extract & Collect PPT Slide(s) Using VB Sample
and you want to combine these extracted slides into a new of document 1 and some pages of document powerful & profession imaging controls, PDF document, image
www.rasteredge.com
64
gnuplot 4.6
one. Note that if you don’t specify a using option at all, no z standard deviations are read from the datale
even if it does have a third column, so you’ll always get unit weights.
To t 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 specied as a constant expression (see plot datale using (p.85)), e.g., using 1:2:3:(1).
The t function may have up to ve independent variables. There must be two more using qualiers than
there are independent variables, unless there is only one variable. The allowed formats, and the default
dummy variable names, are as follows:
z
x:z
x:z:s
x:y:z:s
x:y:t:z:s
x:y:t:u:z:s
x:y:t:u:v:z:s
The dummy variable names may be changed with ranges as noted above. The rst range corresponds to the
rst using spec, etc. A range may also be given for z (the dependent variable), but that name cannot be
changed.
Multiple datasets may be simultaneously t with functions of one independent variable by making y a
’pseudo-variable’, e.g., the dataline number, and tting as two independent variables. See t multi-branch
(p. 68).
The via qualier species which parameters are to be adjusted, either directly, or by referencing a parameter
le.
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
fit a0 + a1*x/(1 + a2*x/(1 + a3*x)) ’measured.dat’ via a0,a1,a2,a3
fit a*x + b*y ’surface.dat’ using 1:2:3:(1) via a,b
fit [*:*][yaks=*:*] a*x+b*yaks ’surface.dat’ u 1:2:3:(1) via a,b
fit a*x + b*y + c*t ’foo.dat’ using 1:2:3:4:(1) via a,b,c
h(x,y,t,u,v) = a*x + b*y + c*t + d*u + e*v
fit h(x,y,t,u,v) ’foo.dat’ using 1:2:3:4:5:6:(1) via a,b,c,d,e
After each iteration step, detailed information about the current state of the t is written to the display.
The same information about the initial and nal states is written to a log le, "t.log". This le is always
appended to, so as to not lose any previous t history; it should be deleted or renamed as desired. By using
the command set t logle, the name of the log le can be changed.
If gnuplot was built with this option, and you activated it using set t errorvariables, the error for each
tted 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.
If set t prescale is activated, t parameters are prescaled by their initial values. This helps the Marquardt-
Levenbergroutine converge more quickly andreliably in cases where parameters dier in size by several orders
of magnitude.
The t may be interrupted by pressing Ctrl-C (Ctrl-Break in wgnuplot). After the current iteration com-
pletes, you have the option to (1) stop the t and accept the current parameter values, (2) continue the
t, (3) execute a gnuplot command as specied by the environment variable FIT
SCRIPT. The default for
FIT
SCRIPT is replot, so if you had previously plotted both the data and the tting function in one graph,
you can display the current state of the t.
Library software class:VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
clip art or screenshot to PowerPoint document slide large amount of robust PPT slides/pages editing methods & profession imaging controls, PDF document, image
www.rasteredge.com
Library software class:VB.NET PowerPoint: Use PowerPoint SDK to Create, Load and Save PPT
guide for PPT document, we divide this page into three parts in VB.NET to create an empty PowerPoint file with or local file and get the exact PPT slides number;
www.rasteredge.com
gnuplot 4.6
65
Once t has nished, the update command may be used to store nal values in a le for subsequent use as
aparameter le. See update (p.175) for details.
Adjustable parameters
There are two ways that via can specify the parameters to be adjusted, either directly on the command line
or indirectly, by referencing a parameter le. The two use dierent means to set initial values.
Adjustable parameters can be specied by a comma-separated list of variable names after the via keyword.
Any variable that is not already dened is created with an initial value of 1.0. However, the t is more likely
to converge rapidly if the variables have been previously declared with more appropriate starting values.
In a parameter le, each parameter to be varied and a corresponding initial value are specied, one per line,
in the form
varname = value
Comments, marked by ’#’, and blank lines are permissible. The special form
varname = value
# FIXED
means that the variable is treated as a ’xed parameter’, initialized by the parameter le, but not adjustedby
t. For clarity, it may be useful to designate variables as xed parameters so that their values are reported
by t. The keyword # FIXED has to appear in exactly this form.
Short introduction
t is used to nd a set of parameters that ’best’ ts your data to your user-dened function. The t is
judged on the basis of the sum of the squared dierences or ’residuals’ (SSR) between the input data points
and the function values, evaluated at the same places. This quantity is often called ’chisquare’ (i.e., the
Greek letter chi, to the power of 2). The algorithm attempts to minimize SSR, or more precisely, WSSR, as
the residuals are ’weighted’ by the input data errors (or 1.0) before being squared; see t error
estimates
(p. 66) for details.
That’s why it is called ’least-squares tting’. Let’s look at an example to see what is meant by ’non-linear’,
but rst we had better go over some terms. Here it is convenient to use z as the dependent variable for
user-dened functions of either one independent variable, z=f(x), or two independent variables, z=f(x,y). A
parameter is a user-dened variable that t will adjust, i.e., an unknown quantity in the function declaration.
Linearity/non-linearity refers to the relationship of the dependent variable, z, to the parameters which t
is adjusting, not of z to the independent variables, x and/or y. (To be technical, the second fand higherg
derivatives of the tting function with respect to the parameters are zero for a linear least-squares problem).
For linear least-squares (LLS), the user-dened function will be a sum of simple functions, not involving
any parameters, each multiplied by one parameter. NLLS handles more complicated functions in which
parameters can be used in a large number of ways. An example that illustrates the dierence between linear
and nonlinear least-squares is the Fourier series. One member may be written as
z=a*sin(c*x) + b*cos(c*x).
If a and b are the unknown parameters and c is constant, then estimating values of the parameters is a linear
least-squares problem. However, if c is an unknown parameter, the problem is nonlinear.
In the linear case, parameter values can be determined by comparatively simple linear algebra, in one
direct step. However LLS is a special case which is also solved along with more general NLLS problems by
the iterative procedure that gnuplot uses. t attempts to nd the minimum by doing a search. Each step
(iteration) calculates WSSR with a new set of parameter values. The Marquardt-Levenberg algorithm selects
the parameter values for the next iteration. The process continues until a preset criterion is met, either (1)
the t has "converged" (the relative change in WSSR is less than FIT
LIMIT), or (2) it reaches a preset
iteration count limit, FIT
MAXITER (see t control variables (p.68)). The t may also be interrupted
and subsequently halted from the keyboard(see t (p.63)). The user variable FIT
CONVERGED contains
1if the previous t command terminated due to convergence; it contains 0 if the previous t terminated for
any other reason.
Library software class:VB.NET PowerPoint: Convert & Render PPT into PDF Document
Using this VB.NET PowerPoint to PDF converting demo code below, you can easily convert all slides of source PowerPoint document into a multi-page PDF file.
www.rasteredge.com
Library software class:VB.NET PowerPoint: Add Image to PowerPoint Document Slide/Page
can separate a multi-page PPT document into 2, 4 How to Sort and Reorder PPT Document Pages. provide powerful & profession imaging controls, PDF document, tiff
www.rasteredge.com
66
gnuplot 4.6
Often the function to be tted will be based on a model (or theory) that attempts to describe or predict
the behaviour of the data. Then t can be used to nd values for the free parameters of the model, to
determine how well the data ts the model, and to estimate an error range for each parameter. See t
error
estimates (p.66).
Alternatively, in curve-tting, functions are selected independent of a model (on the basis of experience as
to which are likely to describe the trend of the data with the desired resolution and a minimum number of
parameters*functions.) The t solution then provides an analytic representation of the curve.
However, if all you really want is a smooth curve through your data points, the smooth option to plot may
be what you’ve been looking for rather than t.
Error estimates
In t, the term "error" is used in two dierent contexts, data error estimates and parameter error estimates.
Data error estimates are used to calculate the relative weight of each data point when determining the
weighted sum of squared residuals, WSSR or chisquare. They can aect the parameter estimates, since they
determine how much in uence the deviation of each data point from the tted function has on the nal
values. Some of the t output information, including the parameter error estimates, is more meaningful if
accurate data error estimates have been provided.
The ’statistical overview’ describes some of the t output and gives some background for the ’practical
guidelines’.
Statistical overview
The theory of non-linear least-squares (NLLS) is generally described in terms of a normal distribution of
errors, that is, the input data is assumed to be a sample from a population having a given mean and a
Gaussian (normal) distribution about the mean with a given standard deviation. For a sample of suciently
large size, and knowing the population standard deviation, one can use the statistics of the chisquare dis-
tribution to describe a "goodness of t" by looking at the variable often called "chisquare". Here, it is
sucient to say that a reduced chisquare (chisquare/degrees of freedom, where degrees of freedom is the
number of datapoints less the number of parameters being tted) of 1.0 is an indication that the weighted
sum of squared deviations between the tted function and the data points is the same as that expected for
arandom sample from a population characterized by the function with the current value of the parameters
and the given standard deviations.
If the standarddeviation for the population is not constant, as in counting statistics where variance =counts,
then each point should be individually weighted when comparing the observed sum of deviations and the
expected sum of deviations.
At the conclusion t reports ’stdt’, the standard deviation of the t, which is the rms of the residuals, and
the variance of the residuals, also called ’reduced chisquare’ when the data points are weighted. The number
of degrees of freedom (the number of data points minus the number of tted parameters) is used in these
estimates because the parameters used in calculating the residuals of the datapoints were obtained from the
same data. These values are exported to the variables
FIT_NDF = Number of degrees of freedom
FIT_WSSR = Weighted sum-of-squares residual
FIT_STDFIT = sqrt(WSSR/NDF)
To estimate condence levels for the parameters, one can use the minimum chisquare obtained from the t
and chisquare statistics to determine the value of chisquare corresponding to the desired condence level,
but considerably more calculation is required to determine the combinations of parameters which produce
such values.
Rather than determine condence intervals, t reports parameter error estimates which are readily obtained
from the variance-covariance matrix after the nal iteration. By convention, these estimates are called
"standarderrors" or "asymptotic standarderrors", since they are calculated in the same way as the standard
errors (standard deviation of each parameter) of a linear least-squares problem, even though the statistical
conditions for designating the quantity calculated to be a standard deviation are not generally valid for the
Library software class:C# PowerPoint: C# Codes to Combine & Split PowerPoint Documents
pages of document 1 and some pages of document &ltsummary> /// Split a document into 2 sub to provide powerful & profession imaging controls, PDF document, tiff
www.rasteredge.com
Library software class:VB.NET PowerPoint: Read, Edit and Process PPTX File
How to convert PowerPoint to PDF, render PowerPoint to SVG to read, create, annotate, view, convert and watermark NET PowerPoint reading control SDK into VB.NET
www.rasteredge.com
gnuplot 4.6
67
NLLS problem. The asymptotic standard errors are generally over-optimistic and should not be used for
determining condence levels, but are useful for qualitative purposes.
The nal solution also produces a correlation matrix indicating correlation of parameters in the region of the
solution; The main diagonal elements, autocorrelation, are always 1; if all parameters were independent, the
o-diagonal elements would be nearly 0. Two variables which completely compensate each other would have
an o-diagonal element of unit magnitude, with a sign depending on whether the relation is proportional or
inversely proportional. The smaller the magnitudes of the o-diagonal elements, the closer the estimates of
the standard deviation of each parameter would be to the asymptotic standard error.
Practical guidelines
If you have a basis for assigning weights to eachdatapoint, doing so lets youmake use of additional knowledge
about your measurements, e.g., take into account that some points may be more reliable than others. That
may aect the nal values of the parameters.
Weighting the data provides a basis for interpreting the additional t output after the last iteration. Even
if you weight each point equally, estimating an average standard deviation rather than using a weight of 1
makes WSSR a dimensionless variable, as chisquare is by denition.
Each t iteration will display information which can be used to evaluate the progress of the t. (An ’*’
indicates that it did not nd a smaller WSSR and is trying again.) The ’sum of squares of residuals’, also
called ’chisquare’, is the WSSR between the data and your tted function; t has minimized that. At this
stage, with weighted data, chisquare is expected to approach the number of degrees of freedom (data points
minus parameters). The WSSR can be used to calculate the reduced chisquare (WSSR/ndf) or stdt, the
standard deviation of the t, sqrt(WSSR/ndf). Both of these are reported for the nal WSSR.
If the data are unweighted, stdt is the rms value of the deviation of the data from the tted function, in
user units.
If you supplied valid data errors, the number of data points is large enough, and the model is correct, the
reducedchisquare should be about unity. (For details, look up the ’chi-squareddistribution’ in your favourite
statistics reference.) If so, there are additional tests, beyond the scope of this overview, for determining how
well the model ts the data.
A reduced chisquare much larger than 1.0 may be due to incorrect data error estimates, data errors not
normally distributed, systematic measurement errors, ’outliers’, or an incorrect model function. A plot of
the residuals, e.g., plot ’datale’ using 1:($2-f($1)), may help to show any systematic trends. Plotting
both the data points and the function may help to suggest another model.
Similarly, a reduced chisquare less than 1.0 indicates WSSR is less than that expected for a random sample
from the function with normally distributed errors. The data error estimates may be too large, the statistical
assumptions may not bejustied, or the model function may be too general, tting  uctuations in a particular
sample in addition to the underlying trends. In the latter case, a simpler function may be more appropriate.
You’ll have to get used to both t and the kind of problems you apply it to before you can relate the
standard errors to some more practical estimates of parameter uncertainties or evaluate the signicance of
the correlation matrix.
Note that t, incommon with most NLLSimplementations, minimizes the weightedsum of squared distances
(y-f(x))**2. It does not provide any means to account for "errors" in the values of x, only in y. Also, any
"outliers" (data points outside the normal distribution of the model) will have an exaggerated eect on the
solution.
Control
There are a number of gnuplot variables that can be dened to aect t. Those which can be dened once
gnuplot is running are listed under ’control
variables’ while those dened before starting gnuplot are listed
under ’environment
variables’.
68
gnuplot 4.6
Control variables
The default epsilon limit (1e-5) may be changed by declaring a value for
FIT_LIMIT
When the sum of squared residuals changes between two iteration steps by a factor less than this number
(epsilon), the t is considered to have ’converged’.
The maximum number of iterations may be limited by declaring a value for
FIT_MAXITER
Avalue of 0 (or not dening it at all) means that there is no limit.
If youneedeven more control about the algorithm, and know the Marquardt-Levenberg algorithm well, there
are some more variables to in uence it. The startup value of lambda is normally calculated automatically
from the ML-matrix, but if you want to, you may provide your own one with
FIT_START_LAMBDA
Specifying FIT
START
LAMBDA as zero or less will re-enable the automatic selection. The variable
FIT_LAMBDA_FACTOR
gives the factor by which lambda is increased or decreased whenever the chi-squared target function in-
creased or decreased signicantly. Setting FIT
LAMBDA
FACTOR to zero re-enables the default factor of
10.0.
Other variables with the FIT
prex may be added to t, so it is safer not to use that prex for user-dened
variables.
The variables FIT
SKIP and FIT
INDEX were used by earlier releases of gnuplot with a ’t’ patch called
gnut and are no longer available. The datale every modier provides the functionality of FIT
SKIP.
FIT
INDEX was used for multi-branch tting, but multi-branch tting of one independent variable is now
done as a pseudo-3D t in which the second independent variable and using are used to specify the branch.
See t multi-branch (p. 68).
Environment variables
The environment variables must be dened before gnuplot is executed; how to do so depends on your
operating system.
FIT_LOG
changes the name (and/or path) of the le to which the t log will be written from the default of "t.log"
in the working directory. The default value can be overwritten using the command set t logle.
FIT_SCRIPT
species a command that may be executed after an user interrupt. The default is replot, but a plot or
load command may be useful to display a plot customized to highlight the progress of the t.
Multi-branch
In multi-branch tting, multiple data sets can be simultaneously t with functions of one independent
variable having common parameters by minimizing the total WSSR. The function and parameters (branch)
for each data set are selected by using a ’pseudo-variable’, e.g., either the dataline number (a ’column’ index
of -1) or the datale index (-2), as the second independent variable.
Example: Given two exponential decays of the form, z=f(x), each describing a dierent data set but having
acommon decay time, estimate the values of the parameters. If the datale has the format x:z:s, then
f(x,y) = (y==0) ? a*exp(-x/tau) : b*exp(-x/tau)
fit f(x,y) ’datafile’ using 1:-2:2:3 via a, b, tau
For a more complicated example, see the le "hexa.fnc" used by the "t.dem" demo.
Appropriate weighting may be required since unit weights may cause one branch to predominate if there is
adierence in the scale of the dependent variable. Fitting each branch separately, using the multi-branch
solution as initial values, may give an indication as to the relative eect of each branch on the joint solution.
gnuplot 4.6
69
Starting values
Nonlinear tting is not guaranteed to converge to the global optimum (the solution with the smallest sum of
squared residuals, SSR), and can get stuck at a local minimum. The routine has no way to determine that;
it is up to you to judge whether this has happened.
t may, and often will get "lost" if started far from a solution, where SSR is large and changing slowly as
the parameters are varied, or it may reach a numerically unstable region (e.g., too large a number causing
a oating point over ow) which results in an "undened value" message or gnuplot halting.
To improve the chances of nding the global optimum, you should set the starting values at least roughly in
the vicinity of the solution, e.g., within anorder of magnitude, if possible. The closer your starting values are
to the solution, the less chance of stopping at another minimum. One way to nd starting values is to plot
data and the tting function on the same graph and change parameter values and replot until reasonable
similarity is reached. The same plot is also useful to check whether the t stopped at a minimum with a
poor t.
Of course, a reasonably good t is not proof there is not a "better" t (in either a statistical sense, charac-
terized by an improved goodness-of-t criterion, or a physical sense, with a solution more consistent with the
model.) Depending on the problem, it may be desirable to t with various sets of starting values, covering
areasonable range for each parameter.
Tips
Here are some tips to keep in mind to get the most out of t. They’re not very organized, so you’ll have to
read them several times until their essence has sunk in.
The two forms of the via argument to t serve two largely distinct purposes. The via "le" form is best
used for (possibly unattended) batch operation, where you just supply the startup values in a le and can
later use update to copy the results back into another (or the same) parameter le.
The via var1, var2, ... form is best used interactively, where the command history mechanism may be
used to edit the list of parameters to be tted or to supply new startup values for the next try. This is
particularly useful for hard problems, where a direct t to all parameters at once won’t work without good
starting values. To nd such, you can iterate several times, tting only some of the parameters, until the
values are close enough to the goal that the nal t to all parameters at once will work.
Make sure that there is no mutual dependency among parameters of the function you are tting. For
example, don’t try to t a*exp(x+b), because a*exp(x+b)=a*exp(b)*exp(x). Instead, t either a*exp(x) or
exp(x+b).
Atechnical issue: The larger the ratio of the largest and the smallest absolute parameter values, the slower
the t will converge. If the ratio is close to or above the inverse of the machine  oating point precision, it
may take next to forever to converge, or refuse to converge at all. You will either have to adapt your function
to avoid this, e.g., replace ’parameter’ by ’1e9*parameter’ in the function denition, and divide the starting
value by 1e9 or use set t prescale which does this internally according to the parameter starting values.
If you can write your function as a linear combination of simple functions weighted by the parameters to be
tted, by all means do so. That helps a lot, because the problem is no longer nonlinear and should converge
with only a small number of iterations, perhaps just one.
Some prescriptions for analysing data, given inpractical experimentation courses, may have you rst t some
functions to your data, perhaps in a multi-step process of accounting for several aspects of the underlying
theory one by one, and then extract the information you really wanted from the tting parameters of those
functions. With t, this may often be done in one step by writing the model function directly in terms of
the desired parameters. Transforming data can also quite often be avoided, though sometimes at the cost of
amore dicult t problem. If you think this contradicts the previous paragraph about simplifying the t
function, you are correct.
A "singular matrix" message indicates that this implementation of the Marquardt-Levenberg algorithm
can’t calculate parameter values for the next iteration. Try dierent starting values, writing the function in
another form, or a simpler function.
Finally, a nice quote from the manual of another tting package (fudgit), that kind of summarizes all these
70
gnuplot 4.6
issues: "Nonlinear tting is an art!"
Help
The help command displays built-in help. To specify information on a particular topic use the syntax:
help {<topic>}
If <topic> is not specied, a short message is printed about gnuplot. After help for the requested topic is
given, a menu of subtopics is given; help for a subtopic may be requested by typing its name, extending the
help request. After that subtopic has been printed, the request may be extended again or you may go back
one level to the previous topic. Eventually, the gnuplot command line will return.
If a question mark (?) is given as the topic, the list of topics currently available is printed on the screen.
History
history command lists or saves previous entries in the history of the command line editing, or executes an
entry.
Here you nd ’usage by examples’:
history
# show the complete history
history 5
# show last 5 entries in the history
history quiet 5
# show last 5 entries without entry numbers
history "hist.gp"
# write the complete history to file hist.gp
history "hist.gp" append # append the complete history to file hist.gp
history 10 "hist.gp" # write last 10 commands to file hist.gp
history 10 "|head -5 >>diary.gp" # write 5 history commands using pipe
history ?load
# show all history entries starting with "load"
history ?"set c"
# like above, several words enclosed in quotes
hi !reread
# execute last entry starting with "reread"
hist !"set xr"
# like above, several words enclosed in quotes
hi !hi
# guess yourself :-))
On systems which support a popen function (Unix), the output of history can be piped through an external
program by starting the le name with a ’j’, as one of the above examples demonstrates.
If
New syntax:
if (<condition>) { <command>; <command>
<commands>
<commands>
} else {
<commands>
}
Old syntax:
if (<condition>) <command-line> [; else if (<condition>) ...; else ...]
This version of gnuplot supports block-structured if/else statements. If the keyword if or else is immediately
followed by an opening "f", then conditional execution applies to all statements, possibly on multiple input
lines, until a matching "g" terminates the block. If commands may be nested.
The old single-line if/else syntax is still supported, but can not be mixed with the new block-structured
syntax. See if-old (p.71).
Documents you may be interested
Documents you may be interested