diff --git a/p9/graphs/estacionari.gnu b/p9/graphs/estacionari.gnu
new file mode 100755
index 0000000..bb16ae2
--- /dev/null
+++ b/p9/graphs/estacionari.gnu
@@ -0,0 +1,70 @@
+#!/usr/bin/env gnuplot -c
+outputfile="../output/estacionari"
+datafolder="../data/estacionari/"
+
+tamb=20 #Celsius
+error_sist_b=1
+
+# == CONFIGURACIÓ DE L'OUTPUT PEL LATEX ==
+set terminal cairolatex size 11cm, 8cm
+set output outputfile.'.tex'
+
+# == CONFIGURACIÓ DEL PLOT ==
+set xlabel '$x \, (\si{\centi\meter})$'
+set ylabel '$\log((T - T_0) \, \si{\per\celsius})$'
+
+# Opcions per la llegenda:
+set key above
+set key spacing 1.5
+
+# == FIT ==
+set fit quiet
+
+# Funció per obtenir els dígits significatius d'una expressió
+f_sd(n, i) = (int(n) == 0 ? f_sd(n*10, i+1) : (int(n) == 1 ? i+1 : i))
+significant_digits(n) = f_sd(n - 10*int(n/10), 0)
+
+significant_digits_r(n) = (n == 1 ? 0 : significant_digits(1 - n))
+
+f(x) = a*x + b
+fit f(x) datafolder.'coure_fit.dat' u 1:(log(column(3) - tamb)) via a, b
+stats datafolder.'coure_fit.dat' u 1:2 name "STATSC" nooutput
+error_a = STATSC_slope_err
+sd_error_a = significant_digits(error_a)
+error_b = sqrt(STATSC_slope_err + error_sist_b)
+sd_error_b = significant_digits(error_b)
+rc = STATSC_correlation
+sd_rc = significant_digits_r(rc)
+title_f(a, b, rc) = sprintf('$\log (\Theta_C(x)) = %.'.sd_error_a.'f x + %.'.sd_error_b.'f$, $r = %.'.sd_rc.'f$', a, b, rc);
+
+g(x) = c*x + d
+fit g(x) datafolder.'ferro_fit.dat' u 1:(log(column(3) - tamb)) via c, d
+stats datafolder.'ferro_fit.dat' u 1:2 name "STATSF" nooutput
+error_c = STATSF_slope_err
+sd_error_c = significant_digits(error_c)
+error_d = sqrt(STATSF_slope_err + error_sist_b)
+sd_error_d = significant_digits(error_d)
+rf = STATSF_correlation
+sd_rf = significant_digits_r(rf)
+title_g(c, d, rf) = sprintf('$\log (\Theta_F(x)) = %.'.sd_error_c.'f x + %.'.sd_error_d.'f$, $r = %.'.sd_rf.'f$', c, d, rf);
+
+print(sprintf('delta(a) = %.'.sd_error_a.'f, sd=%.0f', error_a, sd_error_a))
+print(sprintf('delta(b) = %.'.sd_error_b.'f, sd=%.0f', error_b, sd_error_b))
+print(sprintf('delta(c) = %.'.sd_error_c.'f, sd=%.0f', error_c, sd_error_c))
+print(sprintf('delta(d) = %.'.sd_error_d.'f, sd=%.0f', error_d, sd_error_d))
+print(sprintf('rc = %.'.sd_rc.'f, sd=%.0f', rc, sd_rc))
+print(sprintf('rf = %.'.sd_rf.'f, sd=%.0f', rf, sd_rf))
+
+plot datafolder.'coure.dat' u 1:(log(column(3) - tamb)):(column(4)/(column(3) - tamb)) w yerr t 'Coure', \
+     datafolder.'ferro.dat' u 1:(log(column(3) - tamb)):(column(4)/(column(3) - tamb)) w yerr t 'Ferro', \
+     f(x) t title_f(a, b, rc), \
+     g(x) t title_g(c, d, rf)
+
+# == 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
