1Eva_2024PAOII_T3 matriz de distribución de energía por sectores

1ra Evaluación 2024-2025 PAO II. 19/Noviembre/2024

Tema 3 (35 puntos) La distribución de energía eléctrica en un país, considerando distintas fuentes de generación de energía y tipos de consumidores se muestra como ejemplo en la tabla:

Fuente\Consumidor Industrial Comercial Transporte Residencial
Hidroeléctrica 0.7 0.19 0.1 0.01
Gas Natural 0.12 0.18 0.68 0.02
Petróleos-combustible 0.2 0.38 0.4 0.02
Eólica 0.11 0.23 0.15 0.51

Se interpreta de la tabla que la producción de energía con fuentes Hidroeléctricas, el 70% la consume el sector industrial, 19% la consume el sector comercial, 10% es utilizado por el sector del transporte y el 1% lo recibe el sector residencial.

Al considerar que el agua es un recurso natural finito, se pueden presentar insuficiencia de producción de energía por medios Hidráulicos ante fenómenos de sequía[1],  atribuidos por ejemplo al cambio climático.

Suponga que la producción total de energía por fuente de generación para la columna de la tabla es: [1500,400,600,200]. Los datos corresponden a la distribución de energía con la infraestructura existente.

a. Plantee el sistema de ecuaciones para encontrar la cantidad de hogares (residencial), fabricas (industrias), comercios y unidades de transporte se pueden atender según la configuración existente. Si el factor de consumo por unidad es el presentado en la tabla.

b. Presente la matriz aumentada y Muestre los pasos detallados para el pivoteo parcial por filas.

c. Desarrolle las expresiones para resolver mediante el método iterativo de Jacobi. Considere para el vector inicial Xo, al menos 100 clientes por sector.

d. Realice al menos 3 iteraciones con expresiones completas, indicando el error por iteración.

e. Analice la convergencia del método y resultados obtenidos.

f. Opcional: Determine el número de condición y comente su relación con sobre los resultados.

Adjunte los archivos del algoritmo y resultados de computadora utilizados.

Rúbrica: Literal a(5 puntos), literal b(5 puntos), literal c(5 puntos), literal d(15 puntos). literal e(5 puntos). literal f por considerar en calificación total

Referencia: [1] Matriz eléctrica: qué es y cuál es la diferencia entre ella y la matriz energética. Polyexel. 26-julio-2021. https://polyexcel.com.br/es/productos/matriz-electrica-que-es-y-cual-es-la-diferencia-entre-ella-y-la-matriz-energetica/

[2] Se agrava la crisis energética en Ecuador. DW Español. 26 octubre 2024. https://www.youtube.com/watch?v=IbR2SbSCpso

s1Eva_2024PAOII_T3 matriz de distribución de energía por sectores

Ejercicio: s1Eva_2024PAOII_T3 matriz de distribución de energía por sectores

:

Fuente\Consumidor Industrial Comercial Transporte Residencial
Hidroeléctrica 0.7 0.19 0.1 0.01
Gas Natural 0.12 0.18 0.68 0.02
Petróleos-combustible 0.2 0.38 0.4 0.02
Eólica 0.11 0.23 0.15 0.51

total de fuente de generación para la tabla es: [1500,400,600,200]

literal a Planteamiento

Considerando que el factor de la tabla es el factor de consumo por tipo de cliente, para encontrar las cantidades por tipo cliente que se puedan atender con la capacidad de cada «fuente de generación», se plantea:

0.7x+0.19y+0.1z+0.01w = 1500 0.12x+0.18y+0.68z+0.02w = 400 0.2x+0.38y+0.4z+0.04w = 600 0.11x+0.23y+0.15z+0.51w =200

literal b. Matriz aumentada y Pivoteo parcial por filas

\begin{bmatrix} 0.7 & 0.19& 0.1 & 0.01 &1500 \\ 0.12 & 0.18 & 0.68 & 0.02 & 400 \\0.2 & 0.38 & 0.4 & 0.02 & 600 \\0.11 & 0.23& 0.15 & 0.51 & 200 \end{bmatrix}

Revisando la primera columna j=0,  el mayor valor ya se encuentra en la posición de la diagonal i=0, por lo que no hay cambio de filas

Para la segunda columna j=1, desde la posición de la diagonal i=1, el mayor valor se encuentra en i=2, por lo que intercambian las filas.

