Ejercicio: 2Eva_2022PAOI_T2 EDO de circuito RLC con interruptor intermedio
La corriente del inductor y(t) para t≥0 se deriva para tener la expresión solo derivadas:
\frac{\delta}{\delta t}y(t) + 2 y(t) + 5 \int_{-\infty}^t y(\tau) \delta \tau = 10 \mu(t)
Para t>0 que es donde transcurre el experimento, el escalón es una constante, se tiene que:
\frac{\delta ^2}{\delta t^2}y(t) + 2 \frac{\delta}{\delta t}y(t) + 5 y(t) = 0
tomando las condiciones iniciales dadas para t=0, y(0)=2, y'(0)=–4
literal a
EL resultadoes perado es el planteamiento del problema. Se reescribe la ecuación con la nomenclatura simplificada y se resordena segun el modelo del método:
y'' = - 2y' - 5 y
luego se sustituye la variable y se convierte a las ecuaciones:
z =y' = f_x(t,y,z)
z' = - 2z - 5 y = g_z(t,y,z)
se usa una tabla para llevar el registro de operaciones:
Se plantea las operaciones:
K1y = h * f(ti,yi,zi)
K1z = h * g(ti,yi,zi)
K2y = h * f(ti+h, yi + K1y, zi + K1z)
K2z = h * g(ti+h, yi + K1y, zi + K1z)
yi = yi + (K1y+K2y)/2
zi = zi + (K1z+K2z)/2
ti = ti + h
literal b
El resultado esperado es la aplicación correcta de los valores en las expresiones para al menos tres iteraciones usando h=0.01
itera = 0
K1y = 0.01 y'(0) = 0.01(-4) = -0.04
K1z = 0.01 (- 2z(0) - 5 y(0)) = 0.01(- 2(-4) - 5 (2)) = -0.02
K2y = 0.01 (-4-0.02) = -0.0402
K2z = 0.01 (-2(-4-0.02)-5(2-0.04)) = -0.0176
yi = yi + \frac{K1y+K2y}{2} = 2+\frac{-0.04-0.0402} {2} = 1.9599
zi = zi + \frac{K1z+K2z}{2} = -4 +\frac{-0.02-0.0176}{2} = -4.0188
ti = ti + h = 0+0.01 = 0.01
itera = 1
K1y = 0.01(-4.0188) = -0.040188
K1z = 0.01(- 2(-4.0188) - 5 (1.9599)) = -0.0176
K2y = 0.01 (-4.0188-0.0176) = -0.0403
K2z = 0.01 (-2(-4.0188-0.0176)-5(1.9599-0.040188)) = -0.0152
yi = 1.9599 +\frac{-0.040188-0.0403} {2} = 1.9196
zi = -4.0188 +\frac{-0.0176-0.0152}{2} = -4.0352
ti = ti + h = 0.01+0.01 = 0.02
itera = 2
K1y = 0.01(-4.0352) = -0.040352
K1z = 0.01(- 2(-4.0352) - 5 (1.9196)) = -0.0152
K2y = 0.01 (-4.0352-0.0152) = -0.0405
K2z = 0.01 (-2(-4.0352-0.0152)-5(1.9196-0.040352)) = -0.0129
yi = 1.9196 +\frac{-0.040352-0.0405} {2} =1.8792
zi = -4.0352 +\frac{-0.0152-0.0129}{2} = -4.0494
ti = ti + h = 0.02+0.01 = 0.03
Resultados con el algoritmo en Python
ti, yi, zi, K1y, K1z, K2y, K2z
[[ 0.00 2.0000 -4.0000 0.0000 0.0000 0.0000 0.0000]
[ 0.01 1.9599 -4.0188 -0.0400 -0.0200 -0.0402 -0.0176]
[ 0.02 1.9196 -4.0352 -0.0401 -0.0176 -0.0403 -0.0152]
[ 0.03 1.8792 -4.0494 -0.0403 -0.0152 -0.0405 -0.0129]
...
Literal c
Runge-Kutta 2do Orden tiene error de truncamiento O(h3)
por lo que el error está en el orden de (0.01)3 = 0.000001
Literal d
Se requiere presentar el resultado para el intervalo t entre [0,5]. Siendo el tamaño de paso h=0.01 que es pequeño, se requieren realizar (5-0)/0.01=500 iteraciones, que es más práctico realizarlas usando el algoritmo.
Instrucciones en Python
# Respuesta a entrada cero
# solucion para (D^2+ D + 1)y = 0
import numpy as np
import matplotlib.pyplot as plt
def rungekutta2_fg(f,g,x0,y0,z0,h,muestras):
tamano = muestras + 1
estimado = np.zeros(shape=(tamano,7),dtype=float)
# incluye el punto [x0,y0]
estimado[0] = [x0,y0,z0,0,0,0,0]
xi = x0
yi = y0
zi = z0
for i in range(1,tamano,1):
K1y = h * f(xi,yi,zi)
K1z = h * g(xi,yi,zi)
K2y = h * f(xi+h, yi + K1y, zi + K1z)
K2z = h * g(xi+h, yi + K1y, zi + K1z)
yi = yi + (K1y+K2y)/2
zi = zi + (K1z+K2z)/2
xi = xi + h
estimado[i] = [xi,yi,zi,K1y,K1z,K2y,K2z]
return(estimado)
# PROGRAMA
f = lambda t,y,z: z
g = lambda t,y,z: -2*z -5*y + 0
t0 = 0
y0 = 2
z0 = -4
h = 0.01
tn = 5
muestras = int((tn-t0)/h)
tabla = rungekutta2_fg(f,g,t0,y0,z0,h,muestras)
ti = tabla[:,0]
yi = tabla[:,1]
zi = tabla[:,2]
# SALIDA
np.set_printoptions(precision=4)
print('ti, yi, zi, K1y, K1z, K2y, K2z')
print(tabla)
# GRAFICA
plt.plot(ti,yi, color = 'orange', label='y_RK(t)')
plt.ylabel('y(t)')
plt.xlabel('t')
plt.title('y(t) con Runge-Kutta 2do Orden d2y/dx2 ')
plt.legend()
plt.grid()
plt.show()
Nota: En el curso TELG1001 Señales y Sistemas, la solución se realiza con Transformadas de Laplace