s1Eva2010TII_T1 Aproximar f(x) con polinomio

Ejercicio: 1Eva2010TII_T1 Aproximar f(x) con polinomio

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

Desarrollo Analítico

f(x) = exp(x)cos(x) + 1 gráfica

literal a.

Aproximar f(x) a un polinomio de grado 2 usando interpolación polinómica que incluye los puntos:

[0, π/2, π]

Siguiendo la unidad 4 para interpolación, el polinomio requerido tiene la forma:

p(x) = a + bx + cx2

por lo que conociendo los pares ordenados por donde debe pasar se puede plantear las ecuaciones y encontrar a,b,c.

f(0) = e^0 \cos (0) +1 = 2 f(\pi/2) = e^{\pi/2} \cos (\pi /2) +1 = 1(0)+1 =1 f(\pi) = e^{\pi} \cos (\pi) +1 = e^{\pi} +1

Reemplazando los valores de x=0, x =π/2 y x=π se tiene:

p(0)   = a + (0) b + (0)2 c = 2
p(π/2) = a + (π/2) b + (π/2)2 c = 1
p(π)   = a +    π  b +   (π)2 c = eπ +1

se observa que a=2 que se convierte en:

(π/2) b + (π/2)2 c = -1
   π  b +   (π)2 c = eπ - 1

al multiplicar la primera ecuación por 2 y restando de la segunda

2(π/2) b + 2(π/2)2 c = -2
    π  b +    (π)2 c = eπ - 1
-----------------------------
    0  b - (π)2/2 c = -eπ - 1

queda:

c = (2/(π)2)(eπ + 1)

y sustituir c en la segunda ecuación:

π b + (π)2 (2/π2)(eπ +1) = eπ -1
π b = eπ -1 - 2(eπ +1) = eπ -1 - 2eπ -2
b = (-eπ -3)/π = -(eπ +3)/π

El polinomio resultante es:

p(x) = 2 - \frac{e^{\pi}+3}{\pi}x + \frac{2(e^{\pi}+1)}{\pi ^2}x^2
s1Eva_IIT2010_T1_AN Taylor 01

Se realiza la gráfica con los valores de la función y polinomio p(x), confirmando que el polinomio pasa por los puntos de muestra y se visualiza el error de aproximación.

En la gráfica también se añade un polinomio equivalente usando el método del polinomio de Taylor desarrollado en la opción 2.

Solo es necesario realizar una opción. Para fines didácticos se ofrece otra alternativa usando el polinomio de Taylor con tres términos donde el grado del polinomio es 2.

Con los resultados es posible encontrar el valor errado entre f(x) y p(x) en el intervalo.

errado = f(x)-p(x) errado = e^x \cos (x) +1-\left(2 - \frac{e^{\pi}+3}{\pi}x + \frac{2(e^{\pi}+1)}{\pi ^2}x^2 \right)

Para encontrar el mayor error se obtiene la derivada de la expresión

errado' = e^x \cos (x) -e^x \sin(x) + \frac{e^{\pi}+3}{\pi} - \frac{4(e^{\pi}+1)}{\pi ^2}x

Literal b

El valor máximo se obtiene cuando la función que representa el valor errado pasa por cero.

La expresión del ejercicio será:

g(x) = e^x \cos (x) -e^x \sin(x) + \frac{e^{\pi}+3}{\pi} - \frac{4(e^{\pi}+1)}{\pi ^2}x

Para usar Newton-Raphson se requiere la derivada de la función g(x)

g'(x) = e^x \cos (x) -e^x \sin(x) -(e^x \sin(x)+e^x \cos(x)) - \frac{4(e^{\pi}+1)}{\pi ^2} g'(x) = -2e^x \sin(x)- \frac{4(e^{\pi}+1)}{\pi ^2}

El desarrollo de las iteraciones en papel con Newton-Raphson queda como tarea.

Los resultados con x0=0 son:

Método de Newton-Raphson
i ['xi', 'fi', 'dfi', 'xnuevo', 'tramo']
0 [ 0.      9.3208 -9.7839  0.9527  0.9527]
1 [  0.9527  -1.6105 -14.0097   0.8377   0.115 ]
2 [ 8.3772e-01 -4.6239e-02 -1.3219e+01  8.3422e-01  3.4980e-03]
3 [ 8.3422e-01 -3.9892e-05 -1.3196e+01  8.3422e-01  3.0231e-06]
Método de Newton-Raphson
itera  :  4
raíz en:  0.8342204954221621
errado :  3.023091208476103e-06
función errado g(x) en mínimo

