Phys 124 - Spring
Gnuplot curve fitting

Gnuplot has a curve fitting feature which is very useful for fitting data to a function of a general form.

Detailed information is available in this link. A simple example is given below:

The file test.data contains the folowing data:


1 .9
2 3.5
3 9.1
4 15
5 26
7 50
8 63
9 80
10 105

It is apparent that the second column is square of the first column, with some arbitrary small values added.

Fit is accomplished by entering the following two commands. The first command defines the form of the function to be fitted, with parameters a, b, and c. The second command starts the fitting procedure.


gnuplot> f(x) = a*x**2 + b*x + c
gnuplot> fit f(x) 'test.data' via a,b,c


 Iteration 0
 WSSR        : 398.87            delta(WSSR)/WSSR   : 0
 delta(WSSR) : 0                 limit for stopping : 1e-05
 lambda	  : 30.0586

initial set of free parameter values

a               = 1
b               = 1
c               = 1
/

 Iteration 1
 WSSR        : 81.2488           delta(WSSR)/WSSR   : -3.90924
 delta(WSSR) : -317.621          limit for stopping : 1e-05
 lambda	  : 3.00586

resultant parameter values

a               = 0.895945
b               = 0.948368
c               = 0.982844
/

 Iteration 2
 WSSR        : 24.3883           delta(WSSR)/WSSR   : -2.33146
 delta(WSSR) : -56.8604          limit for stopping : 1e-05
 lambda	  : 0.300586

resultant parameter values

a               = 1.0243
b               = -0.133726
c               = 0.579628
/

 Iteration 3
 WSSR        : 19.5484           delta(WSSR)/WSSR   : -0.247585
 delta(WSSR) : -4.83989          limit for stopping : 1e-05
 lambda	  : 0.0300586

resultant parameter values

a               = 1.09005
b               = -0.735675
c               = 0.899112
/

 Iteration 4
 WSSR        : 19.5445           delta(WSSR)/WSSR   : -0.00020073
 delta(WSSR) : -0.00392317       limit for stopping : 1e-05
 lambda	  : 0.00300586

resultant parameter values

a               = 1.09273
b               = -0.767855
c               = 0.973634
/

 Iteration 5
 WSSR        : 19.5445           delta(WSSR)/WSSR   : -4.72269e-10
 delta(WSSR) : -9.23027e-09      limit for stopping : 1e-05
 lambda	  : 0.000300586

resultant parameter values

a               = 1.09273
b               = -0.767902
c               = 0.97375

After 5 iterations the fit converged.
final sum of squares of residuals : 19.5445
rel. change during last iteration : -4.72269e-10

degrees of freedom    (FIT_NDF)                        : 6
rms of residuals      (FIT_STDFIT) = sqrt(WSSR/ndf)    : 1.80483
variance of residuals (reduced chisquare) = WSSR/ndf   : 3.25742

Final set of parameters            Asymptotic Standard Error
=======================            ==========================

a               = 1.09273          +/- 0.08446      (7.729%)
b               = -0.767902        +/- 0.9546       (124.3%)
c               = 0.97375          +/- 2.192        (225.1%)


correlation matrix of the fit parameters:

               a      b      c      
a               1.000 
b              -0.978  1.000 
c               0.825 -0.910  1.000 

The fitting program generates output which shows how the final set of parameters are determined.

The command below is used to generate a plot which contains the original data points as well as the fitted curve:

p "test.data", 1.09273*x*x -0.767902*x + 0.97375