Descarga la aplicación para disfrutar aún más
Esta es una vista previa del archivo. Inicie sesión para ver el archivo original
import numpy as np import matplotlib.pyplot as plt def simpson_rule(f, a, b, n): """ Implementa la regla de Simpson para la integración numérica. Argumentos: - f: función a integrar - a: límite inferior de integración - b: límite superior de integración - n: número de subintervalos (debe ser par) Retorna: - El valor aproximado de la integral - Un array numpy con el procedimiento paso a paso (iteraciones, a, b, h, f(a), f(b), f((a+b)/2), integral) """ if n % 2 != 0: raise ValueError("El número de subintervalos debe ser par.") h = (b - a) / n x = np.linspace(a, b, n + 1) y = f(x) integral = h / 3 * np.sum(y[0:-1:2] + 4 * y[1::2] + y[2::2]) procedure = np.array([[0, a, b, h, y[0], y[-1], y[(n+1)//2], integral]]) # Array para almacenar el procedimiento paso a paso return integral, procedure # Creación de la función para la integral def f(x): return 400*x**5-900*x**4+675*x**3-200*x**2+25*x+0.2 # Parámetros de la integración numérica a = 0 # Límite inferior de integración b = 0.8 # Límite superior de integración n = 4 # Número de subintervalos (debe ser par) # Aplica la regla de Simpson integral, procedure = simpson_rule(f, a, b, n) # Imprime el procedimiento paso a paso print("Procedimiento de Integración Numérica (Regla de Simpson):") print("Iteración\t a\t\t b\t\t h\t\t f(a)\t\t f(b)\t\t f((a+b)/2)\t\t Integral") for step in procedure: iteration, a, b, h, fa, fb, fab, total = step print(f"{iteration}\t\t{a:.6f}\t\t{b:.6f}\t\t{h:.6f}\t\t{fa:.6f}\t\t{fb:.6f}\t\t{fab:.6f}\t\t{total:.6f}") # Grafica la función y el área aproximada x = np.linspace(a, b, 100) y = f(x) plt.figure() plt.plot(x, y, label='f(x)') plt.fill_between(x, y, where=(x >= a) & (x <= b), alpha=0.5, label='Área aproximada') plt.xlabel('x') plt.ylabel('f(x)') plt.title('Integración Numérica (Regla de Simpson)') plt.legend() plt.grid(True) plt.show()
Compartir