\begin{bmatrix} 0.7 & 0.19& 0.1 & 0.01 &1500\\0.2 & 0.38 & 0.4 & 0.02 & 600 \\ 0.12 & 0.18 & 0.68 & 0.02 & 400 \\ 0.11 & 0.23& 0.15 & 0.51 & 200 \end{bmatrix}

Al observar la tercera columna j=2, desde la diagonal i=2, el valor mayor ya se encuentra en la posición de la diagonal, no hay cambio de filas. Para la última fila no se tiene otra fila para comparar, con lo que el pivoteo se terminó.

literal c. Método de Jacobi

A partir de la matriz del literal anterior, las expresiones quedan:

0.7x+0.19y+0.1z+0.01w = 1500 0.2x+0.38y+0.4z+0.04w = 600 0.12x+0.18y+0.68z+0.02w = 400 0.11x+0.23y+0.15z+0.51w =200

y despejar una incógnita de cada ecuación se convierte en:

x = \frac{1}{0.7} \Big( 1500 - (+0.19y+0.1z+0.01w) \Big) y = \frac{1}{0.38} \Big( 600 - (0.2x +0.4z+0.04w) \Big) z = \frac{1}{0.68} \Big(400-(0.12x+0.18y+0.02w)\Big) w =\frac{1}{0.51} \Big(200-(0.11x+0.23y+0.15z) \Big)

literal d. iteraciones

En el literal c, se sugiere iniciar con el vector X0 = [100,100,100,100].

Como la unidad de medida en las incógnitas es número de clientes, la tolerancia puede ajustarse a 0.1.

itera = 0

X0 = [100,100,100,100]

x = \frac{1}{0.7} \Big( 1500 - (+0.19(100)+0.1(100)+0.01(100)) \Big) = 2100 y = \frac{1}{0.38} \Big( 600 - (0.2(100) +0.4(100)+0.04(100)) \Big) = 1415.7 z = \frac{1}{0.68} \Big(400-(0.12(100)+0.18(100)+0.02(100))\Big) = 541.17 w =\frac{1}{0.51} \Big(200-(0.11(100)+0.23(100)+0.15(100)) \Big) =296.1 errado = max| [ 2100-100, 1415.7-100, 541.17-100, 296.1-100] | errado = max| [ 2000, 1315.7,441.17,196.1] | = 2000

itera = 1

X0 = [ 2100, 1415.7, 541.1, 296.1 ]

x = \frac{1}{0.7} \Big( 1500 - (+0.19(1415.7)+0.1(541.1)+0.01(296.1)) \Big) = 1677.0 y = \frac{1}{0.38} \Big( 600 - (0.2(2100) +0.4(541.1)+0.04( 296.1)) \Big) = -111.55 z = \frac{1}{0.68} \Big(400-(0.12(2100)+0.18(1415.7)+0.02(541.1))\Big) = -165.82 w =\frac{1}{0.51} \Big(200-(0.11( 2100)+0.23( 1415.7)+0.15(541.1)) \Big) =-858.44 errado = max| [ 1677.0 - 2100,-111.55 -1415.7, -165.82- 541.17, -858.44- 296.1] | errado = max| [ -423, -1527.25 ,-706.99 ,-1154.54] | = 1527.25

itera = 2

tarea..

literal e. convergencia y revisión de resultados obtenidos

Para el asunto de convergencia, el error disminuye entre iteraciones, por lo que el método es convergente.

Analizando los resultados desde la segunda iteración, se obtienen valores negativos, lo que no es acorde al concepto del problema. Se continuarán con las iteraciones siguientes y se observará el resultado para dar mayor «opinión» sobre lo obtenido.

literal f Número de condición

Número de condición = 5.77 que al ser «bajo y cercano a 1» se considera que el método converge.

Resultados con el algoritmo

Iteraciones Jacobi
itera,[X],errado
0 [100. 100. 100. 100.] 1.0
1 [2100.      1415.78947  541.17647  296.07843] 2000.0
2 [1677.03081 -111.55831 -165.82893 -858.44716] 1527.3477812177503
3 [2209.09063  916.03777  347.06727  129.52816] 1027.5960799832396
4 [1842.78688   44.11685  -47.89447 -599.50735] 871.9209205662409
5 [2146.28903  691.02779  268.99219  -11.1162 ] 646.9109334007268
...
40 [2022.87519  383.13614  137.36642 -257.41944] 0.11802984805018468
41 [2022.91669  383.22837  137.41009 -257.33833] 0.09223623893257127
numero de condición: 5.7772167744910625
respuesta X: 
[2022.91669  383.22837  137.41009 -257.33833]
iterado, incluyendo X0:  42

