Ejercicio: 1Eva2026PAOI_T1 Drones para medicinas en área rural
Literal a. Planteamiento del problema
Según el enunciado, se puede tomar la altura del dron como referencia para liberar el paquete de carga.
h(t)=65+12e^{(-0.65t)}-8.5tLa carga debe liberarse cuando el dron alcanza la altura de 20 m. Por lo tanto, el problema consiste en encontrar el instante t que satisface h(t)=20.
65+12e^{(-0.65t)}-8.5t=20Para aplicar un método de búsqueda de raíces es necesario escribir la ecuación en la forma f(t)=0
f(t)=65+12e^{(-0.65t)}-8.5t-20
Verificación del intervalo
El ejercicio indica que la trayectoria de vuelo para la entrega durante los primeros 10 minutos. Se evalúa la función en los extremos. Para t=0 y t=10
f(0)=65+12e^{-0.65t}-8.5(0)-20=107.48 f(10)=65+12e^{(-0.65(10))}-8.5(10)-20 = -39.99La función cambia de signo en el intervalo [0,10]. Por el Teorema de Bolzano, existe al menos una raíz en dicho intervalo.
Literal b. Método de Newton-Raphson
El método de Newton-Raphson requiere conocer la función f(t) y su derivada f'(t)
f(t)=65+12e^{(-0.65t)}-8.5t-20 f'(t)=12(-0.65)e^{(-0.65t)}-8.5siguiendo la ecuación para iterar:
x_{i+1} = x_i -\frac{f(x_i)}{f'(x_i)}Como la raíz pertenece al intervalo [0,10], se podría tomar como aproximación inicial el punto medio: t=5
iteración 0 , t=5
f(5) = 65+12e^{(-0.65(5))}-8.5(5)-20 = 2.9653 f'(5) = 12(-0.65)e^{(-0.65(5))}-8.5 =-8.8024 x_{i+1} = 5 -\frac{2.9653}{-8.8024} = 5.3369 tramo = |5 -5.3369| = 0.3369iteración 1 , t=5.3369
f(5.3369) = 65 + 12e^{(-0.65(5.3369))} - 8.5(5.3369) - 20 = 0.010383 f'(5.3369) = 12(-0.65)e^{(-0.65(5.3369))} - 8.5 = -8.7430 x_{i+1} = 5.3369 -\frac{0.010383}{-8.7430} = 5.3381 tramo = |5.3369 -5.3381| = 0.001876iteración 2 , t=5.3384
f(5.3381) = 65+ 12e^{(-0.65(5.3381))}-8.5(5.3381)-20 = 0.000001113 f'(5.3381) = 12(-0.65)e^{(-0.65(5.3381))} - 8.5 =-8.8428 x_{i+1} = 5.3381 -\frac{0.000001113}{-8.8428} = 5.3381 tramo = | 5.3381 -5.3381| = 0.0000000127Literal c. Convergencia
Se observa que los errores o tramos disminuyen en magnitud en cada iteración. En la tercera iteración se cumple que el error es menor que la tolerancia de 10-3. El ti converge a 5.33805
Literal d. Constante k
Usando la expresión para el eje de las y(t)
y(t)=25-1.5t+k 18.50=25-1.5(5.33805)+k k=18.50-(25-1.5(5.33805)) = 1.507075literal e. algoritmo, resultados y gráfica
La gráfica se presentó en el literal a,

Los resultados con el algoritmo son:
Método de Newton-Raphson
i ['xi', 'fi', 'dfi', 'xnuevo', 'tramo']
0 [ 5. 2.9653 -8.8024 5.3369 0.3369]
1 [ 5.3369e+00 1.0383e-02 -8.7430e+00 5.3381e+00 1.1876e-03]
2 [ 5.3381e+00 1.1134e-07 -8.7428e+00 5.3381e+00 1.2735e-08]
Método de Newton-Raphson
itera : 3
raíz en: 5.338059066565638
errado : 1.273483540842335e-08
El algoritmo ajustado al ejercicio, usando el modelo de función se muestra a continuación:
# 1Eva2026PAOI_T1 Drones para medicinas en área rural
# Método de Newton-Raphson
import numpy as np
# INGRESO
fx = lambda t: 65+12*np.exp(-0.65*t)-8.5*t-20
dfx = lambda t: 12*(-0.65)*np.exp(-0.65*t)-8.5
x0 = 5
tolera = 0.0000001
iteramax = 100
# PROCEDIMIENTO
def newton_raphson(fx,dfx,x0, tolera, iteramax=100,
vertabla=False, precision=4):
'''fx y dfx en forma numérica lambda
xi es el punto inicial de búsqueda
si no converge hasta iteramax iteraciones
la respuesta es NaN (Not a Number)
'''
itera=0
xi = x0
tramo = abs(2*tolera)
tabla=[]
if vertabla==True:
print('Método de Newton-Raphson')
print('i', ['xi','fi','dfi', 'xnuevo', 'tramo'])
np.set_printoptions(precision)
while (tramo>=tolera):
fi = fx(xi)
dfi = dfx(xi)
xnuevo = xi - fi/dfi
tramo = abs(xnuevo-xi)
unafila = np.array([xi,fi,dfi,xnuevo,tramo])
tabla.append(unafila)
if vertabla==True:
print(itera,np.array([xi,fi,dfi,xnuevo,tramo]))
xi = xnuevo
itera = itera + 1
if itera>=iteramax:
xi = np.nan
print('itera: ',itera,
'No converge,se alcanzó el máximo de iteraciones')
tabla = np.array(tabla,dtype=float)
return(xi,tabla)
iteramax = 15
verdigitos = 4 # ver digitos en tabla
# PROCEDIMIENTO
xi,tabla = newton_raphson(fx,dfx,x0,tolera,iteramax,
vertabla=True,
precision=verdigitos)
n = len(tabla)
errado = tabla[n-1,4]
# SALIDA
print('Método de Newton-Raphson')
print('itera : ', n)
print('raíz en: ', xi)
print('errado : ', errado)
para la parte gráfica se ajusta el intervalo de observación [a,b]
# GRAFICA ---------------------
import matplotlib.pyplot as plt
a = 0
b = 10
muestras = 21
itera_graf = n-1 # iteración en gráfica
titulo = 'Newton-Raphson'
xk = np.linspace(a,b,muestras)
fk = fx(xk)
xa = tabla[:,0]
ya = tabla[:,1]
xb = tabla[:,3]
dfi = tabla[:,2]
# Aproximacion con tangente
b0 = ya[itera_graf] - dfi[itera_graf]*xa[itera_graf]
tangentek = dfi[itera_graf]*xk + b0
ci = -b0/dfi[itera_graf]
plt.plot(xk,fk, label='f(x)')
if itera_graf==(n-1): # iteración final
plt.plot(xi,0, 'o')
if itera_graf<(n-1): # una iteración en gráfica
titulo = titulo+', itera='+str(itera_graf)
plt.ylim([np.min(fk),np.max(fk)])
plt.plot([xa[itera_graf],xa[itera_graf]],[0,ya[itera_graf]],'--',color='red')
plt.plot(xa[itera_graf],ya[itera_graf],'o',color='red',label='xi')
plt.plot(xk,tangentek,color='orange',label='tangente')
plt.plot(ci,0,'o',color='green',label='x[i+1]')
plt.axhline(0)
plt.xlabel('x')
plt.ylabel('f(x)')
plt.grid()
plt.legend()
plt.title(titulo)
plt.tight_layout()
plt.show()