Cómo sería el método para que una persona digite los parámetros como función, xi, todo y el programa haga la derivada e imprima las iteraciones? Yo le pongo los inputs en las variables y por alguna razón no me funciona.
Para Python todo lo que se digita por input es reconocido como cadena de caracteres, por ello toca convertirlo al tipo de variable correspondiente; por ejemplo, para el número de iteraciones conviene algo como esto n=int( input('Digite el número de iteraciones ') ) En este video se explica ese inconveniente th-cam.com/video/r4s4fHLq_iY/w-d-xo.html
@@programmath import sympy as sp from math import * #se importan todas las funciones de la libreria def newtonraphson(): x=sp.symbols('x') #se crea la variable y se define cual va a ser su invocaion f= input('Ingrese la funcion de variable (x): ') #se utilizara X como variable df=sp.diff(f)#se realiza la derivada de la funcion introducida f=sp.lambdify(x,df) df=sp.lambdify(x,df) x0=float(input('digite valor un valor inicial: ')) #x0=float(x0) n = input('digite la cantidad de iteraciones a realizar: ') n = int👎 tol = input('digite el error maximo permitido: ') tol = float(tol) for k in range(n): x1=x0-(f(x0)/df(x0)) if(abs(x1-x0)
Necesito hacer la solución con el método de Newton, el cual es con la primera y segunda derivada. Tendría que definir como F(x) la primera derivada y como df(x) la segunda?
Asumo que lo que buscan es usar el método para hallar máximos y mínimos, en ese caso f(x) debe ser la derivada de la función que te dan en el problema.
Este es un ejemplo de como generar la gráfica de y=x^2 en el intervalo [-3,3] --------------- import matplotlib.pyplot as plt import numpy as np x=np.linspace(-3,3,30); y=x**2 plt.plot(x,y) --------------
import sympy as np from math import* def f(x): func=0.65*2+5.68*np.log(1+(x)/5.68); return func def df(x): return (5.68)/(1+x) def NewtonRaphson(x0,tol,n): for k in range(n): x1=x0-f(x0)/df(x0) if(abs(x1-x0)
Lo único que le cambie al programa fueron las sangrías, las puse empleando tab. El código me compila y ejecuta sin contratiempos. import sympy as np from math import* def f(x): func=0.65*2+5.68*np.log(1+(x)/5.68); return func def df(x): return (5.68)/(1+x) def NewtonRaphson(x0,tol,n): for k in range(n): x1=x0-f(x0)/df(x0) if(abs(x1-x0)
El error, en el código, es dado por abs(x1-x0) [error absoluto]. Este corresponde a la diferencia (positiva) entre el resultado de la iteración anterior y el de la actual.
@@programmath sera? def f(x):#definicion de la funcion func=pow(x,3)+2*pow(x,2)+10*x-20 return func def df(x):#derivada de la funcion return 3*pow(x,2)+4*x+10 def NewtonRaphson(x0,to1,n):#definir funcion de newtonRaphson for k in range(n):#funcion de iteracciones #iteracciones realisadas por la siguiente formula x1=x0-f(x0)/df(x0) if(abs(x1-x0)
Uff papi, vos sos muy crack, todos los cuchos que veia explicando este tema daban la de sueño, en cambio vos +10
Gracias por tu comentario, me da ánimo para continuar con el canal.
Buenas, y para resolver un sistema de ecuaciones con este metodo?
PD: Buenos videos, gracias de antemano
Cómo sería el método para que una persona digite los parámetros como función, xi, todo y el programa haga la derivada e imprima las iteraciones? Yo le pongo los inputs en las variables y por alguna razón no me funciona.
Para Python todo lo que se digita por input es reconocido como cadena de caracteres, por ello toca convertirlo al tipo de variable correspondiente; por ejemplo, para el número de iteraciones conviene algo como esto
n=int( input('Digite el número de iteraciones ') )
En este video se explica ese inconveniente
th-cam.com/video/r4s4fHLq_iY/w-d-xo.html
@@programmath
import sympy as sp
from math import * #se importan todas las funciones de la libreria
def newtonraphson():
x=sp.symbols('x') #se crea la variable y se define cual va a ser su invocaion
f= input('Ingrese la funcion de variable (x): ') #se utilizara X como variable
df=sp.diff(f)#se realiza la derivada de la funcion introducida
f=sp.lambdify(x,df)
df=sp.lambdify(x,df)
x0=float(input('digite valor un valor inicial: '))
#x0=float(x0)
n = input('digite la cantidad de iteraciones a realizar: ')
n = int👎
tol = input('digite el error maximo permitido: ')
tol = float(tol)
for k in range(n):
x1=x0-(f(x0)/df(x0))
if(abs(x1-x0)
Necesito hacer la solución con el método de Newton, el cual es con la primera y segunda derivada. Tendría que definir como F(x) la primera derivada y como df(x) la segunda?
Asumo que lo que buscan es usar el método para hallar máximos y mínimos, en ese caso f(x) debe ser la derivada de la función que te dan en el problema.
tengo una duda
este codigo solo sirve para las funciones que tenga cosenos, como en tu ejemplo cos(x)-x**3
?
Si necesitas otra función, solo cambias esa línea por la función deseada; puede ser cualquiera.
COMO SE PUEDE REALIZAR LA GRÁFICA ?
Este es un ejemplo de como generar la gráfica de y=x^2 en el intervalo [-3,3]
---------------
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,30);
y=x**2
plt.plot(x,y)
--------------
AttributeError: module 'sympy' has no attribute 'assumptions' me sale eso
Parece un problema con la librería sympy al usar alguno de los comandos. Comparteme tu código para revisarlo.
hola bro el codigo no compila a que se debe,
?
Muéstrame el error que te da Python.
estos son los codigos y no compila, espero tu respuesta por favor
import sympy as np
from math import*
def f(x):
func=0.65*2+5.68*np.log(1+(x)/5.68);
return func
def df(x):
return (5.68)/(1+x)
def NewtonRaphson(x0,tol,n):
for k in range(n):
x1=x0-f(x0)/df(x0)
if(abs(x1-x0)
Lo único que le cambie al programa fueron las sangrías, las puse empleando tab. El código me compila y ejecuta sin contratiempos.
import sympy as np
from math import*
def f(x):
func=0.65*2+5.68*np.log(1+(x)/5.68);
return func
def df(x):
return (5.68)/(1+x)
def NewtonRaphson(x0,tol,n):
for k in range(n):
x1=x0-f(x0)/df(x0)
if(abs(x1-x0)
Si quisiera calcular el error como le haría ?
El error, en el código, es dado por abs(x1-x0) [error absoluto]. Este corresponde a la diferencia (positiva) entre el resultado de la iteración anterior y el de la actual.
por que solo me imprime una iteraccion :c
Es posible que el print esté fuera del ciclo.
@@programmath sera?
def f(x):#definicion de la funcion
func=pow(x,3)+2*pow(x,2)+10*x-20
return func
def df(x):#derivada de la funcion
return 3*pow(x,2)+4*x+10
def NewtonRaphson(x0,to1,n):#definir funcion de newtonRaphson
for k in range(n):#funcion de iteracciones
#iteracciones realisadas por la siguiente formula
x1=x0-f(x0)/df(x0)
if(abs(x1-x0)
Las líneas
x0=x1
print(.......)
Están dentro del if, redúceles la sangría para que queden fuera del if, pero dentro del for.
@@programmath ok gracias
Gracias