El resultado muestra que los clientes residenciales serán -257 según las ecuaciones planteadas. Lo que se interpreta según lo presentado por los estudiantes:

1. energía insuficiente: causa por los apagones diarios en el país en éstos días.

2. Se requiere mejorar el planteamiento, pues la respuesta no debe contener valores negativos según el concepto planteado en el ejercicio.

Se considerarán ambas válidas para la evaluación al observar que el resultado numérico es correcto, pero no es acorde al ejercicio.

 

Instrucciones en Python

# 1Eva_2024PAOII_T3 matriz de distribución de energía por sectores
import numpy as np

#INGRESO
A= [[0.7,0.19,0.1,0.01],
    [0.12,0.18,0.68,0.02],
    [0.2,0.38,0.4,0.02],
    [0.11,0.23,0.15,0.51]]

B = [1500,400,600,200]

# PROCEDIMIENTO
A = np.array(A,dtype=float)
B = np.transpose([np.array(B)])

X0 = [100,100,100,100]
tolera = 0.1
iteramax = 100
verdecimal = 5

def jacobi(A,B,X0, tolera, iteramax=100, vertabla=False, precision=4):
    ''' Método de Jacobi, tolerancia, vector inicial X0
        para mostrar iteraciones: vertabla=True
    '''
    A = np.array(A,dtype=float)
    B = np.array(B,dtype=float)
    X0 = np.array(X0,dtype=float)
    tamano = np.shape(A)
    n = tamano[0]
    m = tamano[1]
    diferencia = np.ones(n, dtype=float)
    errado = np.max(diferencia)
    X = np.copy(X0)
    xnuevo = np.copy(X0)
    tabla = [np.copy(X0)]

    itera = 0
    if vertabla==True:
        print('Iteraciones Jacobi')
        print('itera,[X],errado')
        print(itera, xnuevo, errado)
        np.set_printoptions(precision)
    while not(errado<=tolera or itera>iteramax):
        
        for i in range(0,n,1):
            nuevo = B[i]
            for j in range(0,m,1):
                if (i!=j): # excepto diagonal de A
                    nuevo = nuevo-A[i,j]*X[j]
            nuevo = nuevo/A[i,i]
            xnuevo[i] = nuevo
        diferencia = np.abs(xnuevo-X)
        errado = np.max(diferencia)
        X = np.copy(xnuevo)
        
        tabla = np.concatenate((tabla,[X]),axis = 0)

        itera = itera + 1
        if vertabla==True:
            print(itera, xnuevo, errado)

    # No converge
    if (itera>iteramax):
        X=itera
        print('iteramax superado, No converge')
    return(X,tabla)

def pivoteafila(A,B,vertabla=False):
    '''
    Pivotea parcial por filas, entrega matriz aumentada AB
    Si hay ceros en diagonal es matriz singular,
    Tarea: Revisar si diagonal tiene ceros
    '''
    A = np.array(A,dtype=float)
    B = np.array(B,dtype=float)
    # Matriz aumentada
    nB = len(np.shape(B))
    if nB == 1:
        B = np.transpose([B])
    AB  = np.concatenate((A,B),axis=1)
    
    if vertabla==True:
        print('Matriz aumentada')
        print(AB)
        print('Pivoteo parcial:')
    
    # Pivoteo por filas AB
    tamano = np.shape(AB)
    n = tamano[0]
    m = tamano[1]
    
    # Para cada fila en AB
    pivoteado = 0
    for i in range(0,n-1,1):
        # columna desde diagonal i en adelante
        columna = np.abs(AB[i:,i])
        dondemax = np.argmax(columna)
        
        # dondemax no es en diagonal
        if (dondemax != 0):
            # intercambia filas
            temporal = np.copy(AB[i,:])
            AB[i,:] = AB[dondemax+i,:]
            AB[dondemax+i,:] = temporal

            pivoteado = pivoteado + 1
            if vertabla==True:
                print(' ',pivoteado, 'intercambiar filas: ',i,'y', dondemax+i)
    if vertabla==True:
        if pivoteado==0:
            print('  Pivoteo por filas NO requerido')
        else:
            print('AB')
    return(AB)

# PROGRAMA Búsqueda de solucion  --------


# PROCEDIMIENTO
AB = pivoteafila(A,B,vertabla=True)
# separa matriz aumentada en A y B
[n,m] = np.shape(AB)
A = AB[:,:m-1]
B = AB[:,m-1]

