s2Eva2007TII_T2_AN EDO Lanzamiento vertical proyectil

Ejercicio: 2Eva2007TII_T2_AN EDO Lanzamiento vertical proyectil

parabólico angry birds 01

El ejercicio es semejante a los presentados en física/cinemática, simplificado al eje vertical.

EL ejercicio considera la fuerza de la gravedad y la resistencia del aire que van en contra de del sentido de desplazamiento en la componente vertical.

La ecuación del problema se expresa como:

m \frac{d v}{d t} = -mg - kv|v|

se despeja:

\frac{d v}{d t} = -g - \frac{k}{m}v|v|

y usando los valores proporcionados para las constantes en el enunciado:

\frac{d v}{d t} = -9,8 - \frac{0.002}{0.11}v|v|

con valores iniciales de:

t0 = 0 , v0 = 8 , h=0.2

Considerando el desarrollo del ejercicio solo para velocidad, se plantea:

f(t,v) = -9,8 - \frac{0.002}{0.11}v|v|

Se obtiene solo la tabla de velocidad. La altura máxima se encuentra cuando la velocidad llega a cero, el proyectil ya no sube mas y comienza a caer.

Para encontrar las alturas se debería integrar sobre la columna de velocidad desde la primera iteración.

Otra forma de plantear el ejercicio

Sin embargo se puede pasar al planteamiento de la ecuación en 2da derivada, considerando que v= dy/dt

\frac{d^2 y}{d t^2} = -9,8 - \frac{0.002}{0.11}\frac{dy}{dt}\left|\frac{dy}{dt}\right|

que genera el sistema de ecuaciones:

f(t,y,v) = v f(t,y,v) = -9,8 - \frac{0.002}{0.11}v|v|

que genera la tabla para [t,y,v]


tabla

velocidad

velocidad y altura:


literal a: con velocidad

itiviK1K2
008--

Se usa Runge-Kutta de 2do Orden

iteración 1

K_1 = h f(0,8)= 0.2 \left[-9,8 - \frac{0.002}{0.11}(8)|8| \right] = -2.1927 K_2 = h f(0 + 0.2, 8 -2.1927) = 0.2[-9,8 - \frac{0.002}{0.11}(8 -2.1927)|8 -2.1927|] =-2.0826 v_1 = -9,8 +\frac{-2.1927-2.0826 }{2} = 5.8623 t_1 = t_0 + h = 0 + 0.2 = 0.2 error = O(h^3) = O(0.2^3) = O(0.008)
itiviK1K2
008--
10.25.8623-2.1927-2.0826

iteración 2

K_1 = h f(0.2, 5.8623) = 0.2\left[-9,8 - \frac{0.002}{0.11}(5.8623)|5.8623|\right] = -2.085 K_2 = h f(0.2 + 0.2, 5.8623 -2.085) = 0.2 \left[-9,8 - \frac{0.002}{0.11}(5.8623 -2.085)|5.8623 -2.085|\right] =-2.0119 =-2.0119 v_2 = -9,8 +\frac{-2.085-2.0119}{2} = 3.8139 t_2 = t_1 + h = 0.2 + 0.2 = 0.4
itiviK1K2
008--
10.25.8623-2.1927-2.0826
20.43.8139-2.085-2.0119

iteración 3

K_1 = h f(0.4, 3.8139) = 0.2\left[-9,8 - \frac{0.002}{0.11}( 3.8139)| 3.8139|\right] = -2.0129 K_2 = h f(0.4+0.2, 3.8139 -2.0129) = 0.2 \left[-9,8 - \frac{0.002}{0.11}(3.8139 -2.0129)|3.8139 -2.0129|\right] =-1.9718 v_3 = -9,8 +\frac{-2.0129-1.9718}{2} = 1.8215 t_3 = t_2 + h = 0.4 + 0.2 = 0.6
itiviK1K2
008--
10.25.8623-2.1927-2.0826
20.43.8139-2.085-2.0119
30.61.8215-2.0129-1.9718
...

Tabla y gráfica del ejercicio para todo el intervalo:

EDO dy/dx con Runge-Kutta 2 Orden
i, [ti,     vi,     K1,    K2]
0 [0. 8. 0. 0.]
1 [ 0.2         5.86231924 -2.19272727 -2.08263424]
2 [ 0.4         3.81389169 -2.08497013 -2.01188497]
3 [ 0.6         1.82154739 -2.01289371 -1.97179489]
4 [ 0.8        -0.1444442  -1.97206558 -1.95991762]
5 [ 1.         -2.0963547  -1.95992413 -1.94389685]
2EIIT2007T2 Lanzamiento Vertical altura máxima cuando velocidad llega a cero

Algoritmo en Python

# 2Eva2007TII_T2_AN EDO Lanzamiento vertical proyectil
# EDO dy/dx. M todo de RungeKutta 2do Orden 
# estima la solucion para muestras espaciadas h en eje x
# valores iniciales x0,y0, entrega tabla[xi,yi,K1,K2]
import numpy as np
  
# INGRESO
# d1y = y' = f
d1y = lambda t,v: -9.8-(0.002/0.11)* v*np.abs(v)
x0 = 0
y0 = 8
h  = 0.2
muestras = 5
  
# algoritmos como funcion
def rungekutta2(d1y,x0,y0,h,muestras,
                vertabla=False,precision=6):
    '''solucion a EDO dy/dx, con Runge Kutta de 2do orden
    d1y es la expresion dy/dx, tambien planteada como f(x,y),
    valores iniciales: x0,y0, tamano de paso h.
    muestras es la cantidad de puntos a calcular. 
    '''
    tamano = muestras + 1
    tabla = np.zeros(shape=(tamano,2+2),dtype=float)
    tabla[0] = [x0,y0,0,0] # incluye el punto [x0,y0]
      
    xi = x0 # valores iniciales
    yi = y0
    for i in range(1,tamano,1):
        K1 = h * d1y(xi,yi)
        K2 = h * d1y(xi+h, yi + K1)
  
        yi = yi + (K1+K2)/2
        xi = xi + h
          
        tabla[i] = [xi,yi,K1,K2]
         
    if vertabla==True:
        np.set_printoptions(precision)
        print( 'EDO dy/dx con Runge-Kutta 2 Orden')
        print('i, [xi,     yi,     K1,    K2]')
        for i in range(0,tamano,1):
            print(i,tabla[i])
  
    return(tabla)
  
# PROCEDIMIENTO
tabla = rungekutta2(d1y,x0,y0,h,muestras)
n = len(tabla)
  
# SALIDA
print('EDO dy/dx con Runge-Kutta 2 Orden')
print('i, [ti,     vi,     K1,    K2]')
for i in range(0,n,1):
    print(i,tabla[i])

literal b: con velocidad

El tiempo donde se alcanza la altura máxima es con velocidad cero, ocurre en el intervalo [0.6, 0.8]

Para obtener un valor con mayor precisión se puede reducir el tamaño de paso h y obtener la tabla con el algoritmo.


literal a: con velocidad y altura

Tarea: Realizar iteraciones para Runge-Kutta

itiyiviK1yK1vK2yK2v
0008----


Ejemplos por año