CÓDIGO Método NEWTON RAPHSON en PYTHON


Hallar las raíces de ecuaciones algebraicas y trascendentes usando el método de Newton Raphson,código con Python.
puesta-marcha

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

Comentarios

Publicar un comentario