[X, puntos] = jacobi(A,B,X0,tolera,vertabla=True,precision=verdecimal)
iterado = len(puntos)

# numero de condicion
ncond = np.linalg.cond(A)

# SALIDA
print('numero de condición:', ncond)
print('respuesta X: ')
print(X)
print('iterado, incluyendo X0: ', iterado)

1Eva_2024PAOII_T2 Interpolar x(t) en caída de cofia para t entre[1,2]

1ra Evaluación 2024-2025 PAO II. 19/Noviembre/2024

Tema 2 (30 puntos) Dispone de los datos registrados en cada eje para muestras en tiempo de trayectoria de caída de la “cofia” del cohete descrito en el tema 1. Los datos fueron tomados con un instrumento como GPS y altímetro, Suponga que solamente dispone de éstos datos para describir la trayectoria y se requiere encontrar el valor en x(t) en t = 1.65.

ti 1 1.2 1.4 1.8 2
xi -80.0108 -45.9965 3.1946 69.5413 61.1849
yi -8.3002 -22.6765 -20.9677 15.8771 33.8999
zi 113.8356 112.2475 110.5523 106.7938 104.71

Use los datos par encontrar un polinomio de interpolación x(t) para todo el intervalo de tiempo [1, 2].Interpola Trayectoria x(t)

a. Plantee y desarrolle un polinomio P3(t) de grado 3, que describa la trayectoria para x(t) en todo intervalo. Las expresiones y tablas para el desarrollo deben ser completas mostrando los valores usados

b. Verifique que P(x) pase por los puntos seleccionados de la muestra.

c. Calcule el error sobre el o los datos que no se usaron en el intervalo.

d. Escriba sus conclusiones y recomendaciones sobre los resultados obtenidos.

e. Opcional: Encuentre el valor del error usando la expresión para x(t) dada en el tema 1 y P(1.65), muestre la gráfica de P(t), los resultados.txt con el algoritmo. Adjunte los archivos en aula virtual.

Rúbrica: literal a (10 puntos), literal b (4 puntos), literal c (10 puntos), literal d (6 puntos), literal e por considerar en calificación total.

Referencia: en Tema 1

xi = [1. , 1.2, 1.4, 1.8, 2. ]
fi = [-80.0108, -45.9965,   3.1946,  69.5413,  61.1849]

s1Eva_2024PAOII_T2 Interpolar x(t) en caída de cofia para t entre[1,2]

Ejercicio: 1Eva_2024PAOII_T2 Interpolar x(t) en caída de cofia para t entre[1,2]

De la tabla del ejercicio, solo se toman las dos primeras filas ti,xi

ti 1 1.2 1.4 1.8 2
xi -80.0108 -45.9965 3.1946 69.5413 61.1849
yi -8.3002 -22.6765 -20.9677 15.8771 33.8999
zi 113.8356 112.2475 110.5523 106.7938 104.71

literal a. Planteamiento

En el planteamiento del problema para un polinomio de grado 3 indicado en el enunciado, se requieren al menos 4 puntos (grado=puntos-1). Al requerir cubrir todo el intervalo, los puntos en los extremos son obligatorios, quedando solo dos puntos por seleccionar, que se sugiere usar alrededor de 1.63 que es el valor buscado. quedando de ésta forma la selección de los puntos:

xi = [1. , 1.4, 1.8, 2. ]
fi = [-80.0108, 3.1946,  69.5413,  61.1849]

En el parcial, se revisaron dos métodos: polinomio de interpolación con sistema de ecuaciones en la Unidad 3, y el conceptual con diferencias divididas de Newton. Por la extensión del desarrollo se realiza con diferencias divididas de Newton, que por facilidad de espacios se muestra en dos tablas, la de operaciones y resultados.

Tabla de operaciones:

i ti f[ti] Primero Segundo Tercero
0 1 -80.0108 \frac{3.1946-(-80.0108)}{1.4-1} \frac{165.8667-208.0135}{1.8-1} \frac{-346.0812-52.6834}{2-1}
1 1.4 3.1946 \frac{69.5413-3.1946}{1.8-1.4} \frac{-41.782-165.8667}{2-1.4}
2 1.8 69.5413 \frac{61.1849-69.5413}{2-1.8}
3 2 61.1849

Tabla de resultados

i ti f[ti] Primero Segundo Tercero
0 1 -80.0108 208.0135 -52.6834 -293.3978
1 1.4 3.1946 165.8667 -346.0812
2 1.8 69.5413 -41.782
3 2 61.1849

