Tutorial de GNUPlot

5
An´ alisis gr´afico y ajuste de curvas con GNUPlot Marcelo Videa 26 de febrero de 2013 Para el an´ alisis de los datos obtenidos en un experimento cin´ etico recurriremos al an´ alisis gr´ afico, tanto para establecer una hip´ otesis sobre el esquema de la reacci´on como para extraer los par´ ametros cin´ eticos que la describen. Para este prop´osito GNUPlot es un programa es un programa graficador de distribuci´ on libre ypuede obtenerse de la p´agina www.gnuplot.info. Graficando datos Como ejemplo analizaremos los datos de tres experimentos de cin´ etica qu´ ımica en los que se han utilizado tres concentraciones iniciales del reactivo A. Estos datos se encuentrar en el archivo iniciales.txt. El contenido de este archivo se reproduce a continuaci´ on para generar el archivo .txt correspondiente. #tiempo/s A/mM 0 0.15 0.10 0.06 0.5 0.139875 0.09325 * 1 0.130433438 0.086955625 0.052173375 2 0.112824923 0.075216616 0.045129969 3 0.097593559 * 0.039037424 4 0.084418428 0.056278952 0.033767371 5 0.073021941 0.048681294 0.029208776 6 0.063163979 0.042109319 0.025265591 8 0.046109704 0.030739803 0.018443882 10 * 0.022440056 0.013464034 12 0.024571861 0.016381241 0.009828745 14 0.017937459 0.011958306 0.007174984 16 0.013094345 0.008729563 *

Transcript of Tutorial de GNUPlot

Page 1: Tutorial de GNUPlot

Analisis grafico y ajuste de curvas con GNUPlot

Marcelo Videa

26 de febrero de 2013

Para el analisis de los datos obtenidos en un experimento cinetico recurriremos al analisis

grafico, tanto para establecer una hipotesis sobre el esquema de la reaccion como para extraer

los parametros cineticos que la describen. Para este proposito GNUPlot es un programa es un

programa graficador de distribucion libre y puede obtenerse de la pagina www.gnuplot.info.

Graficando datos

Como ejemplo analizaremos los datos de tres experimentos de cinetica quımica en los que

se han utilizado tres concentraciones iniciales del reactivo A. Estos datos se encuentrar en el

archivo iniciales.txt. El contenido de este archivo se reproduce a continuacion para generar el

archivo .txt correspondiente.

#tiempo/s A/mM

0 0.15 0.10 0.06

0.5 0.139875 0.09325 *

1 0.130433438 0.086955625 0.052173375

2 0.112824923 0.075216616 0.045129969

3 0.097593559 * 0.039037424

4 0.084418428 0.056278952 0.033767371

5 0.073021941 0.048681294 0.029208776

6 0.063163979 0.042109319 0.025265591

8 0.046109704 0.030739803 0.018443882

10 * 0.022440056 0.013464034

12 0.024571861 0.016381241 0.009828745

14 0.017937459 0.011958306 0.007174984

16 0.013094345 0.008729563 *

Page 2: Tutorial de GNUPlot

En GNUPlot el sımbolo # se utiliza para introducir comentarios. En este caso, el tıtulo

y unidades de las columnas. Adicionalmente, si los datos comparten valores de el eje de

ordenadas, aquellos valores faltantes en los datos de las abscisas deben llevar el sımbolo *.

Las columnas de este archivo se enumeran empezando por 1. De esta manera, las columnas

2, 3 y 4 contienen los datos de concentracion de A en los tres experimentos.

Antes de graficar los datos, es conveniente establecer la terminal que se utilizara. Esto

es, como se representaran los datos. La terminal windows es una de las mas flexibles. Para

seleccionarla se utiliza el comando set terminal como se muestra a continuacion:

gnuplot> set terminal windows enhanced "Arial, 14"

Luego, es conveniente seleccionar el directorio donde se encuentran los archivos con los datos

que se graficaran. Esto se logra seleccionando Change Directory en la opcion File del menu.

o escribiendo el comando cd seguido de la ruta del directorio entre comillas:

gnuplot> cd ‘C:\cursos\cinetica’

Para graficar los resultados del primer experimento escribimos

gnuplot> plot ‘iniciales.txt’ using 1:2 title ‘[A]_0=0.15 mM’

La ventana gnuplot graph se abre de manera independiente para mostrar el resultado del

comando anterior. La escala de los ejes x y y se ajustan automaticamente al rango de los

2

Page 3: Tutorial de GNUPlot

datos. Para anadir los tıtulos de los ejes se usan los comandos X Label y Y Label en la opcion

del menu Axes.

La grafica que obtenemos claramente muestra una curvatura en sus datos, lo que nos

permite descartar una cinetica de orden 0.

Para linearizar los datos podemos regraficar los datos operando sobre la columna 2. Pa-

ra inspeccionar para orden 1 necesitamos el logaritmo de las concentraciones. Escribimos

entonces:

gnuplot> plot ‘iniciales.txt’ using 1:(log($2)) title ‘ln [A]’

para obtener

3

Page 4: Tutorial de GNUPlot

que claramente confirma que la reaccion es de orden 1.

Ajuste de datos

A continuacion, haremos el ajuste no-lineal de los datos para obtener el parametro cinetico

k. Como sabemos que la reaccion es de orden 1, entonces el modelo que debe describir los

datos es

[A]t = [A]0e−kt

Entonces debemos escribir una funcion correspondiente a este modelo

gnuplot> f(x) = a0*exp(-k*x)

donde a0 y k son las variables de ajuste y debemos asignarles valores iniciales:

gnuplot> a0 = 0.15

gnuplot> k = 0.10

y luego escribir el comando

gnuplot> fit f(x) ‘iniciales.txt’ using 1:2 via a0,k

lo que iniciara una iteracion de ajuste de los valores de las variables hasta que se obtenga la

mejor concordancia posible con los datos experimentales en funcion de la minimizacion de

los cuadrados de los residuales. Obtendremos el siguiente reporte del ajuste:

After 7 iterations the fit converged.

final sum of squares of residuals : 7.75805e-006

rel. change during last iteration : -6.20433e-008

degrees of freedom (FIT_NDF) : 10

rms of residuals (FIT_STDFIT) = sqrt(WSSR/ndf) : 0.000880798

variance of residuals (reduced chisquare) = WSSR/ndf : 7.75805e-007

Final set of parameters Asymptotic Standard Error

======================= ==========================

a0 = 0.150982 +/- 0.0005422 (0.3591%)

k = 0.147428 +/- 0.001205 (0.8177%)

4

Page 5: Tutorial de GNUPlot

de donde obtenemos que el valor de la constante de velocidad de reaccion es k = 0.1474 ±0.0012 s−1.

Para inspeccionar el ajuste podemos graficar la funcion f(x) resultante sobre los datos.

Para esto usamos el comando

gnuplot> replot f(x)

para obtener

5