2018_IIT Semana 02 – Raices/Bisección

1. Lecturas Raices – Algoritmo de la Bisección

2.1 Bisección – Concepto

2.1.1 Bisección Ejemplo01

2. Ejercicios en clase Paralelo 5 y Paralelo 7

2.1 Aproximar una función con Series de Taylor

Desarrollar el polinomio de Taylor de tercer grado para la ecuación del problema presentado. n=3, alrededor de x<sub>0</sub>=0

http://blog.espol.edu.ec/matg1013/1eva_iit2010_t1-aproximar-con-polinomio/

f(x) = e^x \cos (x) +1 0\leq x \leq \pi

P_{n}(x) = f(x_0)+\frac{f'(x_0)}{1!} (x-x_0) + + \frac{f''(x_0)}{2!}(x-x_0)^2 + + \frac{f'''(x_0)}{3!}(x-x_0)^3 + \text{...}

2.1.1 Desarrollo analítico

f(x) = e^x \cos (x) +1

f(0) = e^0 \cos (0) +1
f(0) = 2

f'(x) = e^x \cos (x) + e^x (-\sin(x))

f'(0) = e^0 \cos (0) + e^0 (-\sin(0))
f'(0) = 1

f''(x) = e^x \cos (x) + e^x (-\sin(x)) +
+ e^x (-\sin (x)) + e^x (-\cos(x)) =
= -2 e^x \sin(x) f''(0) = -2e^0\sin(0))
f»(0) = 0
f'''(x) = -2e^x\sin(x)) -2e^x\cos(x)

f'''(0) = -2e^0\sin(0)) -2e^0\cos(0)
f»'(0) = -2

p_3(x) = f(0) +\frac{f'(x_0)}{1!} (x-x_0) + + \frac{f''(0)}{2!}(x-0)^2 + \frac{f'''(0)}{3!}(x-0)^3 p_3(x) = 2 +\frac{1}{1}x + + \frac{0}{2}x^2 + \frac{-2}{6}x^3 p_3(x) = 2 + x - \frac{1}{3}x^3

2.1.2 Desarrollo con Python

Usando el algoritmo de Python tenemos que:

fx = 
 x           
e *cos(x) + 1
px = 
   3        
  x         
- -- + x + 2
  3         
x0 =  0
n =  3

ademas de la gráfica, donde se observa que el error aumenta al estar mas lejos de x0:

el algoritmo en python usado es:

# 1ra Evaluación II Término 2010. Tema 1
# polinomio de Taylor
import numpy as np
import sympy as sym

# INGRESO
x = sym.Symbol('x')
fx  = sym.exp(x)*sym.cos(x)+1
x0 = 0
n = 3
# datos para gráfica
a = -np.pi
b = np.pi
muestras = 51

# PROCEDIMIENTO
px = 0
k = 0
while not(k>n):
    derivada = fx.diff(x,k)
    numerador = derivada.subs(x,x0)
    denominador = np.math.factorial(k)
    termino = (numerador/denominador)*(x-x0)**k
    px = px + termino
    k = k+1

# Puntos para comparar gráficas:
xi = np.linspace(a,b,muestras)
# Transforma simbólica a numérica
fxn = sym.lambdify(x,fx)
fi = fxn(xi)
pxn = sym.lambdify(x,px)
pi = pxn(xi)

# SALIDA
print('fx = ')
sym.pprint(fx)
print('px = ')
sym.pprint(px)
print('x0 = ', x0)
print('n = ', n)

import matplotlib.pyplot as plt
etiquetafx = 'fx = '+str(fx)
plt.plot(xi,fi,label = etiquetafx)
etiquetapx = 'px = '+str(px)
plt.plot(xi,pi,label = etiquetapx)
plt.axvline(x0)
plt.title('Serie de Taylor: fx vs px')
plt.legend()
plt.show()

2.2 Aproximar una función con Series de Taylor

Desarrollar el polinomio de Taylor de tercer grado para la ecuación del problema presentado. n=3, alrededor de x0=0

http://blog.espol.edu.ec/matg1013/1eva_it2009_t1-demanda-de-producto/

f(t) = 200 t e^{-0.75t}

Realice el desarrollo analítico del problema y compruebe su respuesta con el resultado obtenido al usar el algoritmo con python.

fx = 
       -0.75*x
200*x*e       

 px = 
       3          2        
56.25*x  - 150.0*x  + 200*x

 x0 =  0
 n =  3

2.2.1 Desarrollo con python

# 1ra Evaluación I Término 2009. Tema 1
# polinomio de Taylor
import numpy as np
import sympy as sym