Se construye el polinomio con los datos de la primera fila:

p(t) = -80.0108 +208.0135 (t - 1) - 52.6834(t - 1)(t - 1.4) -293.3978(t - 1)(t - 1.4)(t - 1.8)

literal b. verificar polinomio

Se puede verificar de dos formas: probando los puntos o con la gráfica del algoritmo. La forma de escritura del polinomio hace cero algunos términos.

p(1.4) = -80.0108+208.0135 ((1.4) - 1) - 52.6834((1.4) - 1)((1.4) - 1.4) -293.3978((1.4) - 1)((1.4) - 1.4)((1.4) - 1.8) = 3.1846 p(1.8) = -80.0108+208.0135 ((1.8) - 1) - 52.6834((1.8) - 1)(t - 1.4) -293.3978((1.8) - 1)((1.8) - 1.4)((1.8) - 1.8) =69.5413

La gráfica del algoritmo muestra que el polinomio pasa por todos los puntos.

Trayectoria Caida Interpola grafliteral c. error en polinomio

El punto de la tabla que no se usó es t = 1.2, que al evaluar en el polinomio se obtiene:

p(1.2) = -80.0108+ 208.0135 ((1.2) - 1) - 52.6834((1.2) - 1)((1.2) - 1.4) -293.3978((1.2) - 1)((1.2) - 1.4)((1.2) - 1.8) = -43.3423 errado = |-43.3423 -(-45.9965)| = 2.65

literal d. conclusiones y recomendaciones

Para el error  P(1.2). dado el orden de magnitud en el intervalo podría considerarse «bajo» e imperceptible al incorporarlo en la gráfica.

literal e. error en otro punto

El polinomio evaluado en t=1.65

p(1.65) = -80.0108 + 208.0135 ((1.65) - 1) - 52.6834((1.65) - 1)((1.65) - 1.4) -293.3978((1.65) - 1)((1.65) - 1.4)((1.65) - 1.8) = 53.7884

la fórmula para x(t) del tema 1

x(t) = 15.35 - 13.42 t+100e^{-0.12t} cos(2\pi (0.5) t + \pi / 8) x(1.65) = 15.35 - 13.42(1.65)+100e^{-0.12(1.65)} cos(2\pi (0.5) (1.65) + \pi / 8) = 55.5884 errado = |55.5884 -53.7884| = 1.79

resultados del algoritmo

Tabla Diferencia Dividida
[['i   ', 'xi  ', 'fi  ', 'F[1]', 'F[2]', 'F[3]', 'F[4]']]
[[   0.        1.      -80.0108  208.0135  -52.6834 -293.3978    0.    ]
 [   1.        1.4       3.1946  165.8667 -346.0812    0.        0.    ]
 [   2.        1.8      69.5413  -41.782     0.        0.        0.    ]
 [   3.        2.       61.1849    0.        0.        0.        0.    ]]
dDividida: 
[ 208.0135  -52.6834 -293.3978    0.    ]
polinomio: 
208.0135*t - 293.3978125*(t - 1.8)*(t - 1.4)*(t - 1.0) - 52.6834375000001*(t - 1.4)*(t - 1.0) - 288.0243
polinomio simplificado: 
-293.3978125*t**3 + 1179.587375*t**2 - 1343.7817375*t + 377.581375
>>> polinomio.subs(t,1.65)
53.7884880859375
>>> 15.35 - 13.42*(1.65)+100*np.exp(-0.12*(1.65))*np.cos(2*np.pi*(0.5)*(1.65) + np.pi/8)
55.588413032442766
>>> 55.5884 -53.7884
1.7999999999999972
>>>

las gráficas se muestran en los literales anteriores

# 1Eva_2024PAOII_T2 Interpolar x(t) en caída de cofia para t entre[1,2]
# Polinomio interpolación
# Diferencias Divididas de Newton
import numpy as np
import sympy as sym
import matplotlib.pyplot as plt

# INGRESO , Datos de prueba
xi = [1. , 1.4, 1.8, 2. ]
fi = [-80.0108, 3.1946,  69.5413,  61.1849]

##ti = [1. , 1.2, 1.4, 1.8, 2. ]
##xi = [-80.0108, -45.9965,   3.1946,  69.5413,  61.1849]
##yi = [ -8.3002, -22.6765, -20.9677,  15.8771,  33.8999]
##zi = [113.8356, 112.2475, 110.5523, 106.7938, 104.71 ]


