Logo Studenta

metodo_newton

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 newton(f, df, x0, tol, max_iter):
 """
 Implementa el método de Newton para encontrar la raíz de una función.
 Argumentos:
 - f: función para la cual se desea encontrar la raíz
 - df: derivada de la función f
 - x0: valor inicial
 - tol: tolerancia para la convergencia
 - max_iter: número máximo de iteraciones permitidas
 Retorna:
 - El valor de la raíz encontrada
 - Un array numpy con el procedimiento paso a paso (iteraciones, x, f(x))
 """
 procedure = [] # Lista para almacenar el procedimiento paso a paso
 iteration = 1
 x = x0
 fx = f(x)
 while np.abs(fx) > tol and iteration <= max_iter:
 dfx = df(x)
 if dfx == 0:
 raise ValueError("La derivada de la función es cero en el punto dado.")
 x = x - fx / dfx
 fx = f(x)
 procedure.append([iteration, x, fx])
 iteration += 1
 return x, np.array(procedure)
# Ejemplo de función: f(x) = x^3 - x - 2
def f(x):
 return x**3 - x - 2
# Derivada de la función: f'(x) = 3x^2 - 1
def df(x):
 return 3*x**2 - 1
# Parámetros de la simulación
x0 = 1 # Valor inicial
tol = 1e-6 # Tolerancia para la convergencia
max_iter = 100 # Número máximo de iteraciones permitidas
# Aplica el método de Newton
root, procedure = newton(f, df, x0, tol, max_iter)
# Calcular el error relativo porcentual
errors = [abs(f(x)) / abs(f(procedure[0])) * 100 for x in procedure]
# Imprime el procedimiento paso a paso
print("Procedimiento de Newton:")
print("Iteración\t x\t\t f(x)")
for step in procedure:
 iteration, x, fx = step
 print(f"{iteration}\t\t{x:.6f}\t\t{fx:.6f}")
# Grafica la función y el resultado
x = np.linspace(0, 3, 100)
y = f(x)
plt.figure()
plt.plot(x, y, label='f(x)')
plt.axhline(0, color='r', linestyle='--', label='Eje x')
plt.plot(root, f(root), 'ro', label='Raíz')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title('Método de Newton')
plt.legend()
plt.grid(True)
plt.show()
# Imprime la raíz encontrada
print("\nRaíz encontrada:", root)
# Imprimir el error relativo porcentual
print("Error relativo porcentual:")
for i, error in enumerate(errors):
 print(f"Iteración {i+1}: {error[2]}%")

Continuar navegando

Contenido elegido para ti

18 pag.
Metodo de Newton Raphson

Estado De Tabasco

User badge image

mary manoban

2 pag.
Método de Newton

ITSON

User badge image

Jesus ER