def politaylor(funcionx,x0,n):
    i = 0
    polinomio = 0
    while (i <= n):
        derivada   = funcionx.diff(x,i)
        derivadax0 = derivada.subs(x,x0)
        divisor   = np.math.factorial(i)
        terminoi  = (derivadax0/divisor)*(x-x0)**i
        polinomio = polinomio + terminoi
        i = i + 1
    return(polinomio)

# INGRESO
x = sym.Symbol('x')
fx  = 200*x*sym.exp(-0.75*x)
x0 = 0
n = 3
# datos para gráfica
a = 0
b = 2
muestras = 51

# PROCEDIMIENTO
px = politaylor(fx,x0,n)

# Puntos para comparar gráficas:
xi = np.linspace(a,b,muestras)
# Transforma simbólica a numérica
fxn = sym.lambdify(x,fx)
fi = fxn(xi)
pxn = sym.lambdify(x,px)
pi = pxn(xi)

# SALIDA
print('fx = ')
sym.pprint(fx)
print('\n px = ')
sym.pprint(px)
print('\n x0 = ', x0)
print('n = ', n)

import matplotlib.pyplot as plt
etiquetafx = 'fx = '+str(fx)
plt.plot(xi,fi,label = etiquetafx)
etiquetapx = 'px = '+str(px)
plt.plot(xi,pi,label = etiquetapx)
plt.title('Serie de Taylor: fx vs px')
plt.legend()
plt.show()

2.3 Aproximar una función con Series de Taylor

Desarrollar el polinomio de Taylor de tercer grado para la ecuación del problema presentado. n=3, alrededor de x0=0

c= 70 e^{-1.5t} + 25 e^{-0.075t}

http://blog.espol.edu.ec/matg1013/1eva_iit2008_t1_mn-bacterias-contaminantes/

comprobar su desarrollo analítico con:

fx = 
    -1.5*x       -0.075*x
70*e       + 25*e        

 px = 
                 3               2                 
- 39.3767578125*x  + 78.8203125*x  - 106.875*x + 95

 x0 =  0
 n =  3

que obtiene las siguientes gráficas:

 

2.4 Encontrar la raíz: Tasa de interes

Encontrar la tasa de interés del siguiente préstamo:

http://blog.espol.edu.ec/matg1013/1eva_it2012_t1_mn-tasa-de-interes/

Para el intervalo de análisis, considere que el prestamo no puede tener tasa de interes negativo, y que la tasa máxima de interés está regulada.

[ i, a, c, b, f(a), f(c), f(b), paso]
1 0.000 0.125 0.250 -999.880 617.150 2436.935 0.250 
2 0.000 0.063 0.125 -999.880 -219.639 617.150 0.125 
3 0.063 0.094 0.125 -219.639 192.060 617.150 0.062 
4 0.063 0.078 0.094 -219.639 -15.510 192.060 0.031 
5 0.078 0.086 0.094 -15.510 87.851 192.060 0.016 
6 0.078 0.082 0.086 -15.510 36.064 87.851 0.008 
7 0.078 0.080 0.082 -15.510 10.250 36.064 0.004 
8 0.078 0.079 0.080 -15.510 -2.636 10.250 0.002 
9 0.079 0.080 0.080 -2.636 3.805 10.250 0.001 
raiz:  0.0791083984375

las intrucciones usadas para encontrar la respuesta son:

# Tasa de interés
# 1ra Evaluación I Término 2012. Tema 1
import numpy as np

def biseccion(fx,a,b,tolera):
    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)
    return(tabla)

# INGRESO
fx = lambda x: (20000*x*(1+x)**5)/((1+x)**5-1) -5000
a = 0.00001
b = 0.25
tolera = 0.001
muestras = 51

# PROCEDIMIENTO
tabla = biseccion(fx,a,b,tolera)
n = len(tabla)
raiz = tabla[n-1,1]

# SALIDA
np.set_printoptions(precision = 4)
print('[ i, a, c, b, f(a), f(c), f(b), paso]')
# Tabla con formato
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)

# GRAFICA
import matplotlib.pyplot as plt

xi = tabla[:,2]
yi = tabla[:,5]

# ordena los puntos para la grafica
orden = np.argsort(xi)
xi = xi[orden]
yi = yi[orden]

plt.plot(xi,yi)
plt.plot(xi,yi,'o')
plt.axhline(0, color="black")

plt.xlabel('x')
plt.ylabel('y')
plt.title('Bisección en f(x)')
plt.grid()
plt.show()

2.5 Encontrar la raíz: Tasa de interes. Otro tema semejante:

1Eva_IT2016_T3_MN Tasa interés anual

Desarrolle el ejercicio de forma semejante al anterior, realice la tabla de datos.


3. Lecturas previas a semana 03

2.2 Punto fijo – Concepto

2.2.1 Punto fijo – Ejemplo01