Hallar las raíces de ecuaciones algebraicas y trascendentes usando el método de Newton Raphson,código con Python.
sea la ecuacion $f(x)$ y su pendiente $f'(x)$ es la derivada de la ecuación.
$f'(x)=\frac{f(x)-0}{x_{i}-x_{i+1}}$
reordenando
$x_{i+1}=x_i-\frac{f(x_i)}{f'(x)}$
se obtiene la formula de Newton-Raphson.
el error aproximado $e_a$:$e_a=|\frac{x_{i+1}-x_i}{x_{i+1}}|100%}$
El método finaliza si:
$e_a<e_s$
$e_s$ :la tolerancia estimada.
CÓDIGO
# -*- coding: utf-8 -*-
"""
Created on Sat May 9 21:08:14 2020
@author: ygyel
"""
import sympy as sp
import numpy as np
import pandas as pd
x=sp.symbols('x')
def funcion(ecua='x+2'):
global x
return sp.sympify(ecua)
""" ecuacion tipo: string
x_0: valor inicial tipo:float
e_s tolerancia estimada tipo:float"""
def MetodoPF(ecuacion,x_0,es):
global x
ecuacion=funcion(ecuacion)
derivada=sp.diff(ecuacion)
f_NR=x-(ecuacion/derivada)#formula de Newton Rhapson
ea=100 #error aproximado 100%
x_r=x_0 #x_i+1
while ea>es:
x_anterior=x_r# x_anterior = x_i
x_r=f_NR.evalf(subs={x:x_anterior})
if x_r !=0:
ea=abs((x_r-x_anterior)/x_r)*100
print(iteracion,x_r,ea)
return x_r
#iniamos el programa con lo siguiente parametros
a=MetodoPF('exp(-x)-x',0,0.01)
print("raiz aproximada: ",a)
RESULTADO
raíz aproximada: 0.567143290409781
sustituyendo la raíz aproximada en la ecuación original si el resultado se acerca a cero
>>>comprobacion=funcion('exp(-x)-x')
>>>comprobacion.evalf(subs={x:a})
>>>4.40123750665911e-15
la raiz aproximada evaluada en al ecuacion se aproxima a cero,por lo cual es correcto el resultado

¿Podrías proporcionarme tus carpetas importadas?
ResponderBorrar