Untitled
unknown
python
2 years ago
5.1 kB
3
Indexable
import numpy as np import pandas as pd import math import matplotlib.pyplot as plt d=[[1,83.5,(30/36.6)], [2,76,(30/45.5)], [3,68,(30/60)], [4,59,(30/88.2)], [5,47,(30/160.1)], [6,34.5,(30/340.1)]] datos = pd.DataFrame(d, columns = ['Dato','H (mm)','Q (LPS)']) #print(datos) datos.keys() V=[30.0,30.0,30.0,30.0,30.0,30.0] Y=datos['Q (LPS)']*1000 #paso a cm^3 X=datos['H (mm)']/10 #paso a cm X=X**(5/2) #Ajuste de la recta XY=X*Y X2=X**2 A=np.sum(XY)/np.sum(X2) A=np.round(A,5) AX=A*X #print(A) leyenda=u"Función Ajustada: Y =" + str (round(A,5)) + "X" print(leyenda) #plt.figure(figsize=(8,5)) #plt.plot(X,Y,"ro", label = "Datos experimentales") #plt.plot(X,AX,color="b", ls="--", label = leyenda) #plt.xlabel(u"H^(5/2)-[(cm)^(5/2)]", fontsize=14) #plt.ylabel(u"Q-[(cm^3/s)]", fontsize=14) #plt.grid(ls=":") #plt.savefig("GRAFICA AJUSTE1.png",dp1=300) #guardar en carpeta #plt.show() angulo=15.1689 #agregar angulo #tan_ang=np.tan(angulo*math.pi/180.) #print(tan_ang) tan_ang=24.4/(2*45) g=978 # gravedad en cm/s^2 Cd= (15/8)*A/(tan_ang*np.sqrt(2*g)) Cd=np.round(Cd,5) print ("Valor de Cd (coeficiente de descarga): ",Cd) # Calculo de errores sistemáticos y aleatorios #Error sistemático Volumen dV_V=0.1/30 dV_V=np.round(dV_V,4) print("Delta de V: ",dV_V) #Error sistemático máximo en tiempo de aforo dT_T=0.1/36.6 dT_T=np.round(dT_T,4) print('Delta de T: ',dT_T) #Error sistemático de los datos iniciales dH_H=0.1/(datos["H (mm)"].min()) #se asume incertidumbre de 1mm/10mm dH_H=np.round(dH_H,5) print ("Delta de la altura: ",dH_H) #dQ_Q=0.0001/(datos["Q (LPS)"].min()) #se asume incertidumbre de 0,1cm^3/1000cm^3 #dQ_Q=np.round(dQ_Q,5) #print ("Delta del caudal: ",dQ_Q) dQ_Q=np.sqrt(dV_V**2+dT_T**2) #Error sistematico, es indirecto dQ_Q=np.round(dQ_Q,5) print ("Delta del caudal: ",dQ_Q) #Error sistematico de la pendiente dA_As=np.sqrt((((5/2*dH_H)**2)+(dQ_Q)**2)) dA_As=np.round(dA_As,5) print ("Error sistematico de la pendiente: ",dA_As) #Error aleatorio en la pendiente #Parámetro T-Student from scipy.stats import t N=len(Y) t=t.interval(0.95,(N-1))[1] #t=2.776445 t=np.round(t,3) Y_AX= (Y-AX)**2 sd=np.sqrt(np.sum(Y_AX)/(N-1)) sd=np.round(sd,5) print ("Valor de sd de la pendiente: ",sd) dA_Aa=(1/A)*(t*sd)/(np.sqrt(np.sum(X**2))) #print((np.sqrt(np.sum(X**2)))) #da diferente al del profee, a él le da 223,21748 dA_Aa=np.round(dA_Aa,5) print ("Error aleatorio de la pendiente: ",dA_Aa) #diferente a la guía #Agregar incertidumbre al ajuste, bandas de confianza Ysup=AX+t*sd*np.sqrt(1+(X**2)/np.sum(X**2)) Yinf=AX-t*sd*np.sqrt(1+(X**2)/np.sum(X**2)) plt.figure(figsize=(8,5)) plt.plot(X,Y,"ro", label = "Datos experimentales") plt.plot(X,AX,color="k", ls="--", label = leyenda) plt.plot(X,Ysup,"b",lw=0.8) plt.plot(X,Yinf,"g",lw=0.8) plt.xlabel(u"H^(5/2)-[(cm)^(5/2)]", fontsize=14) plt.ylabel(u"Q-[(cm^3/s)]", fontsize=14) plt.grid(ls=":") plt.legend(fontsize=14) #plt.savefig("GRAFICA AJUSTE2.pdf",dp1=300) #guardar en carpeta #plt.show() #Error sistemático en el ángulo #tomando una incertidumbre de 0.1° inf_angulo=angulo-0.1 tan_inf=np.tan(inf_angulo*math.pi/180.) print("Tangente de "+ str(inf_angulo)+": ",tan_inf) sup_angulo=angulo+0.1 tan_sup=np.tan(sup_angulo*math.pi/180.) print("Tangente de "+ str(sup_angulo)+": ",tan_sup) incertidumbre=np.tan(0.1*math.pi/180.) incertidumbre=np.round(incertidumbre,5) print("tangente de 0.1: ", incertidumbre) sistem_ang=incertidumbre/tan_inf sistem_ang=np.round(sistem_ang,5) print("error sistemático del angulo: ",sistem_ang) #Error sistemático de la gravedad g=978 sist_g=2/g #se toma gravedad 978 +/- 1 cm/s^2 sist_g=np.round(sist_g,4) print("error sistemático de la gravedad: ", sist_g) #Error del coeficiente de descarga ecd=np.sqrt(dA_As**2+dA_Aa**2+sistem_ang**2+(sist_g/2)**2) ecd=np.round(ecd,5) print("error coeficiente de descarga Cd: ",ecd) #por el aleatorio de la pendiente, da diferente a la guía #reporte de resultados print("reporte de Cd: ", Cd," +/- ",ecd*Cd) #redondear correctamente para un correcto reporte #Si nos dan una profundidad H0=5,10 cm. ¿Cuál sería el caudal Q? H0=5.20 Q0=Cd*(8/15)*tan_ang*np.sqrt(2*g)*(H0**2.5) #caudal en cm^3 print("Q0: ",Q0) #Error sistemático del caudal dH0_H0=0.1/H0 #incertidumbre de 1mm/10mm dH0_H0=np.round(dH0_H0,5) print("Error sistemático de Ho: ",dH0_H0) ds_Q0=np.sqrt(ecd**2+sistem_ang**2+(sist_g/2)**2+((2.5*dH0_H0))**2) ds_Q0=np.round(ds_Q0,5) print("eeror sistemático de Q0: ",ds_Q0) #Error aleatorio del caudal da_Q0=1/Q0*t*sd*np.sqrt(1+(H0**5/np.sum(X**5))) da_Q0=np.round(da_Q0,5) print("Error aleatorio de Q0: ",da_Q0) #Error total eN Q0 Q0_total=np.sqrt(ds_Q0**2+da_Q0**2) Q0_total=np.round(Q0_total,5) print("Error total de Q0: ",Q0_total ) #sesgo sesgo=t*sd*np.sqrt(1+(H0**5/np.sum(X**5))) sesgo=np.round(sesgo,5) #Reporte del caudal Q0 print("reporte de caudal Q0: ",Q0," +/- ",sesgo ,"cm^3/s") #tomar las cifras adecuadas para reporte correcto
Editor is loading...