Autor: Edison Del Rosario

  • 2Eva_IIT2018_T3 EDP

    2da Evaluación II Término 2018-2019. 29/Enero/2019. MATG1013

    Tema 3. (40 puntos) Resuelva la siguiente ecuación diferencial parcial (EDP) usando un método de diferencias finitas. Considere b = 0

    \frac{\partial u}{\partial t} = \frac{\partial ^2 u}{\partial x^2} + b\frac{\partial u}{\partial x} 0<x<1, t>0

    condiciones de frontera U(0,t)=0, U(1,t)=1

    condiciones de inicio U(x,0)=0, 0≤x≤1

    a) Aproxime la solución con h=0.25, realice dos pasos en t

    b) estime el error.

    Rúbrica: Plantea la malla (5 puntos), Conoce las fórmulas de las derivadas (5 puntos), Plantea la ecuación en los nodos de la malla (5 puntos), plantea las condiciones iniciales y condiciones de borde (5 puntos), Establece el valor de lamda y calcula el tamaño del paso k, (5 puntos) Realiza dos pasos (5 puntos), Conoce las fórmulas del error (5 puntos), calcula el error (5 puntos).

  • 2Eva_IIT2018_T2 EDO d2x/dt2 Kunge Kutta 2do Orden

    2da Evaluación II Término 2018-2019. 29/Enero/2019. MATG1013

    Tema 2. (30 puntos) Se tiene una ecuación diferencial de segundo orden con valores iniciales.

    \frac{\delta ^2 x}{\delta t^2} + 5t\frac{\delta x}{\delta t} +(t+7)\sin (\pi t) = 0 0<t<2 x(0)=6,\frac{\delta x}{\delta t}(0) = 1.5

    a. Transforme la ecuación en un sistema de primer orden.

    b. Use el método de Runge-Kutta de orden 2 (modificado de Euler) con h=0.2 para aproximar x para 3 pasos.

    c. Estime el error.

    Rúbrica: literal a, aplica el cambio de variables (5 puntos).
    literal b, Conoce una fórmula de RK2orden (5 puntos). Plantea la fórmula de RK2 orden al sistema (5 puntos). Realiza al menos 3 pasos (5 puntos).
    literal c, conoce las fórmulas del error hasta (5 puntos), calcula el error hasta (5 puntos)

     

  • 2Eva_IIT2018_T1 Masa entra o sale de un reactor

    2da Evaluación II Término 2018-2019. 29/Enero/2019. MATG1013

    Tema 1. (30 puntos) La integración proporciona un medio para calcular cuánta masa entra o sale de un reactor químico durante un periodo específico de tiempo. https://es.wikipedia.org/wiki/Reactor_qu%C3%ADmico

    M = \int^{t_2}_{t_1}Q(t)C(t) dt

    t : min
    C(t) : mg/m3
    Q(t) : m3/min

    a) Con los datos mostrados en la tabla y usando los métodos de Simpson 1/3 y 3/8, aproxime la cantidad de masa que sale de un reactor entre t1=0 y t2=25 min.

    t 0 5 10 15 20 25
    C(t) 10 18 27 35 40 30
    Q(t) 4 6 7 6 5 5

    b) Estime el error

    Rúbrica: Conoce los métodos de Simpson hasta (5 puntos), Calcula la función a integrar hasta (5 puntos), Separa los intervalos hasta (5 puntos), Aplica las fórmulas correctamente hasta (5 puntos). Literal b, conoce las fórmulas del error (5 puntos), calcula los errores (5 puntos)

    Referencia: Chapra problema 24.4 p693 pdf717. Reactor químico, https://es.wikipedia.org/wiki/Reactor_qu%C3%ADmico

    t = [0,5,10,15,20,25]
    C = [10,18,27,35,40,30]
    Q = [4,6,7,6,5,5]
  • s2Eva_IIT2018_T3 EDP

    Ejercicio: 2Eva_IIT2018_T3 EDP

    Se indica en el enunciado que b = 0

    \frac{\delta u}{\delta t} = \frac{\delta ^2 u}{\delta x^2} + b\frac{\delta u}{\delta x}

    simplificando la ecuación a:

    \frac{\delta u}{\delta t} = \frac{\delta ^2 u}{\delta x^2}

    Reordenando la ecuación a la forma estandarizada:

    \frac{\delta ^2 u}{\delta x^2} = \frac{\delta u}{\delta t}

    Seleccione un método: explícito o implícito.
    Si el método es explícito, las diferencias finitas a usar son hacia adelante y centrada:

    U'(x_i,t_j) = \frac{U(x_i,t_{j+1})-U(x_i,t_j)}{\Delta t} + O(\Delta t) U''(x_i,t_j) = \frac{U(x_{i+1},t_j)-2U(x_{i},t_j)+U(x_{i-1},t_j)}{\Delta x^2} + O(\Delta x^2)

    como referencia se usa la gráfica.

    Se selecciona la esquina inferior derecha como 0,  por la segunda ecuación de condiciones y facilidad de cálculo. (No hubo indicación durante el examen que muestre lo contrario)

    condiciones de frontera U(0,t)=0, U(1,t)=1
    condiciones de inicio U(x,0)=0, 0≤x≤1

    aunque lo más recomendable sería cambiar la condición de inicio a:

    condiciones de inicio U(x,0)=0, 0<x<1

    Siguiendo con el tema de la ecuación, al reemplazar las diferencias finitas en la ecuación:


    \frac{U(x_{i+1},t_j)-2U(x_{i},t_j)+U(x_{i-1},t_j)}{\Delta x^2} = = \frac{U(x_i,t_{j+1})-U(x_i,t_j)}{\Delta t}

    se reagrupan los términos que son constantes y los términos de error se acumulan:

    \frac{\Delta t}{\Delta x^2} \Big[U(x_{i+1},t_j)-2U(x_i,t_j)+U(x_{i-1},t_j) \Big] = U(x_i,t_{j+1})-U(x_i,t_j)

    siendo,

    \lambda= \frac{\Delta t}{\Delta x^2} error \cong O(\Delta t) + O(\Delta x^2)

    continuando con la ecuación, se simplifica la escritura usando sólo los índices i,j y se reordena de izquierda a derecha como en la gráfica

    \lambda \Big[U[i-1,j]-2U[i,j]+U[i+1,j] \Big] = U[i,j+1]-U]i,j] \lambda U[i-1,j]+(-2\lambda+1)U[i,j]+\lambda U[i+1,j] = U[i,j+1] U[i,j+1] = \lambda U[i-1,j]+(-2\lambda+1)U[i,j]+\lambda U[i+1,j] U[i,j+1] = P U[i-1,j]+QU[i,j]+R U[i+1,j] P=R = \lambda Q = -2\lambda+1

    En las iteraciones, el valor de P,Q y R se calculan a partir de λ ≤ 1/2

    iteraciones: j=0, i=1

    U[1,1] = P*0+Q*0+R*0 = 0

    j=0, i=2

    U[2,1] = P*0+Q*0+R*0=0

    j=0, i=3

    U[3,1] = P*0+Q*0+R*1=R=\lambda=\frac{1}{2}

    iteraciones: j=1, i=1

    U[1,2] = P*0+Q*0+R*0 = 0

    j=1, i=2

    U[2,2] = P*0+Q*0+R*\lambda = \lambda ^2 = \frac{1}{4}

    j=1, i=3

    U[3,2] = P*0+Q*\frac{1}{4}+R (\lambda) U[3,2] = (-2\lambda +1) \frac{1}{4}+\lambda^2 = \Big(-2\frac{1}{2}+1\Big) \frac{1}{4}+\Big(\frac{1}{2}\Big)^2 U[3,2] =0\frac{1}{4} + \frac{1}{4} = \frac{1}{4}

    Literal b. Para el cálculo del error:

    \lambda \leq \frac{1}{2} \frac{\Delta t}{\Delta x^2} \leq \frac{1}{2} \Delta t \leq \frac{\Delta x^2}{2}

    en el enunciado se indica h = 0.25 = ¼ = Δ x

    \Delta t \leq \frac{(1/4)^2}{2} = \frac{1}{32} error \cong O(\Delta t) + O(\Delta x^2) error \cong \frac{\Delta x^2}{2}+ \Delta x^2 error \cong \frac{3}{2}\Delta x^2 error \cong \frac{3}{2}( \frac{1}{4})^2 error \cong \frac{3}{32} = 0.09375
  • s2Eva_IIT2018_T2 EDO d2x/dt2 Kunge Kutta 2do Orden

    Ejercicio: 2Eva_IIT2018_T2 EDO d2x/dt2 Kunge Kutta 2do Orden

    \frac{\delta ^2 x}{\delta t^2} + 5t\frac{\delta x}{\delta t} +(t+7)\sin (\pi t) = 0 x'' + 5tx' +(t+7)\sin (\pi t) = 0 x'' = -5tx' -(t+7)\sin (\pi t) = 0

    si se usa z=x'

    z' = -5tz -(t+7)\sin (\pi t) = 0

    se convierte en:

    f(t,x,z) = x' = z g(t,x,z) = x'' = z' = -5tz -(t+7)sin (\pi t) = 0

    Tarea: Desarrollar 3 iteraciones en Papel.

    Donde se aplica el algoritmo de Runge Kutta
    https://blog.espol.edu.ec/analisisnumerico/8-2-2-runge-kutta-d2y-dx2/

       t,              x,              z
    [[ 0.          6.          1.5       ]
     [ 0.2         6.3         0.92679462]
     [ 0.4         6.38218195 -0.27187703]
     [ 0.6         6.19792527 -1.17287944]
     [ 0.8         5.88916155 -1.23638799]
     [ 1.          5.6491005  -0.61819399]
     [ 1.2         5.5872811   0.17288691]
     [ 1.4         5.69750883  0.69945284]
     [ 1.6         5.8992535   0.77223688]
     [ 1.8         6.09372469  0.43437943]
     [ 2.          6.20586248 -0.12630953]]
    

    Instrucciones en Python

    # 2Eva_IIT2018_T2 Kunge Kutta 2do Orden x''
    import numpy as np
    
    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
    # INGRESO
    f = lambda t,x,z: z
    g = lambda t,x,z: -5*t*z-(t+7)*np.sin(np.pi*t)
    t0 = 0
    x0 = 6
    z0 = 1.5
    h = 0.2
    muestras = 10
    
    # PROCEDIMIENTO
    tabla = rungekutta2_fg(f,g,t0,x0,z0,h,muestras)
    
    # SALIDA
    print(tabla)
    # GRAFICA
    import matplotlib.pyplot as plt
    plt.plot(tabla[:,0],tabla[:,1])
    plt.xlabel('t')
    plt.ylabel('x(t)')
    plt.show()
    
  • s2Eva_IIT2018_T1 Masa entra o sale de un reactor

    Ejercicio: 2Eva_IIT2018_T1 Masa entra o sale de un reactor

    a) Se pueden combinar los métodos para realizar la integral. Se usa el método de Simpson 1/3 para los primeros dos tramos y Simpson 3/8 para los 3 tramos siguientes.  Siendo f(x) equivalente a Q(t)C(t). El tamaño de paso h es constante para todo el ejercicio con valor 5.

    a.1 Simpson 1/3, tramos 2, puntos 3:

    I_1 \cong \frac{h}{3}[f(x_0)+4f(x_1) + f(x_2)] I_1 \cong \frac{5}{3}[(10)(4)+4(18)(6) + (27)(7)] I_1 \cong 1101,66

    a.2 Simpson de 3/8, tramos 3, puntos 4:

    I_2 \cong \frac{3h}{8}[f(x_0)+3f(x_1) +3 f(x_2)+f(x_3)] I_2 \cong \frac{3(5)}{8}[(27)(7)+3(35)(6) +3(40)(5)+(30)(5)] I_2 \cong 2941,88 I_1 + I_2 \cong 4043,54

    b) El error se calcula por tramo y se acumula.

    b.1 se puede estimar como la diferencia entre la parábola del primer tramo y simpson 1/3
    b.2 siguiendo el ejemplo anterior, como la diferencia entre la interpolación de los tramos restantes y simpson 3/8.

  • s2Eva_IT2010_T2 EDO Movimiento angular

    Ejercicio: 2Eva_IT2010_T2 EDO Movimiento angular

    Para resolver, se usa Runge-Kutta_fg de segundo orden como ejemplo

    y'' + 10 \sin (y) =0

    se hace

    y' = z = f(t,y,z)

    y se estandariza:

    y'' =z'= -10 \sin (y) = g(t,y,z)

    teniendo como punto de partida t0=0, y0=0 y z0=0.1

    y(0)=0, y'(0)=0.1

    Se desarrolla el algoritmo para obtener los valores:

     [ t, 		 y, 	 dyi/dti=z]
    [[ 0.          0.          0.1       ]
     [ 0.2         0.02        0.08000133]
     [ 0.4         0.03200053  0.02401018]
     [ 0.6         0.03040355 -0.04477916]
     [ 0.8         0.01536795 -0.09662411]
     [ 1.         -0.00703034 -0.10803459]]

    que permiten generar la gráfica de respuesta:

    Movimiento Angular 01


    Algoritmo en Python

    # 2Eva_IT2010_T2 Movimiento angular
    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,z0]
        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)
    
    # INGRESO theta = y
    ft = lambda t,y,z: z
    gt = lambda t,y,z: -10*np.sin(y)
    
    t0 = 0
    y0 = 0
    z0 = 0.1
    h=0.2
    muestras = 5
    
    # PROCEDIMIENTO
    tabla = rungekutta2_fg(ft,gt,t0,y0,z0,h,muestras)
    
    # SALIDA
    print(' [ t, \t\t y, \t dyi/dti=z]')
    print(tabla)
    
    # Grafica
    ti = np.copy(tabla[:,0])
    yi = np.copy(tabla[:,1])
    zi = np.copy(tabla[:,2])
    plt.subplot(121)
    plt.plot(ti,yi)
    plt.xlabel('ti')
    plt.title('yi')
    plt.subplot(122)
    plt.plot(ti,zi, color='green')
    plt.xlabel('ti')
    plt.title('dyi/dti')
    plt.show()
    
  • s1Eva_IIT2018_T4 Tasa de interés en hipoteca

    Ejercicio: 1Eva_IIT2018_T4 Tasa de interés en hipoteca

    literal a

    Siguiendo el desarrollo analítico tradicional, para adecuar la ecuación para los algoritmo de búsquda de raíces de ecuaciones,  se reemplazan los valores en la fórmula.

    P = A\Big(\frac{1-(1+i)^{-n}}{i} \Big) 70000 = 1200\Big(\frac{1-(1+i)^{-300}}{i} \Big)

    Como ambos lados de la ecuación deben ser iguales, si se restan ambos se obtiene una ecuación que tiene como resultado cero, que es la forma ideal para usar en el algoritmo que representa f(x) o en este caso f(i)

    70000 - 1200\Big(\frac{1-(1+i)^{-300}}{i} \Big) = 0

    Para evitar inconvenientes con la división para cero en caso que i tome el valor de cero, dado se multiplica toda la ecuación por i:

    i \Big[70000 - 1200\Big(\frac{1-(1+i)^{-300}}{i} \Big) \Big]= i (0) 70000 i - 1200 (1-(1+i)^{-300}) = 0

    La ecuación es la utilizada en el algoritmo de búsqueda de raíces pueden ser:

    fx(i) = 70000 - 1200\Big(\frac{1-(1+i)^{-300}}{i} \Big) fx(i) = 70000i - 1200(1-(1+i)^{-300})

    literal b

    El intervalo de existencia correspondería a la tasa de interés mínimo y el interés máximo.

    [izquierda, derecha] = [a,b]

    Para el intervalo se deben tomar en cuenta algunas consideraciones descritas a continuación:

    izquierda:

    En el extremo izquierdo, las tasas no son negativas, lo que se interpreta en que un banco paga por que le presten dinero.

    Tampoco tiene mucho sentido el valor cero, que son prestamos sin intereses. A menos que sean sus padres quienes le dan el dinero.

    Un valor inicial para el interés puede ser por ejemplo 1% ó 0.01, siempre que se cumpla que existe cambio de signo en la función a usar.

    derecha:

    En el extremo derecho, si se propone por ejemplo i con 100%, o 1.00, no tendría mucho sentido un préstamo con intereses al 100% anual, que resulta en el doble del valor inicial en tan solo un periodo o año.

    La tasa de interés de consumo que son de las más alto valor, se encuentran reguladas. En Ecuador es un valor alrededor del 16% anuales o 0.16.

    Considerando las observaciones iniciales del problema, se propone empezar el análisis para la búsqueda de la raíz en el intervalo en un rango más amplio:

    [ 0.01, 0.50]

    Ser realiza la comprobación que existe cambio de signo en los extremos del intervalo.

    fx(0.001) =- 43935.86

    fx(0.50) = 67600.0

    Para el ejercicio se hace notar que la es tasa nominal anual, pero los pagos son mensuales. Por lo que se debe unificar las tasas de interes a mensuales. Una aproximación es usar las tasas anuales divididas para los 12 meses del año.

    Tolerancia al error

    La tolerancia se considera en éste ejercicio como el valor de diferencias  (tramo) entre iteraciones con precisión satisfactoria.

    Por ejemplo si no negociaremos más con el banco por variaciones de tasas del 0.1% , entonces la tolerancia será de 0.001.

    Las publicaciones de tasas en el mercado incluyen dos decimales, por lo que para el ejercicio aumentamos la precisión a : 0.0001

    tolera = 1x10-4


    Literal c


    Se presentan dos formas se solución para el litera c:

    - c.1 la requerida en el enunciado con Newton-Raphson

    - c.2 una alterna con el método de la Bisección.


    c.1. Desarrollo del ejercicio con el método del enunciado Newton-Raphson


    Para el método de Newton-Raphson se tiene que:

    x_{i+1} = x_{i} - \frac{f(x_0i)}{f'(x_i)}

    Se requiere la derivada de la función planteada en el literal a:

    fx(i) = 70000i - 1200(1-(1+i)^{-300}) f'x(i) = 70000 + 1200(300)(1+i)^{-301})

    tomando como valor inicial xi = 0.16/12 ≈ 0.013

    Se realizan las iteraciones suponiendo que tolera = 1x10-4

    iteración 1

    fx(0.013) = 70000(0.013) - 1200(1-(1+0.013)^{-300})

     = -265.09

    f'x(0.013) = 70000 + 1200(300)(1+0.013)^{-301})

    = 62623.3

    x_{2} = 0.013 - \frac{-265.09}{62623.34} = 0.017233

    error = |0.013 - 0.01723| = 0.004331

    iteración 2

    fx(0.01723) = 70000i - 1200(1-(1+0.0.01723)^{-300})

    = 13.446

    f'x(0.01723) = 70000 + 1200(300)(1+0.01723)^{-301}

    = 67897.5

    x_{3} = 0.017233 - \frac{13.446}{67897.5} = 0.017031

    error = |0.017233 - 0.017031| = 0.000198

    cuyo valor de error está casi dentro del valor de tolerancia,

    que permite tomar el último valor como respuesta de tasa mensual

    raiz = tasa mensual = 0.01703

    Convirtiendo a la tasa tasa anual que es la publicada por las instituciones financieras se tiene que:

    tasa anual nominal =  0.01703*12 = 0.2043

    Teniendo como resultado una tasa anual de 20.43%

    E2_IIT2018_T4 Tasa Interes Hipoteca 01


    Algoritmo en Python

    El resultado con el algoritmo es:

    método de Newton-Raphson
    i ['xi', 'fi', 'dfi', 'xnuevo', 'tramo']
    0 [ 1.30000e-02 -2.65091e+02  6.26233e+04  1.72331e-02  4.23311e-03]
    1 [1.72331e-02 1.34468e+01 6.78975e+04 1.70351e-02 1.98045e-04]
    2 [1.70351e-02 1.24433e-02 6.77706e+04 1.70349e-02 1.83609e-07]
    raiz encontrada en:  0.017034880749732726
    tasa anual:  0.20441856899679273

    Instrucciones en Python

    # 1ra Evaluación II Término 2018
    # Tema 4. Tasa de interes para hipoteca
    import numpy as np
    
    def newton_raphson(fx,dfx,xi, tolera, iteramax=100,
                       vertabla=False, precision=4):
        '''fx y dfx en forma numérica lambda
        xi es el punto inicial de búsqueda
        '''
        itera=0
        tramo = abs(2*tolera)
        if vertabla==True:
            print('método de Newton-Raphson')
            print('i', ['xi','fi','dfi', 'xnuevo', 'tramo'])
            np.set_printoptions(precision)
        while (tramo>=tolera):
            fi = fx(xi)
            dfi = dfx(xi)
            xnuevo = xi - fi/dfi
            tramo = abs(xnuevo-xi)
            if vertabla==True:
                print(itera,np.array([xi,fi,dfi,xnuevo,tramo]))
            xi = xnuevo
            itera = itera + 1
    
        if itera>=iteramax:
            xi = np.nan
            print('itera: ',itera,
                  'No converge,se alcanzó el máximo de iteraciones')
    
        return(xi)
    
    # INGRESO
    P = 70000.00
    A = 1200.00
    n = 25*12
    fx  = lambda i: P*i - A*(1-(1+i)**(-n))
    dfx = lambda i: P + A*(-n)*(i+1)**(-n-1)
    
    x0 = 0.013 # 0.16/12
    tolera = 0.0001
    
    # PROCEDIMIENTO
    raiz   = newton_raphson(fx, dfx, x0, tolera, vertabla=True, precision=5)
    tanual = 12*raiz
    
    # SALIDA
    print('raiz encontrada en: ', raiz)
    print('tasa anual: ',tanual)
    
    # GRAFICA
    import matplotlib.pyplot as plt
    a = 0.01/12
    b = 0.25/12
    muestras = 21
    
    tasa = np.linspace(a,b,muestras)
    fi   = fx(tasa)
    
    plt.plot(tasa*12,fi, label="tasa anual")
    plt.axhline(0, color='green')
    plt.title('tasa anual de interes para Hipoteca')
    plt.xlabel('tasa')
    plt.ylabel('fx(tasa)')
    plt.grid()
    plt.legend()
    plt.show()
    

    c.2. Desarrollo con el método de la Bisección


    Desarrollo Analítico con Bisección

    Como parte del desarrollo del ejercicio se presenta las iteraciones para el algoritmo, tradicionalmente realizadas con una calculadora.

    fx(i) = 70000 - 1200\Big(\frac{1-(1+i)^{-300}}{i} \Big)

    iteración 1

    a = 0.01, b = 0.5 c = \frac{a+b}{2} = \frac{0.01+0.5}{2} = 0.255 fx(0.01) = 70000 - 1200\Big(\frac{1-(1+(0.01))^{-300}}{0.01} \Big) = -43935.86 fx(0.255) = 70000 - 1200\Big(\frac{1-(1+(0.255))^{-300}}{0.255} \Big) = 65294.11 fx(0.5) = 70000 - 1200\Big(\frac{1-(1+(0.5))^{-300}}{0.5} \Big) = 67600.0 tramo = 0.5-0.01 =0.49

    cambio de signo a la izquierda

    a = 0.01, b=0.255

    iteración 2

    c = \frac{a+b}{2} = \frac{0.01+0.225}{2} = 0.1325 fx(0.1325) = 70000 - 1200\Big(\frac{1-(1+(0.1325))^{-300}}{0.1325} \Big) = 60943.39 tramo = 0.225-0.01 =0.215

    cambio de signo a la izquierda

    a = 0.01, b=0.1325

    iteración 3

    c = \frac{a+b}{2} = \frac{0.01+0.1325}{2} = 0.07125 fx(0.07125) = 70000 - 1200\Big(\frac{1-(1+(0.07125))^{-300}}{0.07125} \Big) = 53157.89 tramo = 0.1325-0.01 =0.1225

    cambio de signo a la izquierda

    a = 0.01, b=0.07125

    y se continuaría con las iteraciones, hasta cumplir que tramo<=tolera

    Tabla de datos obtenidos

    tabla para Bisección
    i a c b f(a) f(c) f(b) tramo
    1 0.01 0.255 0.5 -43935.86 65294.11 67600.0 0.49
    2 0.01 0.1325 0.255 -43935.86 60943.39 65294.11 0.215
    3 0.01 0.07125 0.1325 -43935.86 53157.89 60943.39 0.1225

    hasta lo calculado la raiz se encontraría en el intervalo [0.01,0.07125] con error estImado de 0.06125, aún por mejorar con más iteraciones.

    Algoritmo en Python para Bisección

    • El algoritmo bisección usa las variables a y b, por lo que los limites en el intervalo usados son [La,Lb]
    • para el problema la variable 'i' se usa en el eje x.
    • La selección de cambio de rango [a,b] se hace usando solo el signo del valor.
    • El algoritmo presentado es tal como se explica en la parte conceptual

    Se deja como tarea convertir el algoritmo a funcion def-return de Python.

    # 1Eva_IIT2018_T4 Tasa de interés en hipoteca
    import numpy as np
    import matplotlib.pyplot as plt
    
    # INGRESO
    P = 70000.00
    A = 1200.00
    n = 25*12
    fi = lambda i: P - A*(1-((1+i)**-n))/i
    
    # Intervalo de observación
    # e inicio de Bisección
    La = 0.01
    Lb = 0.50
    
    tolera = 0.0001 #grafica
    
    muestras = 21
    
    # PROCEDIMIENTO
    
    # Método de Bisección
    a = La
    b = Lb
    c = (a+b)/2
    tramo = np.abs(b-a)
    while (tramo>tolera):
        fa = fi(a)
        fb = fi(b)
        fc = fi(c)
        cambio = np.sign(fc)*np.sign(fa)
        if (cambio>0):
            a = c
            b = b
        else:   
            b = c
            a = a
        c = (a+b)/2
        tramo = np.abs(b-a)
    
    # Para la gráfica
    tasa = np.linspace(La,Lb,muestras)
    fr = fi(tasa)
    
    # SALIDA
    print('a, f(a):', a,fa)
    print('c, f(c):', c,fc)
    print('b, f(b):', b,fb)
    print('la raiz esta entre: \n',a,b)
    print('con un error de: ', tramo)
    print('raiz es tasa buscada: ', c)
    print('tasas anual buscada: ',c*12)
    
    # Gráfica
    plt.plot(tasa,fr)
    plt.axhline(0, color='green')
    plt.title('tasa de interes mensual')
    plt.show()
    

    la ejecución del algoritmo da como resultado

    >>> 
     RESTART: D:/MATG1052Ejemplos/HipotecaInteres.py 
    a, f(a): 0.016998291015625 -385.52828922150366
    c, f(c): 0.0170281982421875 -145.85350695741363
    b, f(b): 0.01705810546875 92.28034212642524
    la raiz esta entre: 
     0.016998291015625 0.01705810546875
    con un error de:  5.981445312500111e-05
    raiz es tasa buscada:  0.0170281982421875
    tasas anual buscada:  0.20433837890625
    

    y la gráfica obtenida es:

    tasa interes mensual

  • 1Eva_IIT2018_T4 Tasa de interés en hipoteca

    1ra Evaluación II Término 2018-2019. 10/Noviembre/2018. MATG1013

    Tema 4. Para pagar una hipoteca de una casa durante n periodos de tiempo se usa la fórmula:

    P = A\Big(\frac{1-(1+i)^{-n}}{i} \Big)

    En ésta ecuación, P es el valor presente de la casa, A es el valor del pago periódico de la deuda durante n periodos y la tasa de interés por periodo es i.

    casa juguete imagen

    Suponga que la casa tiene un valor presente de 70000 dólares y deberá ser pagada mediante 1200 dólares mensuales por 25 años (300 meses).

    a) Plantee la ecuación

    b) Encuentre un intervalo para i donde haya un cambio de signo en la función

    c) Aplique el método de Newton

  • 1Eva_IIT2018_T3 Interpolar con sistema de ecuaciones

    1ra Evaluación II Término 2018-2019. 10/Noviembre/2018. MATG1013

    Tema 3. Encuentre el polinomio:

    p_2(x) = b_0 + b_1x + b_2 x^2

    tal que se ajuste a tres puntos de y(x) para x = 1.0, 1.5 y 2.1 de la tabla presentada.

    x 1.0 1.1 1.3 1.5 1.9 2.1
    y(x) 1.84 1.90 2.10 2.28 2.91 3.28

    Resuelva planteando el sistema de ecuaciones para generar el polinomio de interpolación.

    a) Plantee el sistema Ax=B resultante con las variables b0, b1, b2

    b) Calcule ||Tj||  y comente

    c) Encuentre el número de condición K(A) =||A||||A-1||  y comente

    d) Resuelva el sistema de ecuaciones con el método de eliminación de Gauss


    xi = [1.0,  1.1,  1.3,  1.5,  1.9,  2.1 ]
    yi = [1.84, 1.90, 2.10, 2.28, 2.91, 3.28]
    cuales = [0, 3, 5]