Logo Studenta

Integracion_numerica_simpson

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

Continuar navegando

Materiales relacionados