Add lab session 5

Handed in on 24 Nov 2020.

Change-Id: I2264c4fa515b1d8140a328292f950b8ffb481ef8
diff --git a/p5/graphs/graph.gnu b/p5/graphs/graph.gnu
new file mode 100755
index 0000000..1e54a45
--- /dev/null
+++ b/p5/graphs/graph.gnu
@@ -0,0 +1,83 @@
+#!/usr/bin/env gnuplot -c
+# == DEFINICIONS ==
+datafile = ARG1 # Nom del fitxer de dades que es vol usar
+datafilelow = ARG2
+datafilehigh = ARG3
+material = ARG4 # Nom del material del bloc que s'introdueix
+outputfile = ARG5 # Nom de la imatge resultant (sense extensió)
+error_sist_b = 0.001 # Error sistemàtic en l'eix y
+
+debugmode = 0 # 0: off, 1: on
+
+print('== '.datafile.' ==')
+
+# == CONFIGURACIÓ DE L'OUTPUT PEL LATEX ==
+set terminal cairolatex size 7.4cm, 6cm
+set output outputfile.'.tex'
+
+# == CONFIGURACIÓ DEL PLOT ==
+set xlabel "$t \\, (\\si{\\second})$"
+set ylabel "$m \\, (\\si{\\gram})$"
+
+set autoscale yfixmin
+set autoscale xfixmax
+
+# Opcions per la llegenda:
+set key above
+set key spacing 1.5
+
+# == CONFIGURACIÓ DEL FIT ==
+set fit quiet
+
+f(x) = a*x + b
+g(x) = c*x + d
+
+fit f(x) datafilelow u 1:(column(2)/1000) via a, b
+fit g(x) datafilehigh u 1:(column(2)/1000) via c, d
+
+if (debugmode) {
+    stats datafilelow u 1:(column(2)/1000) name 'LOW' nooutput
+
+    print(sprintf('a = %.4f', a))
+    print(sprintf('b = %.4f', b))
+    print(sprintf('R = %.4f', LOW_correlation))
+
+    stats datafilehigh u 1:(column(2)/1000) name 'HIGH' nooutput
+
+    print(sprintf('c = %.4f', c))
+    print(sprintf('d = %.4f', d))
+    print(sprintf('R = %.4f', HIGH_correlation))
+}
+
+stats datafile u 1:(column(2)/1000) name 'STATS' nooutput
+
+print(sprintf('min = (%.4f, %.4f)', STATS_pos_min_y, STATS_min_y))
+print(sprintf('max = (%.4f, %.4f)', STATS_pos_max_y, STATS_max_y))
+
+M = STATS_max_y - f((STATS_pos_min_y + STATS_pos_max_y)/2)
+print(sprintf('M = %.4f', M))
+
+deltam = STATS_max_y - g((STATS_pos_min_y + STATS_pos_max_y)/2)
+print(sprintf('delta m = %.4f', deltam))
+
+set arrow 1 from ((STATS_pos_min_y + STATS_pos_max_y)/2),STATS_max_y to \
+    ((STATS_pos_min_y + STATS_pos_max_y)/2),g(STATS_pos_min_y)
+set arrow 1 nohead
+
+set label 1 "$\\Delta m$" at \
+    ((STATS_pos_min_y + STATS_pos_max_y)/2),((STATS_max_y + g(STATS_pos_min_y))/2) \
+    right offset -0.5
+
+plot datafile u 1:(column(2)/1000) w p pt 7 ps 0.4 t "Dades experimentals", \
+    f(x) t "1r estat estable", g(x) t "2n estat estable"
+
+# == CONFIGURACIÓ DE L'OUTPUT PER SVG ==
+# Això ho uso per generar també una imatge de previsualització que puc carregar
+# a l'ordinador per veure més o menys com a sortit el plot sense haver
+# d'inserir-ho al LaTeX per veure-ho.
+set terminal svg dashed size 600, 600 font "Computer Modern,Tinos,Helvetica,15"
+set output outputfile.'.svg'
+
+replot
+
+print('')