You are on page 1of 3

chimenea de equilibrio metodo runge kutta

February 7, 2021

0.0.1 CHIMENEAS DE EQUILIBRIO POR EL METODO DE RUNGE KUTTA DE CUARTO


ORDEN

[1]: import matplotlib.pyplot as plt


import numpy as np
from ipywidgets import interactive
from IPython.display import Image
plt.matplotlib.use('nbagg')
plt.style.use('ggplot')
plt.rcParams['lines.linewidth']=2.0
plt.rcParams['lines.color']='black'
plt.rcParams['legend.frameon']=True
plt.rcParams['font.family']='serif'
plt.rcParams['legend.fontsize']=14
plt.rcParams['font.size']=14
plt.rcParams['axes.spines.right']=False
plt.rcParams['axes.spines.top']=False
plt.rcParams['axes.spines.left']=True
plt.rcParams['axes.spines.bottom']=True
plt.rcParams['axes.axisbelow']=True

[2]: #FUNCION RUNGE KUTTA PARA DOS ECUACIONES


def RUNGEKUTTA(f,g, y0, Q0,t0,tf,dt):
'''
Argumentos
--------------------------
f: PRIMERA FUNCION
g: SEGUNDA FUNCION
y0: CONDICION INICIAL y
Q0: CONDICION INICIAL Q
t0: tiempo inicial
tf: tiempo final
dt: incremento de tiempo
'''
t = np.arange(t0, tf + dt, dt)
n = len(t)
y = np.zeros(n)

1
Q = np.zeros(n)
t[0] = t0
y[0] = y0
Q[0] = Q0
for i in range(n-1):
k1 = f(t[i],y[i],Q[i])
l1 = g(t[i],y[i],Q[i])
k2 = f(t[i]+dt/2,y[i]+k1*dt/2, Q[i] + l1*dt/2)
l2 = g(t[i]+dt/2,y[i]+k1*dt/2, Q[i] + l1*dt/2)
k3 = f(t[i]+dt/2,y[i]+k2*dt/2, Q[i] + l2*dt/2)
l3 = g(t[i]+dt/2,y[i]+k2*dt/2, Q[i] + l2*dt/2)
k4 = f(t[i]+dt,y[i]+k3*dt, Q[i] + l3*dt)
l4 = g(t[i]+dt,y[i]+k3*dt, Q[i] + l3*dt)
y[i+1] = y[i] + (k1 + 2*k2+2*k3+k4)*dt/6
Q[i+1] = Q[i] + (l1 + 2*l2+2*l3+l4)*dt/6
#return y, t
print(y,Q)
#return Q,t
#plt.plot(t,y)
#plt.plot(t,Q)
plt.figure(u'GRÃĄFICOS', figsize=(13,6), tight_layout=True)
plt.subplot(121)
plt.plot(t, y, 'co', markersize=2, label='ONDA')
plt.title('SOBREELEVACIÃŞN EN LA CHIMENEA')
plt.xlabel('TIEMPO')
plt.ylabel('ALTURA')
plt.grid(True)
plt.legend()
plt.subplot(122)
plt.plot(t, Q, color='red', linewidth=2, label='ONDA')
plt.title(u'CAUDAL EN LA TUBERIA')
plt.xlabel('TIEMPO')
plt.ylabel('CAUDAL')
plt.grid(True)
plt.legend()
plt.show()

[3]: gr=9.81 #GRAVEDAD


Q=19.484 #CAUDAL INICIAL
Achimenea=19.635 #AREA DE LA CHIMENEA
Atuberia=0.785 #AREA DE LA CHIMENEA
Ltuberia=750 #LONGITUD DE LA TUBERIA
Cc=0.840973
CCh=0.000152
ti=0 #TIEMPO INICIAL
tfi=500 #TIEMPO FINAL
dt=0.4 #INTERVALOS DE TIEMPO

2
yi=0 #ALTURA INICIAL

[1]: t=np.array([1,50,100,150,200,250,300,350,400])
for i in range(8):
QT=Q*(1-t[i+1]/t[8])
QCh=Q-QT
fff=lambda t,y,Q: (Q-QT)/Achimenea #FUNCION PARA LA ALTURA
aa=QT
ggg=lambda t,y,Q: gr*Atuberia/Ltuberia*(-y-Cc*Q*abs(Q)-CCh*QCh*abs(QCh));␣
,→#FUNCION PARA EL CAUDAL

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

<ipython-input-1-e7889ccfd4cd> in <module>
----> 1 t=np.array([1,50,100,150,200,250,300,350,400])
2 for i in range(8):
3 QT=Q*(1-t[i+1]/t[8])
4 QCh=Q-QT
5 fff=lambda t,y,Q: (Q-QT)/Achimenea #FUNCION PARA LA ALTURA

NameError: name 'np' is not defined

[2]: #APLICAMOS RUNGE KUTTA PARA LAS DOS ECUACIONES


RUNGEKUTTA(fff,ggg, yi, Q, ti,tfi,dt)

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

<ipython-input-2-7203f79e9e3b> in <module>
1 #APLICAMOS RUNGE KUTTA PARA LAS DOS ECUACIONES
----> 2 RUNGEKUTTA(fff,ggg, yi, Q, ti,tfi,dt)

NameError: name 'RUNGEKUTTA' is not defined

[ ]:

You might also like