Logo Studenta

metodo_puntofijo

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)

Continuar navegando