Código de Python - Newton Raphson - Python

Imágen de perfil
Val: 25
Ha disminuido su posición en 4 puestos en Python (en relación al último mes)
Gráfica de Python

Newton Raphson - Pythongráfica de visualizaciones


Python

Publicado el 27 de Marzo del 2020 por Aldo (2 códigos)
15.209 visualizaciones desde el 27 de Marzo del 2020
Este código permitirá resolver cualquier ecuación no lineal mediante el método de Newton Raphson.
Para esto sólo se requiereingresar la función completa F(x)=0.

p.ej.

F(x)=x^3+sin(x)-1=0

Asumimos el valor inicial: xo=1
Al resolver xn=0.706

xn : raiz de la ecuacion asociada a xo

x = xn - f(xn)/Df(xn)
si f(xn)<epsilon entonces regresa xn

Si Df(xn) == 0, entonces no encuentra solucion.

El numero de iteraciones sera:
max_iter

Python 3
estrellaestrellaestrellaestrellaestrella(6)

Publicado el 27 de Marzo del 2020gráfica de visualizaciones de la versión: Python 3
15.210 visualizaciones desde el 27 de Marzo del 2020
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#Import library
 
from newton_raphson import newton_raphson
import sympy as sym
x= sym.Symbol('x',real=True)
import math as math
 
#Parameter
row=1000 #density of water Kg/m3
g=9.81 # gravity m/s2
ri=2.20
ra=2.40; ka=1E-8
rg=2.50; kg=1E-7
Pi=4.2
 
###OLVE Pa: Concrete lining ###
#Fuction for solve
F_sim=x-2*sym.pi*ka/sym.log(ra/ri)*(1E+5*Pi/(row*g)-x/(2*sym.pi*kg)*sym.log(x/(sym.pi*kg*ra))-3/4*ra)
#Derivative
DF_sim=sym.diff(F_sim,x)
#lambdify for use fuction
F= sym.lambdify([x],F_sim,'numpy')
DF = sym.lambdify([x],DF_sim,'numpy')
#Eval
f = lambda x: F(x)
Df = lambda x: DF(x)
qa=newton_raphson(f,Df,1,1E-8,10) #Solve
print('qa=',"%.2E" % qa,'m3/s')
qa_km=qa*1E+6 #l/s/km
print('qa_km=',"%.2f" % qa_km,'l/s/km')
Pa=Pi-qa*(1E-5*row*g*math.log(ra/ri)/(2*math.pi*ka))
print('Pa=',"%.2f" % Pa,'bares')
 
 
######################### Fuction in the other script Python #################
 
def newton_raphson(f,Df,x0,epsilon,max_iter):
    xn = x0
    for n in range(0,max_iter):
        fxn = f(xn)
        if abs(fxn) < epsilon:
            print('Found solution after',n,'iterations.')
            return xn
        Dfxn = Df(xn)
        if Dfxn == 0:
            print('Zero derivative. No solution found.')
            return None
        xn = xn - fxn/Dfxn
    print('Exceeded maximum iterations. No solution found.')
    return None
 
'''Parameters:
    f : Function for which we are searching for a solution f(x)=0.
    Df : function Derivative of f(x).
    x0 : number Initial guess for a solution f(x)=0.
    epsilon : number Stopping criteria is abs(f(x)) < epsilon.
    max_iter : integer Maximum number of iterations of Newtons method.'''



Comentarios sobre la versión: Python 3 (6)

Imágen de perfil
31 de Marzo del 2020
estrellaestrellaestrellaestrellaestrella
Hola..
No he podido comprobar que hace la función correcta, da error en la linea 3.
Gracias.
Responder
Imágen de perfil
3 de Abril del 2020
estrellaestrellaestrellaestrellaestrella
Hola, si te da error en la linea 3 ( from newton_raphson import newton_raphson ).

Puedo asumir que no has creado la funcion newton_raphson.py en la misma ruta.

Debes tener el archivo newton_raphson.py en la misma ruta de trabajo conteniendo la la funcion que se encuentra debajo de:

######################### Fuction in the other script Python #################

Me comentas como te va. Saludos,
Responder
Imágen de perfil
4 de Abril del 2020
estrellaestrellaestrellaestrellaestrella
Hola Aldo.
Lo he comprobado y funciona, en cuanto cambie la ruta.
Gracias, Saludos.
Responder
Cesar
7 de Noviembre del 2020
estrellaestrellaestrellaestrellaestrella
Que representa epsilon?
el error tolerable?
Responder
Imágen de perfil
9 de Noviembre del 2020
estrellaestrellaestrellaestrellaestrella
Así es César, epsilon es la tolerancia, puedes controlar la iteración con ello.
Responder
Carlos Guerreiro
10 de Diciembre del 2023
estrellaestrellaestrellaestrellaestrella
Si Ud. supiera algo de Python seguramente no estaría aquí. Si Ud entendió algo de esos códigos, sin saber nada de Python, como yo, es un genio.. Menos mal que los que me enseñaron Newton-Raphson eran mucho mejores.
Responder

Comentar la versión: Python 3

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s6068