Ho bisogno di scambiare un paio di messaggi con voi per comprendere meglio la natura di un problema "bizzarro".
Sto facendo un data fit, molto semplice, per trovare la retta che meglio approssima un insieme di dati sperimentali.
Un fit lineare insomma.
I dati sperimentali sono disposti con precisione su una retta, come mostra il seguente grafico
Codice: Seleziona tutto
plot 'logfree.dat' w l, "logfree_TempiLunghi.dat" w l lc black
Il file logfree.dat contiene tutti i dati, non solo quelli disegnati in verde, ma anche quelli disegnati in nero.
il file logfree_TempiLunghi.dat contiene solo i dati disegnati in nero.
Ora, io dovrei fare il fit solamente sulla parte verde del grafico, ossia per tempi elevati.
Per fare una prova, dato che i dati sono praticamente tutti su di una retta, ho fatto due data fit con gnuplot.
... con gnuplot ottengo due risultati molto diversi tra loro!!!
Se faccio il fit lineare con tutto il dataset (tratto rosso e tratto nero), ottengo un risultato che *dovrebbe* essere quello corretto, infatti:
Codice: Seleziona tutto
gnuplot> f(x) = A - B*x; fit f(x) "logfree.dat" via A, B
...
...
Final set of parameters Asymptotic Standard Error
======================= ==========================
A = 11.984 +/- 1.155e-07 (9.639e-07%)
B = 1.54444e-06 +/- 1e-14 (6.477e-07%)
Codice: Seleziona tutto
Final set of parameters Asymptotic Standard Error
======================= ==========================
A = 1 +/- 0.02197 (2.197%)
B = 9.21029e-07 +/- 1.251e-09 (0.1358%)
correlation matrix of the fit parameters:
A B
A 1.000
B 0.997 1.000 Codice: Seleziona tutto
>>> from __future__ import print_function
>>> import numpy as np
>>> dataX, dataY = np.loadtxt('logfree.dat', unpack = True)
>>> parametri = np.polyfit(dataX, dataY, 1)
>>> print(*parametri)
-1.54444381545e-06 11.9839684013Codice: Seleziona tutto
>>> dataX, dataY = np.loadtxt('logfree_TempiLunghi.dat', unpack = True)
>>> parametri = np.polyfit(dataX, dataY, 1)
>>> print(*parametri)
-1.54444319827e-06 11.9839601694