Categoría: Sol_2Eva 2021-

  • s2Eva_2021PAOI_T1 Masa transportada por tubo

    Ejercicio: 2Eva_2021PAOI_T1 Masa transportada por tubo

    Las expresiones siguientes se usan dentro de la expresión del integral

    Q(t)=9+4 \cos ^2 (0.4t) c(t)=5e^{-0.5t}+2 e^{-0.15 t} M = \int_{t_1}^{t_2} Q(t)c(t) dt

    literal a

    Usando los valores dados para el intervalo [2,8] con 6 tramos h = (8-2)/6 =1

    Se usa los valores de cada ti en Se puede obtener una tabla de valores muestreados para integrar f(t) = Q(i)c(t)

    [ti,	 Qi,	 Ci,	 fi]
    [ 2.     10.9416  3.321  36.3374]
    [ 3.      9.5252  2.3909 22.7739]
    [ 4.      9.0034  1.7743 15.9747]
    [ 5.      9.6927  1.3552 13.1352]
    [ 6.     11.175   1.0621 11.8687]
    [ 7.     12.5511  0.8509 10.6793]
    [ 8.     12.9864  0.694   9.0121]
    

    Para el integral se usan los valores por cada dos tramos

    I\cong \frac{1}{3}[36.3374+4(22.7739) + 15.9747] + \frac{1}{3}[15.9747+4(13.1352) + 11.8687] + \frac{1}{3}[11.8687+4(10.6793) + 9.0121] I = 95.7965

    literal b

    L acota de error de truncamiento por cada fórmula usada, se estima como O(h5),

    error_{trunca} = -\frac{h^5}{90} f^{(4)}(z)

    para un valor de z entre [a,b]

    por lo que al usar 3 veces la formula de Simpson se podría estimar en:

    error_{trunca} = 3(1^5/90) = 0.033

    literal c

    El resultado se puede mejorar de dos formas:

    1. Dado que el número de tramos es múltiplo de 3, se puede cambiar la fórmula a Simpon de 3/8, que tendría una cota de error menor

    2. Aumentar el número de tramos disminuyendo el valor de h para que el error disminuya. Por ejemplo si se reduce a 0.5, el error disminuye en el orden de 0.55

    Podría recomendar la segunda opión, pues a pesar que se aumenta la cota de error por cada vez que se usa la fórmula, el error de cada una disminuye en ordenes de magnitud 0,03125


    La gráfica del ejercicio es:

    2Eva2021PAOI Masa Caudal

    Instrucciones en Python

    import numpy as np
    import matplotlib.pyplot as plt
    
    # INGRESO
    Q = lambda t: 9+4*(np.cos(0.4*t)**2)
    C = lambda t: 5*np.exp(-0.5*t)+2*np.exp(-0.15*t)
    
    t1 = 2
    t2 = 8
    n  = 6
    
    # PROCEDIMIENTO
    muestras = n+1 
    dt = (t2-t1)/n
    ti = np.arange(t1,t2+dt,dt)
    Qi = Q(ti)
    Ci = C(ti)
    fi = Qi*Ci
    
    # integración con Simpson 1/3
    h= dt
    I13 = 0
    for i in range(0,6,2):
        S13 = (h/3)*(fi[i]+4*fi[i+1]+fi[i+2])
        I13 = I13 + S13
    
    # SALIDA
    np.set_printoptions(precision=4)
    print("[ti,\t Qi,\t Ci,\t fi]")
    for i in range(0,muestras,1):
        print(np.array([ti[i],Qi[i],Ci[i],fi[i]]))
    print("Integral S13: ",I13)
    # grafica
    plt.plot(ti,Qi, label = "Q(t)")
    plt.plot(ti,Ci, label = "c(t)")
    plt.plot(ti,fi, label = "f(t)")
    plt.plot(ti,Qi,'.b')
    plt.plot(ti,Ci,'.r')
    plt.plot(ti,fi,'.g')
    plt.xlabel("t")
    plt.ylabel("f(t)=Q(t)*c(t)")
    plt.show()
    
  • s2Eva_2021PAOI_T2 EDO para cultivo de peces

    Ejercicio: 2Eva_2021PAOI_T2 EDO para cultivo de peces

    Siendo la captura una constante mas una función periódica,

    h(t) = a + b \sin (2 \pi t)

    La ecuación EDO del ejercicio, junto a las constantes a=0.9 y b=0.75, r=1

    \frac{\delta y(t)}{\delta t} = r y(t)-h(t)

    se convierte en:

    \frac{\delta y(t)}{\delta t} = (1) y(t)- \Big( 0.9 + .75 \sin (2 \pi t)\Big) \frac{\delta y(t)}{\delta t} = y(t)- 0.9 - .75 \sin (2 \pi t)

    Considerando que la población inicial de peces es 1 o 100%, y(0)=1

    literal a

    h=1/12
    tamano = muestras + 1
    estimado = np.zeros(shape=(tamano,2),dtype=float)
    estimado[0] = [0,1]
    ti = 0
    yi = 1
    for i in range(1,tamano,1):
        K1 = 1/12 * d1y(ti,yi)
        K2 = 1/12 * d1y(ti+1/24, yi + K1/2)
        K3 = 1/12 * d1y(ti+1/24, yi + K2/2)
        K4 = 1/12 * d1y(ti+1/12, yi + K3)
    
        yi = yi + (1/6)*(K1+2*K2+2*K3 +K4)
        ti = ti + 1/12
            
        estimado[i] = [ti,yi]
    

    literal b

    iteración i=0

    t(0) = 0

    y(0) = 1

    K1 = \frac{1}{12} \Big(1- 0.9 - .75 \sin (2 \pi 0)\Big) = 0,008333 K2 = \frac{1}{12} \Big(1- 0.9 - .75 \sin \Big(2 \pi (0+\frac{1}{12})\Big)\Big) = -0.02222 y(1) = 0 + \frac{0.008333+(-0.02222)}{2} = 0.9930 t(1) = 0 + \frac{1}{12} = \frac{1}{12}

    iteración i=1

    t(1) = \frac{1}{12}

    y(1) = 0.9930

    K1 = \frac{1}{12} \Big(0.9930 - 0.9 - .75 \sin \Big( 2 \pi\frac{1}{12}\Big)\Big) = -0.02349 K2 = \frac{1}{12} \Big(0.9930 - 0.9 - .75 \sin \Big(2 \pi (\frac{1}{12}+\frac{1}{12})\Big)\Big) = -0.04832 y(1) = 0.9930 + \frac{-0.02349+(-0.04832)}{2} = 0.9571 t(1) = \frac{1}{12} + \frac{1}{12} = \frac{2}{12}

    iteración i=2

    t(2) = \frac{2}{12}

    y(1) = 0.9571

    K1 = \frac{1}{12} \Big(0.9571 - 0.9 - .75 \sin \Big( 2 \pi\frac{2}{12}\Big)\Big) = -0.04936 K2 = \frac{1}{12} \Big(0.9571 - 0.9 - .75 \sin \Big(2 \pi (\frac{2}{12}+\frac{1}{12})\Big)\Big) = -0.06185 y(1) = 0.9571 + \frac{-0.04936+(-0.06185)}{2} = 0.9015 t(3) = \frac{2}{12} + \frac{1}{12} = \frac{3}{12}

    literal c

    Resultado del algoritmo, muestra que la estrategia de cosecha, en el tiempo no es sostenible, dado que la población de peces en el tiempo decrece.

    2Eva2021PAOI tilapias literal c

    estimado[xi,yi,K1,K2]
    [[ 0.0000e+00  1.0000e+00  8.3333e-03 -2.2222e-02]
     [ 8.3333e-02  9.9306e-01 -2.3495e-02 -4.8330e-02]
     [ 1.6667e-01  9.5714e-01 -4.9365e-02 -6.1852e-02]
     [ 2.5000e-01  9.0153e-01 -6.2372e-02 -5.9196e-02]
     [ 3.3333e-01  8.4075e-01 -5.9064e-02 -4.1109e-02]
     [ 4.1667e-01  7.9066e-01 -4.0361e-02 -1.2475e-02]
     [ 5.0000e-01  7.6425e-01 -1.1313e-02  1.8994e-02]
     [ 5.8333e-01  7.6809e-01  2.0257e-02  4.4822e-02]
     [ 6.6667e-01  8.0063e-01  4.5845e-02  5.8039e-02]
     [ 7.5000e-01  8.5257e-01  5.8547e-02  5.5053e-02]
     [ 8.3333e-01  9.0937e-01  5.4907e-02  3.6606e-02]
     [ 9.1667e-01  9.5513e-01  3.5844e-02  7.5807e-03]
     [ 1.0000e+00  9.7684e-01  6.4031e-03 -2.4313e-02]
     [ 1.0833e+00  9.6788e-01 -2.5593e-02 -5.0602e-02]
     [ 1.1667e+00  9.2978e-01 -5.1645e-02 -6.4322e-02]
     [ 1.2500e+00  8.7180e-01 -6.4850e-02 -6.1881e-02]
     [ 1.3333e+00  8.0844e-01 -6.1757e-02 -4.4027e-02]
     [ 1.4167e+00  7.5554e-01 -4.3288e-02 -1.5645e-02]
     [ 1.5000e+00  7.2608e-01 -1.4494e-02  1.5549e-02]
     [ 1.5833e+00  7.2661e-01  1.6800e-02  4.1077e-02]
     [ 1.6667e+00  7.5554e-01  4.2089e-02  5.3969e-02]
     [ 1.7500e+00  8.0357e-01  5.4464e-02  5.0630e-02]
     [ 1.8333e+00  8.5612e-01  5.0470e-02  3.1799e-02]
     [ 1.9167e+00  8.9725e-01  3.1021e-02  2.3563e-03]
     [ 2.0000e+00  9.1394e-01  1.1619e-03 -2.9991e-02]
     [ 2.0833e+00  8.9953e-01 -3.1289e-02 -5.6773e-02]
     [ 2.1667e+00  8.5550e-01 -5.7835e-02 -7.1028e-02]
     [ 2.2500e+00  7.9107e-01 -7.1578e-02 -6.9169e-02]
     [ 2.3333e+00  7.2069e-01 -6.9069e-02 -5.1948e-02]
     [ 2.4167e+00  6.6018e-01 -5.1235e-02 -2.4254e-02]
     [ 2.5000e+00  6.2244e-01 -2.3130e-02  6.1924e-03]
     [ 2.5833e+00  6.1397e-01  7.4142e-03  3.0909e-02]
     [ 2.6667e+00  6.3313e-01  3.1888e-02  4.2918e-02]
     [ 2.7500e+00  6.7053e-01  4.3378e-02  3.8619e-02]
     [ 2.8333e+00  7.1153e-01  3.8421e-02  1.8746e-02]
     [ 2.9167e+00  7.4012e-01  1.7926e-02 -1.1830e-02]
     [ 3.0000e+00  7.4317e-01  0.0000e+00  0.0000e+00]]
    

    Instrucciones en Python

    # EDO. Método de RungeKutta 2do Orden 
    # estima la solucion para muestras espaciadas h en eje x
    # valores iniciales x0,y0
    # entrega arreglo [[x,y]]
    import numpy as np
    
    def rungekutta2(d1y,x0,y0,h,muestras):
        tamano   = muestras + 1
        estimado = np.zeros(shape=(tamano,4),dtype=float)
        # incluye el punto [x0,y0]
        estimado[0] = [x0,y0,0,0]
        xi = x0
        yi = y0
        for i in range(1,tamano,1):
            K1 = h * d1y(xi,yi)
            K2 = h * d1y(xi+h, yi + K1)
    
            yi = yi + (K1+K2)/2
            xi = xi + h
            estimado[i-1,2:]=[K1,K2]
            estimado[i] = [xi,yi,0,0]
        return(estimado)
    
    # PROGRAMA PRUEBA
    # Ref Rodriguez 9.1.1 p335 ejemplo.
    # prueba y'-y-x+(x**2)-1 =0, y(0)=1
    
    # INGRESO
    # d1y = y' = f, d2y = y'' = f'
    a =0.9; b=0.75; r=1
    d1y = lambda t,y: r*y-(a+b*np.sin(2*np.pi*t))
    x0 = 0
    y0 = 1
    h  = 1/12
    muestras = 12*3
    
    # PROCEDIMIENTO
    puntosRK2 = rungekutta2(d1y,x0,y0,h,muestras)
    xi = puntosRK2[:,0]
    yiRK2 = puntosRK2[:,1]
    
    # SALIDA
    np.set_printoptions(precision=4)
    print('estimado[xi,yi,K1,K2]')
    print(puntosRK2)
    
    
    # Gráfica
    import matplotlib.pyplot as plt
    
    
    plt.plot(xi[0],yiRK2[0],
             'o',color='r', label ='[x0,y0]')
    plt.plot(xi[1:],yiRK2[1:],
             'o',color='m',
             label ='y Runge-Kutta 2 Orden')
    
    plt.title('EDO: Solución con Runge-Kutta 2do Orden')
    plt.xlabel('x')
    plt.ylabel('y')
    plt.legend()
    plt.grid()
    plt.show()