Logo Studenta

Metodo_punto_medio

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

import numpy as np
import matplotlib.pyplot as plt
# Función para calcular el método del punto medio
def punto_medio(f, a, b, n):
 h = (b - a) / n # Tamaño del intervalo
 x = np.linspace(a, b, n+1) # Puntos equidistantes
 y = np.zeros(n+1) # Vector para almacenar las soluciones
 y[0] = f(a) # Condición inicial
 
 # Iteración del método del punto medio
 for i in range(n):
 x_mid = (x[i] + x[i+1]) / 2
 y_mid = y[i] + h * f(x[i]) / 2
 y[i+1] = y[i] + h * f(x_mid)
 
 return x, y
# Función de ejemplo
def f(x):
 return x * np.exp(x)
# Solución exacta
def exact_solution(x):
 return (x - 1) * np.exp(x)
# Intervalo de integración
a = 0
b = 1
# Número de subintervalos
n = 10
# Calcular el método del punto medio
x, y = punto_medio(f, a, b, n)
# Calcular la solución exacta
exact_x = np.linspace(a, b, n+1)
exact_y = exact_solution(exact_x)
# Imprimir procedimiento
print("Procedimiento del método del punto medio:")
for i in range(n+1):
 print(f"y({x[i]:.2f}) = {y[i]:.6f}")
# Graficar resultados
plt.plot(exact_x, exact_y, 'g', label='Solución exacta')
plt.plot(x, y, 'r.-', label='Aproximación')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Método del Punto Medio')
plt.legend()
plt.grid(True)
plt.show()

Continuar navegando