Experiencia Teorico-Experimental: Llenado y vaciado de tanques.¶

Por: Karen Sofía Rodríguez, Jeison Fernando Puin, Enoth Salcedo, Brayan Alejandro Barón

PROCESO DE DESCARGA!!¶

Para este proceso de descarga, diseñamos un tanque que tuviera las siguientes medidas:

40cm de circunferencia, por lo tanto, el tanque tiene 20/π (6.366197724) cm de radio 45 cm de altura, de los cuales 40cm son usados para contener el líquido

Para hallar el volumen, haremos un pequeño sólido de revolución

In [20]:
from matplotlib import pyplot as plt
from sympy import symbols, sqrt, integrate, Integral
from sympy.abc import x
import sympy as sp
import numpy as np
import math

# Sólido de revolución para hallar el volumen del tanque
h = 40

x_val = np.linspace(0, h)

r = (20)/(np.pi)

print("El radio es de " + str(r) + " cm y la altura de tu cilindro es de " + str(h) + " cm")
print("Hacemos la integral:")

x = symbols('x', real = True)
g_x = (r)**2

volumen = sp.integrate(g_x * sp.pi, (x, 0,h)).evalf()

print( volumen , "centímetros cúbicos")

print((sp.Rational(volumen, 1000).evalf()) , "litros")

#Gráfica del cilindro

radius = r
height = h

u = sp.Symbol('u')
v = sp.Symbol('v')

x = radius * sp.cos(u)
y = radius * sp.sin(u)
z = v

x_func = sp.lambdify((u, v), x, 'numpy')
y_func = sp.lambdify((u, v), y, 'numpy')
z_func = sp.lambdify((u, v), z, 'numpy')

u_vals = np.linspace(0, 2*np.pi, 100)
v_vals = np.linspace(0, height, 100)
U, V = np.meshgrid(u_vals, v_vals)


X = x_func(U, V)
Y = y_func(U, V)
Z = z_func(U, V)


fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')


ax.plot_surface(X, Y, Z, color='b', alpha=0.6)


ax.set_xlim([-radius, radius]) 
ax.set_ylim([-radius, radius]) 
ax.set_zlim([0, height])
ax.set_box_aspect([1, 1, 2])

plt.show()
El radio es de 6.366197723675814 cm y la altura de tu cilindro es de 40 cm
Hacemos la integral:
5092.95817894065 centímetros cúbicos
5.09295817894065 litros
No description has been provided for this image

CÁLCULOS TEÓRICOS...¶

Una vez con todas las medidas, podemos evaluar las diferentes ecuaciones y gráficos teóricos, para luego compararlo con los experimentales...

Coeficiente de descarga Kd:¶

Radio r = Radio del orificio de salida = 0.0025m

Radio R = Radio del tanque = 0.063661...m

\begin{equation} K_d = \frac{r^{2}}{R^{2}} \sqrt{2 g_l} \end{equation}\begin{equation} K_d = \frac{0.0025^{2}}{{\frac{0.2}{\pi}}^{2}} \sqrt{2 (9.8)} \end{equation}\begin{equation} K_d = 6.827281456 * 10^{-3} \end{equation}

Altura H_0, Raiz de H_0¶

\begin{equation} H_0 = 0.4 \end{equation}\begin{equation} \sqrt{H_0} = \frac{\sqrt{10}}{5} = 0.632455532... \end{equation}

Función lineal √h = - K_d / 2 * t + C¶

Constante de integración C = √H_0 = 0.632455532

\begin{equation} \sqrt{H_0} = \frac{-K_d}{2} t + \sqrt{H_0} \end{equation}\begin{equation} \sqrt{H_0} = -0.003413640t + 0.632455532 \end{equation}

Función cuadrática h = K_d^2 / 2 * t^2 - kdt C + c^2¶

\begin{equation} h = \frac{K_d^{2}}{4} t^{2} - K_d t C + C^{2} \end{equation}\begin{equation} h = 1.165294302 * 10^{-5} t^{2} - 4.317951926*10^{-3} t + 0.4 \end{equation}

Derivada (dh/dt) de la función cuadrática¶

(Redondeando los decimales)

\begin{equation} \frac{dh}{dt} = \frac{11 t- 2155}{500000} \end{equation}\begin{equation} \frac{dh}{dt} = 2.2 * 10 ^{-5} t - 0.00431 \end{equation}
In [21]:
#Gráficos teóricos
import matplotlib.pyplot as plt
import numpy as np

# Definir las funciones
def sqrt_H0(t):
    return -1* 0.003413640 * t + 0.632455532

