s1Eva2026PAOI_T1 Drones para medicinas en área rural

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.5t

La 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=20

Para 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
dron carga Medicamento f(t) gráfica

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.99

La 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.5

siguiendo 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.3369

iteració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.001876

iteració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.0000000127

Literal 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.507075

literal e. algoritmo, resultados y gráfica

La gráfica se presentó en el literal a,

dron carga Medicamento f(t) gráfica

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()

Ejemplos por año