Ejercicio: 1Eva_2024PAOII_T1 Capturar en el mar las cofias de cohetes
literal a. Planteamiento
Para encontrar el valor t cuando la cofia alcanza 30 mts o 0.030 Km se usa la fórmula del eje z(t)=0.030 dado que se indica que las fórmulas se encuentran en Km.
z(t) = 120 + \frac{450}{60} t \Big(1-e^{-0.35t} \Big) - \frac{g}{2} t^2 + 0.012(7.5+gt)^2 0.030 = 120 + \frac{450}{60} t \Big(1-e^{-0.35t} \Big) - \frac{g}{2} t^2 + 0.012(7.5+gt)^2 f(t) = - 0.030 + 120 + \frac{450}{60} t \Big(1-e^{-0.35t} \Big) - \frac{g}{2} t^2 + 0.012(7.5+gt)^2 = 0literal b, Intervalo para búsqueda
En el enunciado se indica que » trayectoria de caída que no es de más de 10 minutos desde desacople del cohete.»
Al considerar el inicio del «evento» desacople del cohete como t=0, el intervalo a usar es entre [0,10].
Para verificar el intervalo de búsqueda, se evalúa la función z(t) en los extremos del intervalo:
f(0) = - 0.030 + 120 + \frac{450}{60} (0) \Big(1-e^{-0.35(0)} \Big) - \frac{g}{2} (0)^2 + 0.012(7.5+25.28(0))^2 = 120.645 f(10) = - 0.030 + 120 + \frac{450}{60} (10) \Big(1-e^{-0.35(10)} \Big) - \frac{g}{2} (10)^2 + 0.012(7.5+g(10))^2 = -140.509con lo que se muestra el cambio de signo de f(t) dentro del intervalo, que verifica el intervalo de búsqueda.
con el algoritmo:
>>> fz(0)-0.03 120.645 >>> fz(10)-0.03 -140.50972375667382 >>>
también puede verificarse usando las gráficas de las trayectorias de cada eje vs el tiempo en el intervalo. Para el eje z, se puede marcar el punto de interés al trazar una línea horizontal en cero o en la altura z(t) = 0.030.
literal c. Iteraciones
Se indica usar el método del punto fijo, donde es necesario definir g(t) como un lado de la balanza, mientra que del otro lado es la identidad con t. de la fórmula se despeja por ejemplo del término t2
\frac{g}{2} t^2 + 0.012(7.5+gt)^2 f(t) = - 0.030 + 120 + \frac{450}{60} t \Big(1-e^{-0.35t} \Big) - \frac{g}{2} t^2 + 0.012(7.5+gt)^2 = 0 \frac{g}{2} t^2 = - 0.030 + 120 + \frac{450}{60} t \Big(1-e^{-0.35t} \Big) + 0.012(7.5+gt)^2 t^2 = \frac{2}{g}\Big(- 0.030 + 120 + \frac{450}{60} t \Big(1-e^{-0.35t} \Big) + 0.012(7.5+gt)^2 \Big) t = \sqrt{\frac{2}{g} \Big(- 0.030 + 120 + \frac{450}{60} t \Big(1-e^{-0.35t} \Big) + 0.012(7.5+gt)^2 \Big)}siendo g(t) la parte derecha de la ecuación:
g(t) = \sqrt{\frac{2}{g} \Big(- 0.030 + 120 + \frac{450}{60} t \Big(1-e^{-0.35t} \Big) + 0.012(7.5+gt)^2 \Big)}el punto inicial t0 se puede escoger por ejemplo la mitad del intervalo. Según se observa la gráfica.
La tolerancia puede ser de 10 cm, o 1 m, depende de la precisión a proponer.
Para la parte escrita se selecciona 1m, como las unidades se encuentran en Km: tolera = 0.001
itera = 0
t = 5
g(5) = \sqrt{\frac{2}{35.28} \Big(- 0.030 + 120 + \frac{450}{60} (5) \Big(1-e^{-0.35(5)} \Big) + 0.012(7.5+(35.28(5))^2 \Big)} g(5) = 5.28 error = |g(5)-5| = |5.28-5| = 0.28que es mayor que la tolerancia.
itera = 0+1 = 1
itera = 1
t = 5.28
g(5.28) = \sqrt{\frac{2}{35.28} \Big(- 0.030 + 120 + \frac{450}{60} (5.28) \Big(1-e^{-0.35(5.28)} \Big) + 0.012(7.5+(35.28(5.28))^2 \Big)} g(5.28) = 5.51 error = |g(5.28)-5.28| = |5.51-5.28| = 0.23que es mayor que la tolerancia.
itera = 1+1 = 2
itera = 2
t = 5.51
g(5.51) = \sqrt{\frac{2}{35.28} \Big(- 0.030 + 120 + \frac{450}{60} (5.51) \Big(1-e^{-0.35(5.51)} \Big) + 0.012(7.5+(35.28(5.51))^2 \Big)} g(5.51) = 5.70 error = |g(5.51)-5| = |5.70-5.51| = 0.19que es mayor que la tolerancia.
literal d. tolerancia y error
La tolerancia se describe en la primera iteración. Por ejemplo tolera = 0.001, los errores se calculan en cada iteración.
literal e. Convergencia
El error se reduce en cada iteración, se considera que el método converge.
literal f. Respuestas con algoritmo
La respuesta de la raíz de la función se busca con el algoritmo, se requieren al menos 35 iteraciones en el método del punto fijo.
i,[a,b,tramo] 0 [5. 5.2881 0.2881] 1 [5.2881 5.5234 0.2353] 2 [5.5234 5.7176 0.1942] 3 [5.7176 5.8791 0.1615] ... 34 [6.7551e+00 6.7562e+00 1.1150e-03] 35 [6.7562e+00 6.7572e+00 9.5380e-04] raíz en: 6.75719557313832 errado : 0.0009538025930524441 itera : 3
la gráfica del intervalo muestra que es necesario ampliar(zoom) el eje f(x) para observar mejor.
Instrucciones en Python
# Algoritmo de punto fijo # [a,b] son seleccionados desde la gráfica # error = tolera import numpy as np # INGRESO g = 35.28 alt = 0.030 fx = lambda t: -alt + 120 + 450/60*t*(1-np.exp(-0.35*t))-0.5*g*t**2 + 0.012*(7.5 - g*t)**2 gx = lambda t: np.sqrt((2/g)*(-alt + 120 + 450/60*t*(1-np.exp(-0.35*t)) + 0.012*(7.5 - g*t)**2)) a = 5 b = 10 tolera = 0.001 # tolera 1m, probar con 10 cm iteramax = 100 # PROCEDIMIENTO i = 0 # iteración b = gx(a) tramo = abs(b-a) print('i,[a,b,tramo]') np.set_printoptions(precision=4) print(0,np.array([a,b,tramo])) while not(tramo<=tolera or i>iteramax): a = b b = gx(a) tramo = abs(b-a) i = i + 1 print(i,np.array([a,b,tramo])) respuesta = b # Valida convergencia if (i>=iteramax): respuesta = np.nan # SALIDA print('raíz en: ', respuesta) print('errado : ', tramo) print('itera : ', i) # GRAFICA import matplotlib.pyplot as plt # calcula los puntos para fx y gx a = 5 b = 10 muestras = 21 xi = np.linspace(a,b,muestras) fi = fx(xi) gi = gx(xi) yi = xi plt.plot(xi,fi, label='f(t)', linestyle='dashed') plt.plot(xi,gi, label='g(t)') plt.plot(xi,yi, label='y=t') plt.axvline(respuesta, color='magenta', linestyle='dotted') plt.axhline(0) plt.xlabel('t') plt.ylabel('f(t)') plt.title('Punto Fijo') plt.grid() plt.legend() plt.show()