def h(t):
    return 1.165294302e-5 * t**2 - 4.317951926e-3 * t + 0.4

def dh_dt(t):
    return 2.2e-5 * t - 0.00431

# Crear un rango de valores para t
t_values = np.linspace(0, 1000, 400)

# Evaluar las funciones
sqrt_H0_values = sqrt_H0(t_values)
h_values = h(t_values)
dh_dt_values = dh_dt(t_values)

# Crear las gráficas
plt.figure(figsize=(18, 6))

# Gráfico de sqrt(H_0)
plt.subplot(1, 3, 1)
plt.plot(t_values, sqrt_H0_values, label=r'$\sqrt{H_0} = -0.003413640t + 0.632455532$')
plt.title(r'Gráfico de $\sqrt{H_0}$')
plt.xlabel('t')
plt.ylabel(r'$\sqrt{H_0}$')
plt.grid(True)
plt.legend()
plt.xlim([0, 200])
plt.ylim([0, 1])


# Gráfico de h(t)
plt.subplot(1, 3, 2)
plt.plot(t_values, h_values, label='h(t)')
plt.title('Gráfico de h(t)')
plt.xlabel('t')
plt.ylabel('h')
plt.grid(True)
plt.legend()
plt.xlim([0, 200])
plt.ylim([0, 0.5])

# Gráfico de dh/dt
plt.subplot(1, 3, 3)
plt.plot(t_values, dh_dt_values, label=r'$\frac{dh}{dt}$', color='blue')
plt.title(r'Gráfico de $\frac{dh}{dt}$')
plt.xlabel('t')
plt.ylabel(r'$\frac{dh}{dt}$')
plt.grid(True)
plt.legend()
plt.xlim([0, 200])
plt.ylim([-0.005, 0.001])

# Mostrar las gráficas
plt.tight_layout()
plt.show()
No description has been provided for this image

CÁLCULOS EXPERIMENTALES!¶

Al hacer el vaciado del tanque experimental, obtuvimos varios datos con Tracker Video Analysis. Aproximadamente 1800 datos, que se ajustan a una función de grado 2 que corresponde a h(t)

Función ajustada :

\begin{equation} h = 1 * 10 ^{-5} t^{2} - 0.0042 t + 0.3839 \end{equation}

Esta función ya está en su forma más simple, por lo tanto, no requerimos acceder a polinomios de Taylor para su aproximación.

De esta función podemos inferir que:

\begin{equation} C^{2} = 0.3839 \end{equation}\begin{equation} C = 0.619596643... \end{equation}\begin{equation} K_d C = -0.0042 \end{equation}\begin{equation} K_d = -6.778603544... * 10^{-3} \end{equation}\begin{equation} \sqrt{H_0} = C = 0.619596643... \end{equation}\begin{equation} H_0 = 0.3839 \end{equation}\begin{equation} \text{Por lo tanto, las funciones} \sqrt{H_0} , h(t), \frac{dh}{dt} \text{ quedarían de la siguiente manera:} \end{equation}\begin{equation} \sqrt{H_0} = \frac{-K_d}{2} t + \sqrt{H_0} \end{equation}\begin{equation} \sqrt{H_0} = -0.0039 t + 0.6356 \end{equation}\begin{equation} h = \frac{K_d^{2}}{4} t^{2} - K_d t C + C^{2} \end{equation}\begin{equation} h = 1*10^{-5} t^{2} - 0.0042 + 0.3839 \end{equation}\begin{equation} \frac{dh}{dt} = 2*10^{-5} t -0.0042 \end{equation}
In [22]:
#Gráficas experimentales
import matplotlib.pyplot as plt
import numpy as np

# Definir las funciones
def sqrt_H0(t):
    return -1* 0.0039 * t + 0.6356

def h(t):
    return 1e-5 * t**2 - 4.2e-3 * t + 0.3839

def dh_dt(t):
    return 2e-5 * t - 0.0042

# Crear un rango de valores para t
t_values = np.linspace(0, 1000, 400)

# Evaluar las funciones
sqrt_H0_values = sqrt_H0(t_values)
h_values = h(t_values)
dh_dt_values = dh_dt(t_values)

# Crear las gráficas
plt.figure(figsize=(18, 6))

# Gráfico de sqrt(H_0)
plt.subplot(1, 3, 1)
plt.plot(t_values, sqrt_H0_values, label=r'$\sqrt{H_0} = -0.003413640t + 0.632455532$')
plt.title(r'Gráfico de $\sqrt{H_0}$')
plt.xlabel('t')
plt.ylabel(r'$\sqrt{H_0}$')
plt.grid(True)
plt.legend()
plt.xlim([0, 200])
plt.ylim([0, 1])