Opción 2. Usando el polinomio de Taylor

Usando Unidad 1 Polinomio de Taylor, supondremos que:  x0=0

El polinomio de Taylor requerido es de: grado 2

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

Se escribe la función f(x) y sus derivadas para el polinomio:

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

primera derivada

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

segunda derivada

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

Punto de referencia x0 = 0, tomado como ejemplo dentro del intervalo.

Observación: escriba las expresiones, reemplazando los valores.

Un criterio de evaluación es que, si en la lección o examen no tuvo tiempo para usar la calculadora, se puede evaluar si realizaba las operaciones con el punto de referencia y expresiones correctas.

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

Sustitución en el polinomio de Taylor p(x) planteado:

p_2(x) = f(x_0) + \frac{f'(x_0)}{1!}(x-x_0) + \frac{f''(x_0)}{2!}(x-x_0)^2 P_{2}(x) = 2+\frac{1}{1} (x-0) + + \frac{0}{2}(x-0)^2 + P_{2}(x) = 2+ x

El error referenciado a los otros puntos será:

errado = |f(x)-p(x)| errado = \Big|\Big( e^x \cos (x) +1 \Big) - (2+ x)\Big|

usando un punto diferente a x0=0, como x = π/2

errado = \Big| \Big( e^{\frac{\pi}{2}}\cos \Big( \frac{\pi}{2} \Big) +1 \Big) - \Big(2+ \frac{\pi}{2}\Big) \Big| errado = | 1 - 3.5707| = 2.5707

Tarea: calcular el error,  para x = π, verificando que pase por los puntos requeridos.


Algoritmo con Python usando polinomio de Taylor

Algoritmo desarrollado en clase, usado como taller, modificado para el problema planteado.

Observación: Se reordena el algoritmo para mantener ordenados y separados los bloques de ingreso, procedimiento y salida. Así los bloques pueden ser convertidos fácilmente a funciones algorítmicas def-return.

Observe que la variable n se interprete correctamente como "términos" o "grados" del polinomio de Taylor.

# Aproximación Polinomio de Taylor alrededor de x0
# f(x) en forma simbólica con sympy
import numpy as np
import math
import sympy as sym

# INGRESO --------------------
x = sym.Symbol('x')
fx = sym.exp(x)*sym.cos(x) + 1

x0 = 0
n  = 3 # grado de polinomio

# Intervalo para Gráfica
a = 0
b = np.pi
muestras = 21

# PROCEDIMIENTO  -------------
# construye polinomio Taylor
k = 0 # contador de términos
polinomio = 0
while (k <= n):
    derivada   = fx.diff(x,k)
    derivadax0 = derivada.subs(x,x0)
    divisor   = math.factorial(k)
    terminok  = (derivadax0/divisor)*(x-x0)**k
    polinomio = polinomio + terminok
    k = k + 1

# forma lambda para evaluación numérica
fxn = sym.lambdify(x,fx,'numpy')
pxn = sym.lambdify(x,polinomio,'numpy')

# evaluar en intervalo para gráfica
xi = np.linspace(a,b,muestras)
fxi = fxn(xi)
pxi = pxn(xi)

# SALIDA  --------------------
print('polinomio p(x)=')
print(polinomio)
print()
sym.pprint(polinomio)

# Gráfica
import matplotlib.pyplot as plt
plt.plot(xi,fxi,label='f(x)')
plt.plot(xi,pxi,label='p(x)')
# franja de error
plt.fill_between(xi,pxi,fxi,color='yellow')
plt.xlabel('xi')
plt.axvline(x0,color='green', label='x0')
plt.axhline(0,color='grey')
plt.title('Polinomio Taylor: f(x) vs p(x)')
plt.legend()
plt.show()

Resultado del algoritmo

Revisar si el polinomio es concordante con lo realizado a lápiz y papel, de no ser así revisar el algoritmo o los pasos realizados en papel, deben ser iguales.
Comprobando que el algoritmo esté correcto y pueda ser usado en otros ejercicios.

polinomio p(x)=
-x**3/3 + x + 2

   3        
  x         
- -- + x + 2
  3         

Resultados gráficos para x0=0

Taylor Tarea 01

Continuar con el ejercicio con x0 = π y luego con el siguiente punto x0 = π/2.

Comparar resultados y presentar: Observaciones  y recomendaciones semejantes a las indicadas durante el desarrollo de la clase.


Ejemplos por año