import numpy as np import matplotlib.pyplot as plt #Leo el archivo txt file="photogate15.txt" Misdatos = np.loadtxt(file, delimiter="\t",skiprows=4) #Datos ordenados col1 : x, col 2: y1 x = Misdatos[:,0] y1 = Misdatos[:,1] plt.ion() plt.close("all") #Grafico los datos del archivo plt.figure(1) plt.plot(x,y1,'.-') #plt.axis([15,25,0,5]); plt.grid('on'); plt.xlabel('t [seg]'); plt.ylabel('Señal Photogate [u.a.]'); plt.show() #extraigo los datos donde se produce el salto de la señal del fotosensor #grafico los datos extraidos der = np.diff(y1) plt.plot(x[1:],der,'b-'); plt.plot(x[1:],der,'b.'); #plt.axis([15,25,-5,5]) plt.show() idx = np.where(der>2) xm = x[idx] #calculo el tiempo medio de cada intervalo xmedio=[] n=len(xm) i=0 xi=0 while i < (n-1): xi=(xm[i]+xm[i+1])/2 xmedio.append(xi) i=i+1 #calculo la velocidad de cada obturación dt=np.diff(xm) #tamaño del obturador: d en cm para clacular la velocidad d=1 vel=d/dt #calculo la incertidumbre del tiempo xerror=2*(x[1]-x[0]) xmedioerror=np.ones(n-1) xmedioerror=xerror*xmedioerror velerror=[] velerror=(0.002/d*vel+xerror/dt*vel) #guardo los datos en un archivo txt dtvst=np.column_stack([xmedio,dt,xmedioerror]) #print(vvst) np.savetxt('tvsdt.dat', dtvst, header="tiempo(s)/intervalo temporal(s)/incert.tiempo", fmt='%.4e') #grafico t vs velocidad del obturador plt.figure(2) plt.errorbar(xmedio,vel,xerr=xmedioerror,yerr=velerror,fmt="o") #plt.axis([15,60,0,5]); plt.grid('on'); plt.xlabel('tmedio x franja [seg]'); plt.ylabel('velocidad [cm/s]'); plt.show()