Autor: Edison Del Rosario

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

    ti = [0,0.25,0.5,0.75,1,1.375,1.75,2.125,2.4,2.55]
    vi = [0,2.4479,4.8849,7.3001,9.6832,13.1763,
          16.5451,19.7641,22.0193,23.2075]
    
  • 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.

    ti = [0,0.25,0.5,0.75,1,1.375,1.75,2.125,2.4,2.55]
    vi = [0,2.4479,4.8849,7.3001,9.6832,13.1763,
          16.5451,19.7641,22.0193,23.2075]
  • 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

  • 2Eva_2024PAOI_T2 Salto Bungee longitud total de cuerda

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

    Tema 2. (40 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.

    2.1 De la tabla de datos obtenida, se observa que los tamaños de paso en tiempo no siempre son equidistantes.
    Se requiere encontrar la distancia recorrida en el intervalo de [0,2.55] usando fórmulas de integración compuestas.

    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

    2.2 Usando los datos de la tabla para el intervalo [2.55, 5.175] donde la velocidad de la caída de la persona al primer salto ha llegado a casi cero, o antes del primer rebote, se ha obtenido un polinomio de interpolación:

    v = -3.979t2 + 21.557t – 5.3997

    Obtenga la distancia recorrida en el segundo intervalo usando el método de Cuadratura de Gauss.

    a. Realice el planteamiento de las ecuaciones para cada sección del ejercicio.

    b. Describa el criterio usado para determinar el número de tramos usado en cada caso.

    c. Desarrolle las expresiones completas del ejercicio para cada sección.

    d. Encuentre la distancia total (profundidad) alcanzada por la persona al dar el salto.

    Rúbrica: literal a 2.1 (5 puntos), a 2.2 (5 puntos) literal b (5 puntos), literal c 2.1 (10 puntos), c 2.2 (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.