# PROCEDIMIENTO
xi = np.array(xi,dtype=float)
fi = np.array(fi,dtype=float)

# Tabla de Diferencias Divididas
titulo = ['i   ','xi  ','fi  ']
n = len(xi)
ki = np.arange(0,n,1)
tabla = np.concatenate(([ki],[xi],[fi]),axis=0)
tabla = np.transpose(tabla)

# diferencias divididas vacia
dfinita = np.zeros(shape=(n,n),dtype=float)
tabla = np.concatenate((tabla,dfinita), axis=1)

# Calcula tabla, inicia en columna 3
[n,m] = np.shape(tabla)
diagonal = n-1
j = 3
while (j < m):
    # Añade título para cada columna
    titulo.append('F['+str(j-2)+']')

    # cada fila de columna
    i = 0
    paso = j-2 # inicia en 1
    while (i < diagonal):
        denominador = (xi[i+paso]-xi[i])
        numerador = tabla[i+1,j-1]-tabla[i,j-1]
        tabla[i,j] = numerador/denominador
        i = i+1
    diagonal = diagonal - 1
    j = j+1

# POLINOMIO con diferencias Divididas
# caso: puntos equidistantes en eje x
dDividida = tabla[0,3:]
n = len(dfinita)

# expresión del polinomio con Sympy
t = sym.Symbol('t')
polinomio = fi[0]
for j in range(1,n,1):
    factor = dDividida[j-1]
    termino = 1
    for k in range(0,j,1):
        termino = termino*(t-xi[k])
    polinomio = polinomio + termino*factor

# simplifica multiplicando entre (t-xi)
polisimple = polinomio.expand()

# polinomio para evaluacion numérica
px = sym.lambdify(t,polisimple)

# Puntos para la gráfica
muestras = 101
a = np.min(xi)
b = np.max(xi)
pxi = np.linspace(a,b,muestras)
pfi = px(pxi)

# SALIDA
np.set_printoptions(precision = 4)
print('Tabla Diferencia Dividida')
print([titulo])
print(tabla)
print('dDividida: ')
print(dDividida)
print('polinomio: ')
print(polinomio)
print('polinomio simplificado: ' )
print(polisimple)

# Gráfica
plt.plot(xi,fi,'o', label = 'Puntos')
plt.plot(pxi,pfi, label = 'Polinomio')

plt.xlabel('ti')
plt.ylabel('xi')
plt.grid()
plt.title('Polinomio de interpolación')

plt.plot(1.65,polinomio.subs(t,1.65),
         'o',color='red',label='p(1.65)')
plt.plot(1.2,polinomio.subs(t,1.2),
         'o',color='green',label='p(1.2)')
plt.legend()
plt.show()

 

1Eva_2024PAOII_T1 Capturar en el mar las cofias de cohetes

1ra Evaluación 2024-2025 PAO II. 19/Noviembre/2024

Tema 1 (35 puntos) Cada cohete lanzado al espacio por SpaceX tiene elementos que se desacoplan al ser consumidos durante el vuelo y lanzados al océano en una parte deshabitada y sin tránsito marítimo. Barco_red_capsula_paracaidas01a

Las cubiertas protectoras de carga útil o cofias tienen: un proceso de producción largo, complicado, con componentes de alta tecnología y costo aproximado 6 millones de dólares [1]. Las cofias son uno de los elementos que luego de cada lanzamiento vale la pena recuperar.

La primera idea  para recuperar las estructuras durante la caída con paracaídas, era usar un barco equipado con una gran red, que debía estimar el punto de caída antes de tocar el mar. La captura debía ser antes de tocar el agua salada para evitar daños en los tableros electrónicos por corrosión que los vuelven inútiles.

Suponga que la trayectoria de caída de las cofias con paracaídas se describen con las ecuaciones paramétricas mostradas. z(t) describe la altura en la trayectoria de caída que no es de más de 10 minutos desde desacople del cohete.

x(t) = 15.35 - 13.42 t+100e^{-0.12t} cos(2\pi (0.5) t + \pi / 8) y(t) = 22.45 - 6t + 50 e^{-0.2t} \sin(2\pi (0.52) t+ \pi / 6) z(t) = 120 + \frac{450}{60} t \Big(1-e^{-0.35t} \Big) - \frac{g}{2} t^2 + 0.012(7.5+gt)^2

Siendo t en minutos, g = 9.8(60*60/1000) = 35.28 Km/min2.Trayectoria Caida Cofia 3D

