import numpy as np
import matplotlib.pyplot as plt

# ==========================================
# Serie de Taylor de sin(x) alrededor de x0
# ==========================================

# Punto de expansión
x0 = 1.0
# Punto de expansión
a=0.3
b=1.6

# Intervalo de visualización
x = np.linspace(a, b, 1000)

# Función exacta
f = np.sin(x)

# Aproximaciones de Taylor de sin(x) centradas en x0
# Orden 1
T1 = np.sin(x0) + np.cos(x0)*(x - x0)
# Orden 2
T2 = np.sin(x0) + np.cos(x0)*(x - x0) - np.sin(x0)/2*(x - x0)**2
# Orden 3
T3 = np.sin(x0) + np.cos(x0)*(x - x0) - np.sin(x0)/2*(x - x0)**2 - np.cos(x0)/6*(x-x0)**3

# ==========================================
# Gráfica
# ==========================================
plt.figure(figsize=(10, 6))

plt.plot(x, f, label='sin(x)', linewidth=2)
plt.plot(x, T1, '--', label='Taylor orden 1')
plt.plot(x, T2, '--', label='Taylor orden 2')
plt.plot(x, T3, '--', label='Taylor orden 3')

# Marcar el punto x0
plt.axvline(x=x0, linestyle=':', linewidth=1)
plt.scatter([x0], [np.sin(x0)], zorder=5)

plt.title('Aproximaciones de Taylor de sin(x)', fontsize=18)
plt.xlabel("$x$", fontsize=16)
plt.ylabel("$f(x)$", fontsize=16)
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
plt.legend()
plt.grid(True)
plt.show()

# Punto donde queremos evaluar
xp = 1.5

# Valor exacto
f_exacta = np.sin(xp)

# Aproximaciones de Taylor
T1 = np.sin(x0) + np.cos(x0)*(xp-x0)
T2 = np.sin(x0) + np.cos(x0)*(xp-x0) - (np.sin(x0)/2)*(xp-x0)**2
T3 = (np.sin(x0) + np.cos(x0)*(xp-x0) - (np.sin(x0)/2)*(xp-x0)**2
      - (np.cos(x0)/6)*(xp-x0)**3)

# Función para calcular errores
def calcular_errores(valor_real, aproximacion):
    error_absoluto = abs(valor_real - aproximacion)
    error_relativo = (error_absoluto / abs(valor_real))*100
    error_truncamiento = valor_real - aproximacion
    return error_absoluto, error_relativo, error_truncamiento

# Cálculo de errores
ea1, er1, et1 = calcular_errores(f_exacta, T1)
ea2, er2, et2 = calcular_errores(f_exacta, T2)
ea3, er3, et3 = calcular_errores(f_exacta, T3)

# Resfultados print(fo{lumen = }"({Vol:.2f} ± {Deltav:.2f}) cm³")
print(f"Punto evaluado xp = {xp}")
print(f"Valor exacto = {f_exacta:.4f}")
print()

print(f"Aproximación a primer orden = {T1:.4f}")
print(f"Error absoluto = {ea1:.4f}")
print(f"Error relativo = {er1:.4f}%")
print()

print(f"Aproximación a segundo orden = {T2:.4f}")
print(f"Error absoluto = {ea2:.4f}")
print(f"Error relativo = {er2:.4f}%")
print()

print(f"Aproximación a tercer orden = {T3:.4f}")
print(f"Error absoluto = {ea3:.4f}")
print(f"Error relativo = {er3:.4f}%")

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: