import numpy as np

# ==============================
# Función de prueba
# ==============================
def f(x):
    return np.exp(x)

# Derivada exacta de f(x)=e^x
def df_exacta(x):
    return np.exp(x)

# Segunda derivada exacta de f(x)=e^x
def d2f_exacta(x):
    return np.exp(x)


# ==============================
# Diferencias finitas
# ==============================
def diferencia_adelante(f, x, h):
    """
    Aproxima f'(x) usando diferencia finita hacia adelante.
    """
    return (f(x + h) - f(x)) / h


def diferencia_atras(f, x, h):
    """
    Aproxima f'(x) usando diferencia finita hacia atrás.
    """
    return (f(x) - f(x - h)) / h


def diferencia_centrada(f, x, h):
    """
    Aproxima f'(x) usando diferencia finita centrada.
    """
    return (f(x + h) - f(x - h)) / (2*h)


def segunda_derivada(f, x, h):
    """
    Aproxima f''(x) usando diferencia finita centrada.
    """
    return (f(x + h) - 2*f(x) + f(x - h)) / h**2


# ==============================
# Datos del problema
# ==============================
x0 = 1.0
h = 0.01

# ==============================
# Cálculos
# ==============================
D_adelante = diferencia_adelante(f, x0, h)
D_atras = diferencia_atras(f, x0, h)
D_centrada = diferencia_centrada(f, x0, h)
D2 = segunda_derivada(f, x0, h)

exacta_primera = df_exacta(x0)
exacta_segunda = d2f_exacta(x0)


# ==============================
# Resultados
# ==============================
print("Punto x0 =", x0)
print("Paso h =", h)
print()

print("Primera derivada exacta:")
print(exacta_primera)
print()

print("Diferencia hacia adelante:")
print(D_adelante)
print("Error absoluto:", abs(exacta_primera - D_adelante))
print()

print("Diferencia hacia atrás:")
print(D_atras)
print("Error absoluto:", abs(exacta_primera - D_atras))
print()

print("Diferencia centrada:")
print(D_centrada)
print("Error absoluto:", abs(exacta_primera - D_centrada))
print()

print("Segunda derivada exacta:")
print(exacta_segunda)
print()

print("Segunda derivada aproximada:")
print(D2)
print("Error absoluto:", abs(exacta_segunda - D2))

Embed on website

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