Autor: Edison Del Rosario

  • s1Eva_2021PAOII_T3 Nutrientes en asociación de cultivos

    Ejercicio: 1Eva_2021PAOII_T3 Nutrientes en asociación de cultivos

    a. Realice el planteamiento del sistema de ecuaciones, presente en la forma Ax=B.

    Las variables del ejercicio corresponden al consumo de nutrientes:

    a = consumo de nutrientes planta de plátano
    b = consumo de nutrientes planta de café
    c = consumo de nutrientes planta de cacao

    que generan las siguientes expresiones de consumo segun la tabla del ejercicio:

    \begin{cases} 40a+110b+310c = 750 \\ 400a+15b+25c = 445 \\ 200a+560b+310c = 10 \end{cases}

    que en forma A.x=B:

    \begin{bmatrix} 40 && 110 && 310 \\ 400 && 15 && 25 \\ 200 && 560 && 310 \end{bmatrix}.\begin{bmatrix} a \\ b \\ c \end{bmatrix}=\begin{bmatrix} 750 \\ 445 \\ 10 \end{bmatrix}

    b. De ser necesario, realice operaciones con la matriz aumentada para mejorar la convergencia con un método iterativo.

    \begin{bmatrix} 40 && 110 && 310 && 750\\ 400 && 15 && 25 && 445\\ 200 && 560 && 310 &&10\end{bmatrix}

    aplicando pivoteo parcial por filas

    \begin{bmatrix} 400 && 15 && 25 && 445 \\ 200 && 560 && 310 &&10\\ 40 && 110 && 310 && 750\end{bmatrix}

    c. En el contexto del problema, proponga un vector inicial y tolerancia.

    el vector inicial no se usa con ceros, un suelo sin nutrientes no es útil para un cultivo, el vector de unos puede considerarse una opción. Otra opción es consultar con los agricultores para disponer de valores iniciales.

    [1,1,1]

    la toreleancia podría ser de 0.001 si consideramos que los nutrientes estan dados en kilogramos, la tolerancia sería en gramos.

    d. Realice 3 iteraciones con el método de Gauss-Seidel y estime el error (papel y lápiz)

    las ecuaciones para el método iterativo serán

    \begin{bmatrix} 400 && 15 && 25 && 445 \\ 200 && 560 && 310 &&10\\ 40 && 110 && 310 && 750\end{bmatrix} a = \frac{445- 15 b - 25 c}{400} b = \frac{10- 200 a - 310 c}{560} c = \frac{750- 40 a -110 c}{400}

    iteración 1

    a = \frac{445- 15 (1) - 25 (1)}{400} = 1.0125 b = \frac{10- 200 (1.0125) - 310 (1)}{560}= -0.8973 c = \frac{750- 40 (1.0125) -110 (-0.8973)}{400} = 2.6071 error_a = |1.0125-1| = 0.0125 error_b = |-0.89736-1| = 1.8973 error_c =|2.6071-1| = 1.6071

    error_iteración = max| [0.0125, 1.8973, 1.6071]| =1.8973

    iteración 2 y 3 se deja como tarea:

    Resultados:

    respuesta X: 
    [[ 0.99999468]
     [-1.99993467]
     [ 2.9999775 ]]
    verificar A.X=B: 
    [[444.99829063]
     [ 10.02854772]
     [750.        ]]
    >>> 
    

    e. Describa y justifique su observación sobre la convergencia del método y estime una descripción de los resultados.
    El resultado muestra que el consumo de la planta b (café) es negativo, puede interpretarse como un error de datos por revisar o se interpreta como si la planta aporta nutrientes al suelo.

  • s1Eva_2021PAOII_T2 Intersección de funciones – Obstrucción Radioenlace

    Ejercicio: 1Eva_2021PAOII_T2 Intersección de funciones – Obstrucción Radioenlace

    Planteamiento del ejercicio

    Para analizar la obstrucción se usan las expresiones del polinomio encontrado en el tema anterior y la función descrita en el enunciado. Se debe encontrar las distrancias en las que ambas expresiones son iguales, o también:

    p(d)- f(d) = 0

    a. Establezca un intervalo de análisis para cada raíz.

    Según la gráfica presentada en el Tema 1 se tendrán que encontrar dos raíces:

    [0,700]  y [700,1300]

    La expresión a usar en el ejercicio se obtiene como:

    p_{3}(d) = 85.0+ 0.05941 d - 0.0001015 d^2 +3.842x10^{-8}d^3

    y para el radio de fresnel:

    f(d) = h_{antena} - r r = \sqrt{\frac{n \lambda d_1 d_2}{d_1+d_2}} d_2 = d_{enlace} - d_1

    reemplazando los valores en las expresiones

    f(d) = 100 - \sqrt{\frac{1 (0.3278 d_1 (3700-d_1}{3700}}

    La expresión para el ejercicio en el intervalo de obstrucción según la gráfica del tema 1 es:

    g(d) = p(d)- f(d) = 0 g(d) = 85.0+ 0.05941 d - 0.0001015 d^2 +3.842x10^{-8}d^3 - - 100 - \sqrt{\frac{1 (0.3278 d_1 (3700-d_1}{3700}}

    Dado que es un ejercicio que se utiliza muchas veces en el análisis de radioenlaces, se utilizaría un algoritmo para aplicarlo en diferentes situaciones.


    b. Realice al menos 3 iteraciones con el método de la Bisección para encontrar la primera raíz (izquierda)

    a = 0, b = 700

    con a = 0

    g(0) = p(0)- f(0) = -15 p(0) = 85.0+ 0.05941 (0) - 0.0001015 (0)^2 +3.842x10^{-8}(0)^3 = 85 f(d) = 100 - \sqrt{\frac{1 (0.3278 d_1 (3700-d_1}{3700}} =100

    con b = 700

    g(700) = p(700)- f(700) = 3.67 p(700) = 85.0+ 0.05941 (700) - 0.0001015 (700)^2 +3.842x10^{-8}(700)^3 f(700) = 100 - \sqrt{\frac{1 (0.3278 (700) (3700-(700)}{3700}}

    como hay cambio de signo entre g(a) y g(b), debe existir una raiz en el intervalo

    iteración  1

    c= \frac{a+b}{2} = \frac{700-0}{2} = 350 p(350) = 85.0+ 0.05941 (350) - 0.0001015 (350)^2 +3.842x10^{-8}(350)^3 f(350) = 100 - \sqrt{\frac{1 (0.3278 (350) (3700-(350}{3700}} g(350) = p(350)- f(350) = 5.199

    como la referencia es

    g(0) = -15 g(700) = 3.67

    hay cambio de signo entre [0,350]

    error estimado = 350-0 = 350

    iteración  2

    c= \frac{a+b}{2} = \frac{350-0}{2} = 175 p(175) = 85.0+ 0.05941 (175) - 0.0001015 (175)^2 +3.842x10^{-8}(175)^3 f(175) = 100 - \sqrt{\frac{1 (0.3278 (175) (3700-(175}{3700}} g(175) = -113.1

    como la referencia es

    g(0) = -15 g(350) = 5.199

    hay cambio de signo entre [175,350]

    error estimado = 350-175 = 175

    iteración  3

    c= \frac{a+b}{2} = \frac{175-350}{2} = 262.5 p(262.5) = 85.0+ 0.05941 (262.5) - 0.0001015 (262.5)^2 +3.842x10^{-8}(262.5)^3 f(262.5) = 100 - \sqrt{\frac{1 (0.3278 (262.5) (3700-(262.5}{3700}} g(262.5) = 3.23

    Instrucciones en Python

    resultado usando el algoritmo:

    [ i, a, c, b, f(a), f(c), f(b), tramo]
    1 0.000 350.000 700.000 -15.000 5.199 3.670 700.000 
    2 0.000 175.000 350.000 -15.000 -0.113 5.199 350.000 
    3 175.000 262.500 350.000 -0.113 3.237 5.199 175.000 
    4 175.000 218.750 262.500 -0.113 1.755 3.237 87.500 
    5 175.000 196.875 218.750 -0.113 0.872 1.755 43.750 
    6 175.000 185.938 196.875 -0.113 0.393 0.872 21.875 
    7 175.000 180.469 185.938 -0.113 0.143 0.393 10.938 
    8 175.000 177.734 180.469 -0.113 0.016 0.143 5.469 
    9 175.000 176.367 177.734 -0.113 -0.048 0.016 2.734 
    10 176.367 177.051 177.734 -0.048 -0.016 0.016 1.367 
    11 177.051 177.393 177.734 -0.016 -0.000 0.016 0.684 
    12 177.393 177.563 177.734 -0.000 0.008 0.016 0.342 
    13 177.393 177.478 177.563 -0.000 0.004 0.008 0.171 
    14 177.393 177.435 177.478 -0.000 0.002 0.004 0.085 
    15 177.393 177.414 177.435 -0.000 0.001 0.002 0.043 
    16 177.393 177.403 177.414 -0.000 0.000 0.001 0.021 
    17 177.393 177.398 177.403 -0.000 0.000 0.000 0.011 
    18 177.393 177.395 177.398 -0.000 -0.000 0.000 0.005 
    19 177.395 177.397 177.398 -0.000 0.000 0.000 0.003 
    20 177.395 177.396 177.397 -0.000 0.000 0.000 0.001 
    21 177.395 177.396 177.396 -0.000 0.000 0.000 0.001 
    raiz:  177.39558219909668
           raiz en:  177.39558219909668
    error en tramo:  0.000667572021484375
    
    # Algoritmo de Bisección
    # [a,b] se escogen de la gráfica de la función
    # error = tolera
    
    import numpy as np
    import matplotlib.pyplot as plt
    
    # INGRESO
    p = lambda d: 85.0 + 0.05941*d - 0.0001015*d**2 +3.842e-8*d**3
    f = lambda d: 100 - np.sqrt(1*(0.3278)*d*(3700-d)/3700) 
    fx = lambda d: p(d)- f(d)
    a_todo = 0
    b_todo = 1300
    a = 0
    b = 700
    tolera = 0.001
    
    muestras = 41
    
    # PROCEDIMIENTO
    # PROCEDIMIENTO
    tabla = []
    tramo = b-a
    
    fa = fx(a)
    fb = fx(b)
    i = 1
    while (tramo>tolera):
        c = (a+b)/2
        fc = fx(c)
        tabla.append([i,a,c,b,fa,fc,fb,tramo])
        i = i + 1
                     
        cambia = np.sign(fa)*np.sign(fc)
        if (cambia<0):
            b = c
            fb = fc
        else:
            a=c
            fa = fc
        tramo = b-a
    c = (a+b)/2
    fc = fx(c)
    tabla.append([i,a,c,b,fa,fc,fb,tramo])
    tabla = np.array(tabla)
    
    raiz = c
    
    # SALIDA
    np.set_printoptions(precision = 4)
    print('[ i, a, c, b, f(a), f(c), f(b), tramo]')
    # print(tabla)
    
    # Tabla con formato
    n=len(tabla)
    for i in range(0,n,1):
        unafila = tabla[i]
        formato = '{:.0f}'+' '+(len(unafila)-1)*'{:.3f} '
        unafila = formato.format(*unafila)
        print(unafila)
        
    print('raiz: ',raiz)
    print('       raiz en: ', c)
    print('error en tramo: ', tramo)
    
    
    # GRAFICA
    xi = np.linspace(a_todo,b_todo,muestras)
    yi = fx(xi)
    pi = p(xi)
    ri = f(xi)
    plt.plot(xi,yi,label='g(d)=p(d)-f(d)')
    plt.plot(xi,pi,label='p(d)')
    plt.plot(xi,ri,label='f(d)_Fresnel')
    plt.axhline(0, color='grey')
    plt.xlabel('d')
    plt.legend()
    plt.title('obstruccion Fresnel')
    plt.show()
    

    c. Desarrolle al menos 3 iteraciones con el método del Punto fijo para encontrar el segundo punto (derecha)

    La siguiente raíz se encuentra con algoritmo presentado o también con el algoritmo del siguiente literal usando la misma expresion g(d).

    a = 700 b= 1300

     raiz en: 867.1000480651855
    error en tramo: 0.00057220458984375
  • s1Eva_2021PAOII_T1 Interpolación para perfil de terreno

    Ejercicio: 1Eva_2021PAOII_T1 Interpolación para perfil de terreno

    a. Plantee y desarrolle un polinomio P3(d1) de grado 3, que describa el perfil del terreno en el intervalo [0,1300] de distancias a la primera antena d1.

    Para plantear el ejercicio, se observan los punto en el intervalo [0,1300], asi como los tamaños de paso.

    Perfil Terreno 01

    Como el polinomio es de grado 3,se requiere 3 tramos o 4 muestras, el intervalo presenta 5. Para incluir el punto de inicio, fin y máximo, las muestras seleccionadas son las que se muestran en la tabla siguiente:

    Δd1 distancia d1 Perfil de Terreno DifDiv1 DifDiv2 DifDiv3
    350 0 85 DifDiv11 = 0.02857 DifDiv12 = -6.122E-05 DifDiv13 =  -1.123E-05
    350 350 95 DifDiv21 = -0.01428 DifDiv22 = -1.127E-05
    600 700 90 DifDiv31 =
    -0.025
    1300 75

    Los tamaños de paso, Δd1, son diferentes, por lo que se pueden usar el método de diferencias divididas de Newton o el Método de Lagrange.

    Usando diferencias divididas de Newton, se completa la tabla con las expresiones:

    DifDiv_{11} = \frac{95-85}{350-0} = 0.02857143 DifDiv_{21} = \frac{90-95}{700-350} = -0.01428 DifDiv_{31} = \frac{75-90}{1300-700} =-0.025 DifDiv_{12} = \frac{-0.01428-0.02857}{700-0} = -6.122E-05 DifDiv_{22} = \frac{-0.025-(-0.01428)}{1300-350} = -1.127E-05 DifDiv_{13} = \frac{(-1.127E-05) -(6.122E-05)}{1300-0} = 1.123E-05

    con lo que se puede construir el polinomio

    p_{3}(d) = 85 + 0.02857(d-0)+(-6.122E5)(d-0)(d-350)+ -(1.123E-5)(d-0)(d-350)(d-700)

    simplificando el polinomio se obtiene:

    p_{3}(d) = 85.0+ 0.05941 d - 0.0001015 d^2 +(3.842E-8)d^3

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

    El valor no usado que estaba en el intervalo es d=1000, que se evalúa en p3(d) y se compara con el valor muestreado para ver el error del modelo

    p_{3}(1000) = 85.0+ 0.05941 (1000) - 0.0001015 (1000)^2 +(3.842E-8)(1000)^3 p_{3}(1000) = 81.26 Error = |81.26 - 80| = 1.26

    encontrando que el error es de 1.26m de altitud del terreno a los 1000m de distancia desde la referencia a la izquierda.

    c. Desarrolle y justifique una propuesta para disminuir los errores encontrados en el literal anterior, sobre el mismo intervalo, es decir obtiene un nuevo polinomio (use algoritmo).

    En caso de requerir una mayor precisión, se puede aumentar el grado del polinomio al incluir el punto d=1000 no usado en el paso anterior.

    Usando el algoritmo con Python se obtiene:

    Tabla Diferencia Dividida
    [['i   ', 'xi  ', 'fi  ', 'F[1]', 'F[2]', 'F[3]', 'F[4]', 'F[5]']]
    [[ 0.0000e+00  0.0000e+00  8.5000e+01  2.8571e-02 -6.1224e-05  3.1920e-08  2.1666e-11  0.0000e+00]
     [ 1.0000e+00  3.5000e+02  9.5000e+01 -1.4286e-02 -2.9304e-05  6.0086e-08  0.0000e+00  0.0000e+00]
     [ 2.0000e+00  7.0000e+02  9.0000e+01 -3.3333e-02  2.7778e-05  0.0000e+00  0.0000e+00  0.0000e+00]
     [ 3.0000e+00  1.0000e+03  8.0000e+01 -1.6667e-02  0.0000e+00  0.0000e+00  0.0000e+00  0.0000e+00]
     [ 4.0000e+00  1.3000e+03  7.5000e+01  0.0000e+00  0.0000e+00  0.0000e+00  0.0000e+00  0.0000e+00]]
    dDividida: 
    [ 2.8571e-02 -6.1224e-05  3.1920e-08  2.1666e-11  0.0000e+00]
    polinomio: 
    2.16658863275405e-11*x*(x - 1000.0)*(x - 700.0)*(x - 350.0) + 3.19204604918891e-8*x*(x - 700.0)*(x - 350.0) - 6.12244897959184e-5*x*(x - 350.0) + 0.0285714285714286*x + 85.0
    polinomio simplificado: 
    2.16658863275405e-11*x**4 - 1.24946064795689e-8*x**3 - 6.6683650518237e-5*x**2 + 0.0525123706702654*x + 85.0
    

    junto a la gráfica:

    Perfil Terreno 02

    d. Escriba sus conclusiones y recomendaciones sobre los resultados obtenidos entre los dos polinomios.

    Dado que el error se considera mínimo en el intervalo, y el coeficiente del polinomio para x4 es del orden de 10-11 se recomendaría usar el polinomio de grado 3.


    Instrucciones en Python

    # Polinomio interpolación
    # Diferencias Divididas de Newton
    # Tarea: Verificar tamaño de vectores,
    #        verificar puntos equidistantes en x
    import numpy as np
    import sympy as sym
    import matplotlib.pyplot as plt
    
    # INGRESO , Datos de prueba
    xi = np.array([0.0,350,700,1000,1300])
    fi = np.array([85.0,95,90,80,75])
    
    # PROCEDIMIENTO
    
    # Tabla de Diferencias Divididas Avanzadas
    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
    x = sym.Symbol('x')
    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*(x-xi[k])
        polinomio = polinomio + termino*factor
    
    # simplifica multiplicando entre (x-xi)
    polisimple = polinomio.expand()
    
    # polinomio para evaluacion numérica
    px = sym.lambdify(x,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')
    ##for i in range(0,n,1):
    ##    plt.axvline(xi[i],ls='--', color='yellow')
    plt.plot(pxi,pfi, label = 'Polinomio')
    plt.legend()
    plt.xlabel('xi')
    plt.ylabel('fi')
    plt.title('Diferencias Divididas - Newton')
    plt.show()
    
  • 1Eva_2021PAOII_T3 Nutrientes en asociación de cultivos

    1ra Evaluación 2021-2022 PAO II. 24/Noviembre/2021

    Tema 3. (40 puntos) La asociación de cultivos es la siembra de dos o más especies vegetales muy próximas entre sí, de tal manera que una o ambas pueden obtener tales como la mejora de la productividad, control de plagas, la prevención de enfermedades o adquirir un mejor sabor.

    nutrientes en asociación de cultivosLos beneficios se obtienen a través de la absorción de nutrientes o de cambios en el medio ambiente.

    Una forma de medir la absorción de un nutriente de cada especie por ciclo de cultivo es cambiar la cantidad de especies vegetales en distintas parcelas. La diferencia de un nutriente entre el fin e inicio del cultivo se encuentra mostrada en la siguiente tabla.

    plátano café cacao Absorción de nutriente
    40 110 310 750
    400 15 25 445
    200 560 310 10

    a. Realice el planteamiento del sistema de ecuaciones, presente en la forma Ax=B.

    b. De ser necesario, realice operaciones con la matriz aumentada para mejorar la convergencia con un método iterativo.

    c. En el contexto del problema, proponga un vector inicial y tolerancia.

    d. Realice 3 iteraciones con el método de Gauss-Seidel y estime el error (papel y lápiz)

    e. Describa y justifique su observación sobre la convergencia del método y estime una descripción de los resultados.

    Rúbrica: literal a (5 puntos), literal b (5 puntos), literal c (5 puntos), iteraciones (15 puntos) cálculo de error(5 puntos), literal d(5 puntos)

    Referencia: Asociación de cultivos https://huertocity.com/index.php/asociacion-de-cultivos/
    Tabla Asociación de cultivos: 12 ejemplos, importancia. https://ingenieriaambiental.net/asociacion-de-cultivos/

     

  • 1Eva_2021PAOII_T2 Intersección de funciones - Obstrucción Radioenlace

    1ra Evaluación 2021-2022 PAO II. 24/Noviembre/2021

    Tema 2. (30 puntos) En un enlace radioeléctrico, se denomina “Zona de Fresnel” al espacio entre un emisor y receptor debe estar libre para minimizar atenuaciones a la onda de propagación.

    Una obstrucción es una parte del perfil del terreno que se encuentra dentro de la Zona de Fresnel. El perfil del terreno es la expresión del polinomio del tema anterior P3(d1) en el intervalo [0,1300].

    Cuando las antenas del transmisor y receptor se encuentran a la misma altura, la parte inferior del lóbulo, f(d1), se determina a partir de las siguientes fórmulas:

    formulas de enlace zona fresnelConsidere los valores de las constantes hantena= 100 m, n =1, λ=0.3278, denlace=3700 m

    Para analizar la obstrucción, se debe determinar los puntos de intersección entre P3(d1) y f(d1)

    a. Establezca un intervalo de análisis para cada raíz.

    b. Realice al menos 3 iteraciones con el método de la Bisección para encontrar la primera raíz (izquierda)

    c. Desarrolle al menos 3 iteraciones con el método del Punto fijo para encontrar el segundo punto (derecha)

    d. Realice al menos 3 iteraciones con el método de Newton-Raphson para determinar la altura del perfil que genera el mayor obstáculo dentro del intervalo (altura máxima).

    Rúbrica: literal a (4 puntos), literal b (10 puntos), literal c (10 puntos), literal d (6 puntos)

    Referencia: Zona de Fresnel, https://youtu.be/v371pPLdf_c

  • 1Eva_2021PAOII_T1 Interpolación para perfil de terreno

    1ra Evaluación 2021-2022 PAO II. 24/Noviembre/2021

    Tema 1. (30 puntos) Para el diseño de los enlaces radioeléctricos “punto a punto” se analiza “Zona de Fresnel” que para una buena propagación de señal debe estar libre de obstrucciones.

    La altura o perfil del terreno muestra la sección que produce atenuación en la señal del enlace.

    Enlace Zona Fresnel 01

    La tabla muestra el perfil para un enlace donde se requiere analizar el intervalo entre 0 y 1300 metros desde la antena ubicada en el extremo izquierdo.

    distancia d1 0 350 700 1000 1300 1600 2000 3000 3300 3500 3700
    Perfil de Terreno 85 95 90 80 75 70 20 25 42 21 71

    a. Plantee y desarrolle un polinomio P3(d1) de grado 3, que describa el perfil del terreno en el intervalo [0,1300] de distancias a la primera antena d1.
    b. Calcule el error sobre el o los datos que no se usaron en el intervalo
    c. Desarrolle y justifique una propuesta para disminuir los errores encontrados en el literal anterior, sobre el mismo intervalo, es decir obtiene un nuevo polinomio (use algoritmo).
    d. Escriba sus conclusiones y recomendaciones sobre los resultados obtenidos entre los dos polinomios.

    Rúbrica: literal a (10 puntos), literal b (4 puntos), literal c (10 puntos), literal d (6 puntos)

    Referencia: Zona de Fresnel. https://es.wikipedia.org/wiki/Zona_de_Fresnel

  • s3Eva_2021PAOI_T3 EDO Respuesta a entrada cero en un sistema LTIC

    Ejercicio: 3Eva_2021PAOI_T3 EDO Respuesta a entrada cero en un sistema LTIC

    la ecuación a resolver es:

    \frac{\delta^2 y(t)}{\delta t^2}+3 \frac{\delta y(t)}{ \delta t}+2 y(t) =0

    con valores iniciales: y0(t)=0 , y’0(t) =-5

    se puede escribir como:

    y"+3 y'+2y = 0 y" = -3y'-2y

    sutituyendo las expresiones de las derivadas como las funciones f(x) por z y g(x) por z':

    y' = z = f(x)

    y'' = z'= -3z-2y = g(x)

    Los valores iniciales de t0=0, y0=0, z0=-5 se usan en el algoritmo.

    En este caso también se requiere conocer un intervalo de tiempo a observar [0,tn=6] y definir el tamaño de paso o resolución del resultado

    h = \delta t = \frac{b-a}{n} = \frac{6-0}{60} = 0.1

    t0 = 0, y0 = 0,  y’0 = z0 = -5

    iteración 1

    K1y = h * f(ti,yi,zi) = 0.1 (-5) = -0.5

    K1z = h * g(ti,yi,zi) ) = 0.1*(-3(-5)-2(0)) = 1.5

    K2y = h * f(ti+h, yi + K1y, zi + K1z) = 0.1(-5+1.5) = -0.35

    K2z = h * g(ti+h, yi + K1y, zi + K1z) = 0.1 ( -3(-5+1.5) - 2(0-0.5)) = 1.15

    yi = yi + (K1y+K2y)/2 =0+(-0.5-0.35)/2=-0.425

    zi = zi + (K1z+K2z)/2 = -5+(1.5+1.15)/2 = -3.675

    ti = ti + h = 0+0.1 = 0.1

    iteración 2

    K1y = 0.1 (-3.675) = -0.3675

    K1z = 0.1*(-3(-3.675)-2(-0.425)) = 1.1875

    K2y = 0.1(-3.675+ 1.1875) = -0.24875

    K2z = 0.1 ( -3(-3.675+ 1.1875) - 2(-0.425-0.3675)) = 0.90475

    yi = -0.425+(-0.3675-0.24875)/2=-0.7331

    zi = -3.675+( 1.1875+0.90475)/2 = -2.6288

    ti =0.1+0.1 = 0.2

    iteración 3

    continuar como ejercicio

    El algoritmo permite obtener la gráfica y la tabla de datos.

    los valores de las iteraciones son:

    t, y, z
    [[ 0.        0.       -5.      ]
     [ 0.1      -0.425    -3.675   ]
     [ 0.2      -0.733125 -2.628875]
     [ 0.3      -0.949248 -1.807592]
     [ 0.4      -1.093401 -1.167208]
     [ 0.5      -1.18168  -0.67202 ]
     [ 0.6      -1.226984 -0.293049]
     [ 0.7      -1.239624 -0.006804]
     [ 0.8      -1.227806  0.205735]
     [ 0.9      -1.19804   0.359943]
     [ 1.       -1.155465  0.468225]
     [ 1.1      -1.104111  0.540574]
     [ 1.2      -1.047121  0.585021]
     [ 1.3      -0.986923  0.608001]
     [ 1.4      -0.925374  0.614658]
     [ 1.5      -0.863874  0.609087]
     [ 1.6      -0.803463  0.594537]
     [ 1.7      -0.744893  0.573574]
     [ 1.8      -0.68869   0.548208]
     [ 1.9      -0.635205  0.520011]
     [ 2.       -0.584652  0.490193]
     [ 2.1      -0.53714   0.459683]
     [ 2.2      -0.492695  0.42918 ]
     [ 2.3      -0.451288  0.399206]
     [ 2.4      -0.412843  0.370135]
     [ 2.5      -0.377253  0.342233]
     [ 2.6      -0.34439   0.315674]
     [ 2.7      -0.314114  0.290567]
     [ 2.8      -0.286275  0.266966]
     [ 2.9      -0.26072   0.244887]
     [ 3.       -0.237297  0.224314]
     [ 3.1      -0.215858  0.205211]
     [ 3.2      -0.196256  0.187526]
     [ 3.3      -0.178354  0.171195]
     [ 3.4      -0.162019  0.156149]
     [ 3.5      -0.147126  0.142312]
     [ 3.6      -0.133558  0.129611]
     [ 3.7      -0.121206  0.117969]
     [ 3.8      -0.109966  0.107312]
     [ 3.9      -0.099745  0.097569]
     [ 4.       -0.090454  0.08867 ]
     [ 4.1      -0.082013  0.080549]
     [ 4.2      -0.074346  0.073146]
     [ 4.3      -0.067385  0.066401]
     [ 4.4      -0.061067  0.06026 ]
     [ 4.5      -0.055334  0.054673]
     [ 4.6      -0.050134  0.049591]
     [ 4.7      -0.045417  0.044972]
     [ 4.8      -0.04114   0.040776]
     [ 4.9      -0.037263  0.036964]
     [ 5.       -0.033748  0.033503]
     [ 5.1      -0.030563  0.030362]
     [ 5.2      -0.027677  0.027512]
     [ 5.3      -0.025062  0.024926]
     [ 5.4      -0.022692  0.022581]
     [ 5.5      -0.020546  0.020455]
     [ 5.6      -0.018602  0.018527]
     [ 5.7      -0.016841  0.01678 ]
     [ 5.8      -0.015246  0.015196]
     [ 5.9      -0.013802  0.013761]
     [ 6.       -0.012494  0.012461]]
    

    Instrucciones en Python

    # Respuesta a entrada cero
    # solucion para (D^2+ D + 1)y = 0
    import numpy as np
    import matplotlib.pyplot as plt
    
    def rungekutta2_fg(f,g,x0,y0,z0,h,muestras):
        tamano = muestras + 1
        estimado = np.zeros(shape=(tamano,3),dtype=float)
        # incluye el punto [x0,y0]
        estimado[0] = [x0,y0,z0]
        xi = x0
        yi = y0
        zi = z0
        for i in range(1,tamano,1):
            K1y = h * f(xi,yi,zi)
            K1z = h * g(xi,yi,zi)
            
            K2y = h * f(xi+h, yi + K1y, zi + K1z)
            K2z = h * g(xi+h, yi + K1y, zi + K1z)
    
            yi = yi + (K1y+K2y)/2
            zi = zi + (K1z+K2z)/2
            xi = xi + h
            
            estimado[i] = [xi,yi,zi]
        return(estimado)
    
    # PROGRAMA
    f = lambda t,y,z: z
    g = lambda t,y,z: -3*z -2*y
    
    t0 = 0
    y0 = 0
    z0 = -5
    
    h = 0.1
    tn = 6
    muestras = int((tn-t0)/h)
    
    tabla = rungekutta2_fg(f,g,t0,y0,z0,h,muestras)
    ti = tabla[:,0]
    yi = tabla[:,1]
    zi = tabla[:,2]
    
    # SALIDA
    np.set_printoptions(precision=6)
    print('t, y, z')
    print(tabla)
    
    # GRAFICA
    plt.plot(ti,yi, label='y(t)')
    
    plt.ylabel('y(t)')
    plt.xlabel('t')
    plt.title('Runge-Kutta 2do Orden d2y/dx2 ')
    plt.legend()
    plt.grid()
    plt.show()
    
  • s3Eva_2021PAOI_T2 Tensiones mínimas en cables por carga variable

    Ejercicio: 3Eva_2021PAOI_T2 Tensiones mínimas en cables por carga variable

    El ejercicio usa el resultado del tema anterior, planteando una función de Python como la solución para valores dados. Se requiere una función, para disponer de los valores solución en cada llamada para el intervalo de análisis.

    Por lo que básicamente lo que se pide es usar algún algoritmo de búsqueda de raíces. Para simplicidad en la explicación se toma el algoritmo de la bisección.

    Los resultados se grafican como theta vs Tensiones, y el punto a buscar es cuando las tensiones en los cables son de igual magnitud, es decir:

    TCA = TCB

    Resultando en :

    Resultado: [TCA, TCB], diferencia
    [array([3.46965006e-14, 4.00000000e+02]), -399.99999999999994]
    tetha, TCA, TCB
    [[-2.61799388e-01  3.46965006e-14  4.00000000e+02]
     [-1.74532925e-01  3.70996817e+01  3.85789041e+02]
     [-8.72664626e-02  7.39170124e+01  3.68641994e+02]
     [ 8.32667268e-17  1.10171790e+02  3.48689359e+02]
     [ 8.72664626e-02  1.45588094e+02  3.26082988e+02]
     [ 1.74532925e-01  1.79896384e+02  3.00994928e+02]
     [ 2.61799388e-01  2.12835554e+02  2.73616115e+02]
     [ 3.49065850e-01  2.44154918e+02  2.44154918e+02]
     [ 4.36332313e-01  2.73616115e+02  2.12835554e+02]
     [ 5.23598776e-01  3.00994928e+02  1.79896384e+02]
     [ 6.10865238e-01  3.26082988e+02  1.45588094e+02]
     [ 6.98131701e-01  3.48689359e+02  1.10171790e+02]
     [ 7.85398163e-01  3.68641994e+02  7.39170124e+01]
     [ 8.72664626e-01  3.85789041e+02  3.70996817e+01]]
           raiz en:  0.34898062924398343 radianes
           raiz en:  19.995117187500004 grados
    error en tramo:  8.522115488257542e-05
    >>> 
    

    Instrucciones en Python

    se añaden las instrucciones de la bisección al algoritmo del tema anterior, para encontrar el punto de intersección,

    import numpy as np
    import matplotlib.pyplot as plt
    
    # Tema 1
    def funcion(P,theta,alfa,beta):
        # ecuaciones
        A = np.array([[np.cos(alfa), -np.cos(beta)],
                      [np.sin(alfa),  np.sin(beta)]])
        B = np.array([P*np.sin(theta), P*np.cos(theta)])
    
        # usar un algoritmo directo
        X = np.linalg.solve(A,B)
        
        diferencia = X[0]-X[1]
        return([X,diferencia])    
    
    # INGRESO
    alfa = np.radians(35)
    beta = np.radians(75)
    P = 400
    
    # PROCEDIMIENTO
    theta = beta-np.radians(90)
    resultado = funcion(P,theta,alfa, beta)
    
    # SALIDA
    print("Resultado: [TCA, TCB], diferencia")
    print(resultado)
    
    # Tema 1b --------------
    # PROCEDIMIENTO
    dtheta = np.radians(5)
    theta1 = beta-np.radians(90)
    theta2 = np.radians(90)-alfa
    
    tabla = []
    theta = theta1
    while not(theta>=theta2):
        X = funcion(P,theta,alfa,beta)[0] # usa vector X
        tabla.append([theta,X[0],X[1]])
        theta = theta + dtheta
        
    tabla = np.array(tabla)
    thetai = np.degrees(tabla[:,0])
    Tca = tabla[:,1]
    Tcb = tabla[:,2]
    
    # SALIDA
    print('tetha, TCA, TCB')
    print(tabla)
    
    # Grafica
    plt.plot(thetai,Tca, label='Tca')
    plt.plot(thetai,Tcb, label='Tcb')
    # plt.axvline(np.degrees(c))
    plt.legend()
    plt.xlabel('theta')
    plt.ylabel('Tensión')
    plt.show()
    
    
    # Tema 2 -------------------------
    # busca intersección con Bisección
    diferencia = Tca-Tcb
    donde_min  = np.argmin(np.abs(diferencia))
    a = tabla[donde_min-1,0]
    b = tabla[donde_min+1,0]
    tolera = 0.0001
    
    tramo = b-a
    while not(tramo<tolera):
        c = (a+b)/2
        fa = funcion(P,a,alfa,beta)[1] # usa delta
        fb = funcion(P,b,alfa,beta)[1]
        fc = funcion(P,c,alfa,beta)[1]
        cambia = np.sign(fa)*np.sign(fc)
        if cambia < 0: 
            a = a
            b = c
        if cambia > 0:
            a = c
            b = b
        tramo = b-a
    
    # SALIDA
    print('       raiz en: ', c,"radianes")
    print('       raiz en: ', np.degrees(c),"grados")
    print('error en tramo: ', tramo)
    
    # Grafica
    plt.plot(thetai,Tca, label='Tca')
    plt.plot(thetai,Tcb, label='Tcb')
    plt.axvline(np.degrees(c))
    plt.legend()
    plt.xlabel('theta')
    plt.ylabel('Tensión')
    plt.show()
    
  • s3Eva_2021PAOI_T1 Tensiones en cables por carga variable

    Ejercicio: 3Eva_2021PAOI_T1 Tensiones en cables por carga variable

    Planteamiento del problema

    Las ecuaciones de equilibrio del sistema corresponden a:

    -T_{CA} \cos (\alpha) + T_{CB} \cos (\beta) + P \sin (\theta) = 0 T_{CA} \sin (\alpha) + T_{CB} \sin (\beta) - P \cos (\theta) = 0

    se reordenan considerando que P y θ son valores constantes para cualquier caso

    T_{CA} \cos (\alpha) - T_{CB} \cos (\beta) = P \sin (\theta) T_{CA} \sin (\alpha) + T_{CB} \sin (\beta) = P \cos (\theta)

    se convierte a la forma matricial

    \begin{bmatrix} \cos (\alpha) & -\cos (\beta) \\ \sin (\alpha) & \sin (\beta) \end{bmatrix} \begin{bmatrix} T_{CA} \\ T_{CB} \end{bmatrix} = \begin{bmatrix} P \sin (\theta) \\ P \cos (\theta) \end{bmatrix}

    tomando valores por ejemplo:

    α = 35°, β = 75°, P = 400 lb, Δθ = 5°

    θ = 75-90 = -15

    \begin{bmatrix} \cos (35) & -\cos (75) \\ \sin (35) & \sin (75) \end{bmatrix} \begin{bmatrix}T_{CA} \\ T_{CB} \end{bmatrix} = \begin{bmatrix} 400 \sin (-15) \\ 400 \cos (15) \end{bmatrix}

    Desarrollo analítico

    matriz aumentada

    \begin{bmatrix} \cos (35) & - \cos (75) & 400 \sin (-15) \\ \sin (35) & \sin (75 ) & 400 \cos (15 ) \end{bmatrix}
    A = 
    [[ 0.81915204 -0.25881905]
     [ 0.57357644  0.96592583]]
    B = 
    [-103.52761804  386.37033052]
    
    AB = 
    [[ 0.81915204 -0.25881905 -103.52761804]
     [ 0.57357644  0.96592583 386.37033052]]
    

    Pivoteo parcial por filas

    cos(-15°) tendría mayor magnitud que sin(-15°), por lo que la matriz A se encuentra pivoteada

    Eliminación hacia adelante

    pivote =  0.81915204/0.57357644
    [[ 0.81915204 -0.25881905 -103.52761804]
     [ 0.0         1.63830408  655.32162903]]
    

    Sustitución hacia atras

    usando la última fila:

    1.63830408 TCB = 655.32162903
    TCB = 400

    luego la primera fila:

    0.81915204TCA -0.25881905TCB = -103.52761804

    0.81915204TCA = 0.25881905TCB  -103.52761804

    TCA = 2,392 x10-6 ≈ 0

    Se deja como tarea realizar el cálculo para:  θ+Δθ

    Instrucciones en Python

    Resultado:

    Resultado: [TCA, TCB], diferencia 
    [array([3.46965006e-14, 4.00000000e+02]), -399.99999999999994]

    usando el intervalo para θ1 y θ2:

    con las instrucciones:

    import numpy as np
    import matplotlib.pyplot as plt
    
    # Tema 1
    def funcion(P,theta,alfa,beta):
        # ecuaciones
        A = np.array([[np.cos(alfa), -np.cos(beta)],
                      [np.sin(alfa),  np.sin(beta)]])
        B = np.array([P*np.sin(theta), P*np.cos(theta)])
    
        # usar un algoritmo directo
        X = np.linalg.solve(A,B)
        
        diferencia = X[0]-X[1]
        return([X,diferencia])    
    
    # INGRESO
    alfa = np.radians(35)
    beta = np.radians(75)
    P = 400
    
    # PROCEDIMIENTO
    theta = beta-np.radians(90)
    resultado = funcion(P,theta,alfa, beta)
    
    # SALIDA
    print("Resultado: [TCA, TCB], diferencia")
    print(resultado)
    
    # Tema 1b --------------
    # PROCEDIMIENTO
    dtheta = np.radians(5)
    theta1 = beta-np.radians(90)
    theta2 = np.radians(90)-alfa
    
    tabla = []
    theta = theta1
    while not(theta>=theta2):
        X = funcion(P,theta,alfa,beta)[0] # usa vector X
        tabla.append([theta,X[0],X[1]])
        theta = theta + dtheta
        
    tabla = np.array(tabla)
    thetai = np.degrees(tabla[:,0])
    Tca = tabla[:,1]
    Tcb = tabla[:,2]
    
    # SALIDA
    print('tetha, TCA, TCB')
    print(tabla)
    
    # Grafica
    plt.plot(thetai,Tca, label='Tca')
    plt.plot(thetai,Tcb, label='Tcb')
    # plt.axvline(np.degrees(c))
    plt.legend()
    plt.xlabel('theta')
    plt.ylabel('Tensión')
    plt.show()
    
  • 3Eva_2021PAOI_T4 Integral con Cuadratura Gaussiana

    3ra Evaluación 2021-2022 PAO I. 14/Septiembre/2021

    Tema 4 (30 puntos) Aproximar el siguiente integral usando Cuadratura Gaussiana

    \int_0^{\pi/4} x^2 \sin (x) \delta x

    a) Usado dos segmentos o tramos, y para dos puntos, n=2

    b) compare sus resultados con n=3

    c) Calcule error entre resultados

    Referencia: Burden 8th Edition. Ejercicios 4.7 d.

    Rúbrica: Planteo del ejercicio (5 puntos), literal a, con expresiones y valores completos (10 puntos), literal b, con n=3 (10 puntos). literal c (5 puntos).