Las ecuaciones describen las distancias en los ejes x, y, z en Km

a. Plantear el ejercicio para encontrar el tiempo t cuando la cofia alcanza 30 metros (0.030 Km) sobre el nivel del mar (en z(t)), que considera la altura de la red en el barco para captura.

b. Muestre y verifique el intervalo de tiempo para la búsqueda [a,b].

c. Desarrolle al menos tres iteraciones usando el método del Punto Fijo, las expresiones deben ser completas en cada iteración, con los valores usados en cada una.

d. Indique y describa la tolerancia usada y el error en cada iteración

e. Describa si el método converge y de ser necesario observe los resultados de las iteraciones realizadas.

f. Opcional: Encuentre las coordenadas del punto de captura con el barco, muestre la gráfica de z(t), los resultados.txt con el algoritmo. Adjunte los archivos en aula virtual.

Rúbrica: literal a(5 puntos), literal b(5 puntos), literal c(15 puntos), literal d(5 puntos), literal e (5 puntos). literal f por considerar en calificación total.

Referencia: [1] SpaceX cambia de método para pescar cofias y es tan FÁCIL que a nadie se le había ocurrido. Control de Misión. 21 sept 2023. https://www.youtube.com/watch?v=42dCS-uosbI.

[2] La probabilidad de morir por escombros de un cohete será un problema en los próximos 10 años, y más si vives en CDMX. 13-julio-2022. Xataka. https://www.xataka.com.mx/espacio/probabilidad-morir-escombros-cohete-sera-problema-proximos-10-anos-cdmx-sera-uno-sitios-riesgo

Nota: Los literales indicados como “opcional”, son acorde a la disponibilidad de energía eléctrica durante la evaluación por asuntos presentados a nivel nacional, considerados en la calificación global

 

s1Eva_2024PAOII_T1 Capturar en el mar las cofias de cohetes

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 = 0

literal 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.509

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

Trayectoria Caida Cofia 3D_02

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

que 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.23

que 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.19

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

 

3Eva_2024PAOI_T3 Salto Bungee y método de Jacobi

3ra Evaluación 2024-2025 PAO I. 17/Septiembre/2024

Tema 3. (35 puntos) Para el salto del Bungee y la tabla del ejercicio del tema 2, realice el sistema de ecuaciones para el polinomio de interpolación usando los tiempos en el vector ts = [0, 0.75,1.375, 2.55]

datos usando h=1/8
ti vi
0 0.0000
0.25 2.4479
0.5 4.8849
0.75 7.3001
1 9.6832
1.375 13.1763
1.75 16.5451
2.125 19.7641
2.4 22.0193
2.55 23.2075
  1. Plantee el sistema de ecuaciones usando los cuatro puntos datos en el vector ts
  2. Presente el sistema de ecuaciones en su forma matricial y muestre la matriz aumentada y pivoteada
  3. Desarrolle el ejercicio usando el método de Jacobi, para tres iteraciones. Justifique el vector inicial X0
  4. Comente sobre la convergencia del ejercicio y adjunte los archivos para algoritmo.py y resultados.txt

Rúbrica: Planteamiento (5 puntos), Matriz aumentada y pivoteada (5 puntos), iteraciones(15 puntos), error por iteración (5 puntos), literal d (5 puntos)

3Eva_2024PAOI_T2 Salto Bungee interpolar velocidad primer tramo

3ra Evaluación 2024-2025 PAO I. 17/Septiembre/2024

Tema 2. (30 puntos) Bungee Jumping 02
Para el salto del Bungee del ejercicio del tema anterior se toman lecturas con un sensor de velocidad sujetado a la persona.

De la tabla de datos obtenida, se observa que los tamaños de paso en tiempo no siempre son equidistantes.
Se requiere encontrar un polinomio interpolación de al menos grado 3.

datos usando h=1/8
ti vi
0 0.0000
0.25 2.4479
0.5 4.8849
0.75 7.3001
1 9.6832
1.375 13.1763
1.75 16.5451
2.125 19.7641
2.4 22.0193
2.55 23.2075

a. Describa el planteamiento del ejercicio, selección de puntos, expresiones usando el método de Lagrange.

b. Resuelva el sistema usando los algoritmos correspondientes.

c. Presente el polinomio obtenido, simplificado y grafique verificando que P(x) pase por los puntos de muestra.

d. Use el resultado P(x) para estimar el error con los valores de vi que no fueron usados para la interpolación.

