Código de Python - Newton Raphson - Python

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

Newton Raphson - Pythongráfica de visualizaciones


Python

estrellaestrellaestrellaestrellaestrella(3)
Publicado el 27 de Marzo del 2020 por Aldo (2 códigos)
710 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(3)

Publicado el 27 de Marzo del 2020gráfica de visualizaciones de la versión: Python 3
711 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 (3)

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

Comentar la versión: Python 3

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s6068