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 trapezoidal_rule(f, a, b, n): """ Implementa la regla del trapecio 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 Retorna: - El valor aproximado de la integral - Un array numpy con el procedimiento paso a paso (iteraciones, a, b, h, (f(a)+f(b))/2, sum) """ h = (b - a) / n x = np.linspace(a, b, n + 1) y = f(x) integral = h * (np.sum(y) - (y[0] + y[-1]) / 2) procedure = np.array([[0, a, b, h, (y[0] + y[-1]) / 2, integral]]) # Array para almacenar el procedimiento paso a paso return integral, procedure # Ejemplo de función a integrar: f(x) = x^2 def f(x): return 0.2+25*x-200*x**2+675*x**3-900*x**4+400*x**5 # 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 = 2,4 # Número de subintervalos # Aplica la regla del trapecio integral, procedure = trapezoidal_rule(f, a, b, n) # Imprime el procedimiento paso a paso print("Procedimiento de Integración Numérica (Regla del Trapecio):") print("Iteración\t a\t\t b\t\t h\t\t (f(a)+f(b))/2\t\t Sum") for step in procedure: iteration, a, b, h, avg, total = step print(f"{iteration}\t\t{a:.1f}\t\t{b:.1f}\t\t{h:.2f}\t\t{avg:.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 del Trapecio)') plt.legend() plt.grid(True) plt.show()
Compartir