# coding: utf-8 from __future__ import print_function from lab import * import matplotlib.pyplot as plt import numpy as np ## ## Part 1 ## equivalent mass mt = 353.36 mi = np.array([592.67, 576.99, 512.66, 479.75, 498.35]) mf = np.array([682.53, 678.08, 634.87, 626.51, 626.81]) T1 = np.array([20.2, 35.1, 21.1, 38.9, 22.5]) T2 = np.array([83.1, 87.0, 89.9, 87.2, 95.0]) Te = np.array([38.0, 51.0, 48.9, 61.9, 53.9]) m1 = mi-mt m2 = mf-mi me = m2*(T2-Te)/(Te-T1) - m1 me = me[2:].mean() print('m_e: ', me) ## ## Part 2 ## specific heat mt = 359.67 mi = np.array([713.98, 717.14, 693.60]) ms = np.array([130.02, 121.85, 38.95]) m1 = mi-mt Ts = 100 T1 = np.array([21.2, 23.2, 21.2]) Te = np.array([23.6, 25.3, 23.0]) cs = (Te-T1)*(m1+me)/((Ts-Te)*ms) print(''' rame: {:.1f} ottone: {:.1f} alluminio: {:.1f} '''.format(*cs*4186)) ## ## Part 3 ## Joule constant mt = 354.71 m = 760.53 - mt V = 14 I = 3 T = sample(22.0, 23.4, 24.8, 26.4, 27.6, 29.0, 30.4) t = sample(0, 1, 2, 3, 4, 5, 6)*60 # linear interpolation x = np.linspace(0,370) a,b = linear(t, T, 0.1) f = lambda x: a.n+b.n*x # plot T - t plt.xlabel('tempo (s)') plt.ylabel('temperatura (s)') plt.xlim(0,400) plt.scatter(t, T, color='#135964') plt.plot(t, f(t), '#317883') plt.show() # χ² test alpha = chi_squared_fit(t, T, f, 0.1) print('χ²: α={:.3f}, α>ε: {}'.format(alpha, alpha>epsilon)) # find J from b J = I*V/(b*(m+me)) print('J={}'.format(J)) ## ## Part 4 ## latent heat mt = 355.12 # calorimeter tare mi = 386.61 # calorimeter + ice mf = 561.62 # calorimeter + ice + water m1 = mf-mi # water m2 = mi-mt # ice t1 = 91.1 t2 = -17 te = 66.8 ca = 4.2045 # water specific heat at 91°C cg = 2.0461 # ice specific heat at -17°C l = ca*(m1+me)/m2*(t1-te) + cg*t2 - ca*te print(l)