Ejercicio: 3Eva_IIT2018_T2 Drenar tanque cilíndrico
La ecuación a desarrollar es:
δtδy=−ky
con valores de k =0.5, y(0)=9
Formula de Taylor con término de error:
Pn(x)=k=0∑nk!f(k)(x0)(x−x0)k
Pn(x)=f(x0)+1!f′(x0)(x−x0)+
+2!f′′(x0)(x−x0)2+
+3!f′′′(x0)(x−x0)3+...
Se requiere la 2da y 3ra derivadas:
δt2δ2y=−k21y(21−1)=−2ky−21
δt3δ3y=−2k(−21)y(−21−1)=4ky−23
con lo que inicia las iteraciones y cálculo del error, con avance de 0.5 para t.
t=0 , y(0) = 9
t = 0.5
δtδy(0)=−(0.5)9=−1.5
δt2δ2y(0)=−20.59−21=−0.08333
δt3δ3y(0)=40.59−23=0.004628
P2(0.5)=9−1.5(0.5−0)+2−0.08333(0.5−0)2
P2(0.5)=8.2395
Error orden de:
Error=3!0.004628(0.5−0)3=9.641.10−5
t = 1
δtδy(0.5)=−(0.5)8.2395=−1.4352
δt2δ2y(0.5)=−20.5(8.2395)−21=−0.08709
δt3δ3y(0.5)=40.5(8.2395)−23=0.005285
P2(1)=8.2395−1.4352(1−0.5)+2−0.08709(1−0.5)2
P2(1)=7.5110
Error orden de:
Error=3!0.005285(1−0.5)3=4.404.10−4
t = 1.5
δtδy(1)=−(0.5)7.5110=−1.3703
δt2δ2y(1)=−20.5(7.5110)−21=−0.09122
δt3δ3y(1)=40.5(7.5110)−23=0.006072
P2(1.5)=7.5110−1.3703(1.5−1)+2−0.09122(1.5−1)2
P2(1.5)=6.8144
Error orden de:
Error=3!0.006072(1.5−1)3=1.4.10−4
t = 2
δtδy(1.5)=−(0.5)6.8144=−1.3052
δt2δ2y(1.5)=−20.5(6.8144)−21=−0.09576
δt3δ3y(1.5)=40.5(6.8144)−23=0.007026
P2(2)=6.8144−1.3052(2−1.5)−20.09576(2−1.5)2
P2(2)=6.1498
Error orden de:
Error=3!0.007026(2−1.5)3=1.4637.10−4
Se estima que el próximo término pasa debajo de 6 pies.
Por lo que estima esperar entre 2 y 2.5 minutos.
resultados usando el algoritmo:
ti, p_i, error
[[0.00000000e+00 9.00000000e+00 0.00000000e+00]
[5.00000000e-01 8.23958333e+00 9.64506173e-05]
[1.00000000e+00 7.51107974e+00 1.10105978e-04]
[1.50000000e+00 6.81451855e+00 1.26507192e-04]
[2.00000000e+00 6.14993167e+00 1.46391550e-04]
[2.50000000e+00 5.51735399e+00 1.70751033e-04]]

Algoritmo en Python
# 3Eva_IIT2018_T2 Drenar tanque cilíndrico
import numpy as np
import matplotlib.pyplot as plt
# INGRESO
y0 = 9
t0 = 0
buscar = 6
k = 0.5
h = 0.5
dy = lambda t,y: -k*np.sqrt(y)
d2y = lambda t,y: -(k/2)*(y**(-1/2))
d3y = lambda t,y: (k/4)*(y**(-3/2))
# PROCEDIMIENTO
resultado = [[t0,y0,0]]
yi = y0
ti = t0
while not(yi<buscar):
ti = ti+h
dyi = dy(ti,yi)
d2yi = d2y(ti,yi)
d3yi = d3y(ti,yi)
p_i = yi +dyi*(h) + (d2yi/2)*(h**2)
errado = (d3yi/6)*(h**3)
yi = p_i
resultado.append([ti,p_i,errado])
resultado = np.array(resultado)
# SALIDA
print('ti, p_i, error')
print(resultado)
# Grafica
plt.plot(resultado[:,0],resultado[:,1])
plt.ylabel('nivel de agua')
plt.xlabel('tiempo')
plt.grid()
plt.show()