Logo Studenta

Integracion_numerica_trapecio

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()

Continuar navegando

Materiales relacionados