Function fitting

gd supports fitting of functions to 1-dimensional data.
Data to be fitted are marked by an extra F in the H:-lines of the input files:

H: x       y,f      d
   ...     ...     ...
   x-data  y-data  y-errors

Note that by default the data are fitted as presented,
that is, for log plots the log10()-values of the data are fitted.
For example a polynomial fit in a plot with logarithmic x axis is:

   y = p1 + p2 * log10(x) + p3 * (log10(x))**2 ...

This behaviour can be changed with the GMODE command:

   GMODE/FIT(DATA)   fit the original data
   GMODE/FIT(REPR)   fit the data as presented (default)

The y-error bars of the input data are taken into account as weights
for chi-square evaluation.
Unsymmetrical vertical error bars are averaged and symmetrized.
Wherever possible you should provide error values with the y-data.
The input errors will affect the errors of fit parameters.
If no error values are given they are estimated from the chi-square value
so that a chi-square of 1 would result.

Fitting can be accomplished in two different ways:

1. Automatic polynomial fits

This is a fast way of fitting because it is a straightforward  procedure
which can be performed analytically. No extra user intervention is required.
You specify the order of the polynomial with the display parameter POLYNOMIAL().
On display, the data together with the fitted curve and, with the optional
display parameter CONFIDENCE(), two additional
curves outlining the specified confidence interval are drawn.
After display, the polynomial coefficients and their errors as well as
additional statistical information (chi-square etc.) are listed in the shell
window which runs gd.
More than one data block and more than one column per data block can be processed.
A typical command sequence would look like:

   GREAD                 read the data
   GDISP / POLY(3) CONF(0.683)   display data, fit a 3rd order polynomial, draw confidence limit
   GCOPY p65gps                  copy the picture to a printer of your choice

2. Separate fit package

Nonlinear and user-specified functions, function stacking and sophisticated fit parameter
handling require a dedicated fit package, derived
from GSIs MVS-based listmode processing environment SATAN.
In contrast to the automatic fitting described above you will need
to control the different steps of function fitting by a few dedicated
commands (starting with the letter F). The fitting procedure
is restricted to a single y-column in the input file.
Note that you need to switch from automatic polynomial fitting to "controlled" fitting
by specifying a polynomial degree < 0. A typical command sequence looks like:

   GREAD      read the data
   GDISP / POLY(-1)   display data, suppress automatic fitting
   FPEAKS 2           choose a fit function (2 gaussian peaks)
   FIT                fit the data
   FRES/GRAPHIC       list results (on the plot)
   FDISP/CONF(0.683)  display final fit curve, with confidence limits
   GCOPY p65gps       copy the picture to a printer of your choice

For convenience, a shell script gdfitfct is provided
to prepare external user functions written in C, for example

   gdfitfct myfct

compiles and links the file myfct.c so it can be loaded dynamically
with the command 

   FMY myfct

See the description of the fit package for more details.