# Gráfico de h(t)
plt.subplot(1, 3, 2)
plt.plot(t_values, h_values, label='h(t)')
plt.title('Gráfico de h(t)')
plt.xlabel('t')
plt.ylabel('h')
plt.grid(True)
plt.legend()
plt.xlim([0, 200])
plt.ylim([0, 0.5])

# Gráfico de dh/dt
plt.subplot(1, 3, 3)
plt.plot(t_values, dh_dt_values, label=r'$\frac{dh}{dt}$', color='blue')
plt.title(r'Gráfico de $\frac{dh}{dt}$')
plt.xlabel('t')
plt.ylabel(r'$\frac{dh}{dt}$')
plt.grid(True)
plt.legend()
plt.xlim([0, 200])
plt.ylim([-0.005, 0.001])

# Mostrar las gráficas
plt.tight_layout()
plt.show()
No description has been provided for this image

Gráficas sobrepuestas:¶

In [23]:
#Gráficos teóricos
import matplotlib.pyplot as plt
import numpy as np

# Definir las funciones
def sqrt_H0(t):
    return -1* 0.003413640 * t + 0.632455532

def EXPsqrt(t):
    return -1* 0.0039 * t + 0.6356

def h(t):
    return 1.165294302e-5 * t**2 - 4.317951926e-3 * t + 0.4

def EXPh(t):
    return 1e-5 * t**2 - 4.2e-3 * t + 0.3839

def dh_dt(t):
    return 2.2e-5 * t - 0.00431

def EXPdh_dt(t):
    return 2e-5 * t - 0.0042

# Crear un rango de valores para t
t_values = np.linspace(0, 1000, 400)

# Evaluar las funciones
sqrt_H0_values = sqrt_H0(t_values)
h_values = h(t_values)
dh_dt_values = dh_dt(t_values)
EXPsqrt_H0_values = EXPsqrt(t_values)
EXPh_values = EXPh(t_values)
EXPdh_dt_values = EXPdh_dt(t_values)

# Crear las gráficas
plt.figure(figsize=(18, 6))

# Gráfico de sqrt(H_0)
plt.subplot(1, 3, 1)
plt.plot(t_values, sqrt_H0_values, label=r'$Teórico$')
plt.plot(t_values, EXPsqrt_H0_values)
plt.title(r'Gráfico de $\sqrt{H_0}$')
plt.xlabel('t')
plt.ylabel(r'$\sqrt{H_0}$')
plt.grid(True)
plt.legend()
plt.xlim([0, 200])
plt.ylim([0, 1])


# Gráfico de h(t)
plt.subplot(1, 3, 2)
plt.plot(t_values, h_values, label='Teórico')
plt.plot(t_values, EXPh_values)
plt.title('Gráfico de h(t)')
plt.xlabel('t')
plt.ylabel('h')
plt.grid(True)
plt.legend()
plt.xlim([0, 200])
plt.ylim([0, 0.5])

# Gráfico de dh/dt
plt.subplot(1, 3, 3)
plt.plot(t_values, dh_dt_values, label=r'$Teórico$', color='blue')
plt.plot(t_values, EXPdh_dt_values, color='orange')
plt.title(r'Gráfico de $\frac{dh}{dt}$')
plt.xlabel('t')
plt.ylabel(r'$\frac{dh}{dt}$')
plt.grid(True)
plt.legend()
plt.xlim([0, 200])
plt.ylim([-0.005, 0.001])

# Mostrar las gráficas
plt.tight_layout()
plt.show()
No description has been provided for this image

Cálculo del error: K_d y C¶

In [24]:
# Valores de K_d
K_d_teorico = 6.827281456 * 10**-3
K_d_experimental = 6.778603544 * 10**-3

# Cálculo del porcentaje de error de K_d
error_K_d = abs(K_d_teorico - K_d_experimental) / abs(K_d_teorico) * 100
print(f"Porcentaje de error de K_d: {error_K_d:.2f}%")

# Valores de C (teóricos y experimentales)
C_teorico = (0.4)**0.5
C_experimental = (0.3839)**0.5

# Cálculo del porcentaje de error de C
error_C = abs(C_teorico - C_experimental) / abs(C_teorico) * 100
print(f"Porcentaje de error de C: {error_C:.2f}%")
Porcentaje de error de K_d: 0.71%
Porcentaje de error de C: 2.03%