e. Adjunte los archivos para algoritmo.py, resultados.txt y grafica.png

Rúbrica: literal a (10 puntos), literal b (5 puntos), literal c (5 puntos), literal d (5 puntos), literal e (5 puntos)

Referencia: Chapra. capítulo 28. Ejercicio 28.41 p852.

3Eva_2024PAOI_T1 EDO Salto Bungee extiende y estira toda la cuerda

3ra Evaluación 2024-2025 PAO I. 17/Septiembre/2024

Tema 1. (35 puntos) Salto Bungee 01
La ecuación diferencial para la velocidad de alguien que practica el salto del bungee es diferente según si el saltador ha caído una distancia en la que la cuerda está extendida por completo y comienza a estirarse o encogerse.

Si la distancia recorrida es menor que la longitud de la cuerda, el saltador sólo está sujeto a las fuerzas gravitacional y de arrastre de la cuerda.

\frac{d^2y}{dt^2} = g - signo(v) \frac{C_d}{m}\Big( \frac{dy}{dt}\Big)^2 y \leq L

Salto Bungee 02Suponga que las condiciones iniciales son:

y(0) =0

\frac{dy(0)}{dt} = 0

Una vez que la cuerda comienza a estirarse, también deben incluirse las fuerzas del resorte y del amortiguamiento de la cuerda.

\frac{d^2y}{dt^2} = g - signo(v) \frac{C_d}{m}\Big( \frac{dy}{dt}\Big)^2 -\frac{k}{m}(y-L) - \frac{\gamma}{m}( \frac{dy}{dt}\Big) y \gt L
dy/dt m/s velocidad (v)
t s tiempo
g 9.8 m/s2 gravedad
cd 0.25 kg/m coeficiente de arrastre
m 68.1 Kg masa
L 30 m Longitud de la cuerda
k 40 N/m constante de resorte de la cuerda
γ 8 N s/m coeficiente de amortiguamiento de la cuerda
signo(v) función que devuelve –1, 0 y 1, para v negativa, cero y positiva, respectivamente

En conocimiento que la primera ecuación es válida solo hasta tc=2.55, L=30mts, v= 23.20752.
Encuentre el tiempo td cuando se alcanza la longitud MÁXIMA de la cuerda extendida y estirada por completo, es decir y>L, con velocidad = 0. (solo 2da ecuación)

a. Realice el planteamiento del ejercicio usando Runge-Kutta de 2do Orden

b. Desarrolle tres iteraciones para y(t) con tamaño de paso h=0.5

c. Usando el algoritmo, aproxime la solución para y en el intervalo entre [0,tc], adjunte sus resultados.txt

d. Indique el valor de td, muestre cómo mejorar la precisión y realice sus observaciones sobre los resultados.

Observación: dy/dt = v, función signo(v) en Numpy:np.sign(v)

Rúbrica: literal a (5 puntos), literal b (15 puntos), literal c resultados.txt y grafica.png (10 puntos), literal d (5 puntos),

Referencia: [1] Chapra. capítulo 28. Ejercicio 28.41 p852.

[2] Extreme Bungy Jumping with Cliff Jump Shenanigans! Play On in New Zealand! 4K! – devinsupertramp. 23 mar 2015.

 

2Eva_2024PAOI_T3 EDP Parabólica

2da Evaluación 2024-2025 PAO I. 28/Agosto/2024

Tema 3. (30 puntos)

Para la siguiente Ecuación Diferencial Parcial con b = 2, resuelva usando las condiciones mostradas

\frac{\partial ^2 u}{\partial x^2} = b \frac{\partial u}{\partial t}
0 < x < 1  0 < t < 0.5
Condiciones iniciales:  u(x,0)=0
Condiciones de frontera: u(0,t)=1
u(1,t)= 2

Utilice diferencias finitas centradas y hacia adelante para las variables independientes x,t

a. Plantee las ecuaciones para usar un método numérico en un nodo i,j

b. Realice la gráfica de malla,

c. Desarrolle y obtenga el modelo discreto para u(xi,tj)

d. Realice al menos tres iteraciones en el eje tiempo.

e. Estime el error de u(xi,tj) y adjunte los archivos del algoritmo y resultados.

Rúbrica: Aproximación de las derivadas parciales (5 puntos), construcción de la malla (5), desarrollo de iteraciones (15), literal e (5 puntos)

Referencia: EDP Parabólicas. Chapra & Canale. 5ta Ed. Ejercicio 30.15. P.904