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 fixed_point_iteration(g, x0, epsilon, max_iterations): """ Implementa el método de punto fijo para encontrar una raíz de una función. Argumentos: - g: función de iteración - x0: valor inicial - epsilon: tolerancia para la convergencia - max_iterations: número máximo de iteraciones Retorna: - La raíz encontrada - Un array numpy con el procedimiento paso a paso (iteraciones, x, g(x), abs(g(x) - x)) """ procedure = np.array([[0, x0, g(x0), np.nan]]) for i in range(1, max_iterations + 1): x = g(x0) procedure = np.vstack((procedure, [i, x, g(x), abs(g(x) - x)])) if abs(g(x) - x) < epsilon: break x0 = x return x, procedure # Ejemplo de función y función de iteración def g(x): return np.sin(x) + x/2 # Parámetros del método de punto fijo x0 = 0.5 # Valor inicial epsilon = 1e-6 # Tolerancia para la convergencia max_iterations = 100 # Número máximo de iteraciones # Aplica el método de punto fijo root, procedure = fixed_point_iteration(g, x0, epsilon, max_iterations) # Imprime el procedimiento paso a paso print("Procedimiento de Punto Fijo:") print("Iteración\t x\t\t g(x)\t\t |g(x) - x|") for step in procedure: iteration, x, gx, difference = step print(f"{iteration}\t\t{x:.6f}\t\t{gx:.6f}\t\t{difference:.6f}") # Grafica la función y los puntos de iteración x = np.linspace(-2, 2, 100) y = g(x) plt.figure() plt.plot(x, y, label='g(x)') plt.scatter(procedure[:, 1], procedure[:, 2], color='red', label='Puntos de iteración') plt.axhline(0, color='black', linestyle='--') plt.axvline(root, color='green', linestyle='--', label='Raíz') plt.xlabel('x') plt.ylabel('y') plt.title('Método de Punto Fijo') plt.legend() plt.grid(True) plt.show() # Imprime la raíz encontrada print("\nRaíz encontrada:", root)
Compartir