Hola. Mira, para la situación que planteas están otros métodos como el de la bisección. Newton-Rhapson funciona con un único valor de arranque. Feliz día.
Hola. La fórmula que planteas es la usada para el error relativo. Recuerda que la idea es que no conocemos el valor real de la raíz (el exacto), por lo que se hace es calcular un error de aproximación y este hace referencia a qué tan pequeño se hace la diferencia entre los diferentes resultados de las iteraciones. Si lo que uno desea es tener un resultado con n cifras decimales exactas (lo que es lo típico en estas situaciones) entonces debe calcular abs(x1-x0) lo cual me indicará que mi precisión ronda en esa precisión decimal. El cálculo del error relativo no es el indicado, tiene otro propósito. Saludos.
Hola. Sí, usando el paquete Sympy para manipulación simbólica en Python. Feliz día. Gracias, me has dado una idea para un nuevo video... hace rato no hago... no tengo tiempo casi :(
Hola. Tal vez a lo que te refieras es a crear una función que use internamente el algoritmo de Newton-Rhapson para hallar una raíz de una función dada. Es básicamente crear dicha función poniendo dentro los pasos claves del algoritmo. Aquí el propósito es explicar con detalle qué es lo que hace el método, cómo es que en cada iteración se va aproximando a la raíz, etc., esto es, entender el método. Hay librerías de Python que traen funciones optimizadas para resolver este tipo de problemas (como Scipy con su módulo optimize, más concretamente la función "newton" cuya sintaxis general es: scipy.optimize.newton(func, x0, fprime=None, args=(), tol=1.48e-08, maxiter=50, fprime2=None)) pero insisto que lo que buscaba era mostrar la "magia" que hay dentro de este método. Pero si quieres crear tu propia función llamada "nw" puedes crearla con "def nw(fun, x0, tol, maxiter):" o como quieras, e internamente poner lo que viste en el video y decirle que te retorne lo que necesites (raiz, error aproximado, iteraciones realizadas, etc.) de lo que opere. Buen día y gracias por comentar :)
Que tal amigo, una consulta, estoy utilizando python y pypower; ahí existe un ejemplo que se llama "case30" quiero correr un Flujo de Potencia (runpf) y un Flujo optimo (runopf) y me sale el siguiente error 'numpy.float64' object cannot be interpreted as an integer, favor su ayuda saludos
Hola Cristian. Mira, desconozco el proceso que estés realizando pero basado en ese mensaje de error te diría que lo que ocurre es que el sistema está esperando que se le entregue un valor entero (integer) y tu le estás entregando un número en formato de coma flotante (float). Acabo de leer en un foro en donde mencionan el hecho de que en versiones anteriores de Numpy este no ponía problemas en algunos casos, pero las versiones más recientes se han puesto un poco más estrictas al respecto. Lo que debes hacer es revisar el código y encontrar la variable o parámetro que se pide entera y que tu le entregas como flotante para que hagas el cambio respectivo de formato. Buen día y éxitos con eso.
Imagino que ya lo habrás sacado pero... Lo hace para que no haga más iteraciones de las necesarias. Por ejemplo: Si la iteración 5 y la 6 son iguales pues sale (son iguales o varia menos de 1e-10 en este caso)
Hola. Me alegro mucho que te sirviera el video. Mira, en este caso la implementación en python 2.7 de lo hecho en el video simplemente varía en que si usas python 2.7 debes poner poner "print x0" en lugar de "print(x0)" y así para los otros momentos donde aparezca "print". No veo que se requiera otro cambio en lo hecho. Córrelo y me cuentas. Feliz día.
Hola. Sí, hay varias maneras. La más común es usando el paquete Pandas, el cual tiene cualquier cantidad de herramientas interesantes para datos. Saludos.
Hola! Comprendo lo que dices, pero en realidad es cuestión de gustos. A mi personalmente me gusta tener las gráficas afuera del cuaderno (ya que qt me permite hacerle muchas cosas interesantes para efecto de posterior exportación)... de hecho las versiones más recientes de Jupyter por defecto ponen las gráficas dentro y una de las primeras cosas que hago es poner el comando % matplotlib qt para que me las deje por fuera. Pero de todas maneras muchas gracias por comentar y por ver mis videos. Un feliz día para ti. :)
@@math4cheems Hola, gracias por tu video. He entendido muchas cosas. Sólo tengo una duda, ya que a mi la gráfica me sale dentro del cuaderno de Jupyter y no encontré la manera de que sea externa, entonces ¿Cómo logro hacer esto?
@@anibeth8420 en vez de %matplotlib inline usa: %matplotlib qt5 Si tienes en tu computador qt4 pues pon qt4... la idea es esa (es la más común). Sin embargo otras opciones existentes (dependiendo de cómo esté configurado tu Jupyter y Python) son: 'osx', 'qt4', 'qt5', 'gtk3', 'wx', 'qt', 'gtk', 'tk' (obvio sin las comillas). Alguna te servirá. Pero lo más seguro y mejor es qt5 o qt4.
Encontre esta formas mas sencilla de verlo usando la libreria Scipy from scipy.misc import derivative import numpy as np from numpy import * # Definiendo la función def f(x): return x**3-np.cos(x) x0 =1 i = 1 for iteration in range(1,6): x1 = x0 - f(x0)/derivative(f,x0) x0=x1 print("El ciclo:",c,"da como raíz aproximada a:",x0) c += 1 print("La raíz aproximada es de:", x0) Aunque de manera mas general le agregue esto y quedo también chevere: from scipy.misc import derivative import numpy as np from numpy import * # Definiendo la función def f(x): return x**3-np.cos(x) x0=float(input("Ingrese el valor X0 aproximado para calcular la raiz")) n=int(input("Ingrese el numero de veces para recorrer para tener mejor exactitud")) c =1 for iteration in range(n+1): x1 = x0 - f(x0)/derivative(f,x0) x0=x1 print("El cliclo:",c,"da como raiz aproximada a:",x0) c += 1 print("La raiz aproximada es de:",x0) ------Salida de resultado----------- Ingrese el valor X0 aproximado para calcular la raiz: 1 Ingrese el numero de veces para recorrer para tener mejor exactitud: 22 El cliclo: 1 da como raiz aproximada a: 0.902359701455 El cliclo: 2 da como raiz aproximada a: 0.874334982627 El cliclo: 3 da como raiz aproximada a: 0.867508588426 El cliclo: 4 da como raiz aproximada a: 0.865935796249 El cliclo: 5 da como raiz aproximada a: 0.865578551524 El cliclo: 6 da como raiz aproximada a: 0.865497675877 El cliclo: 7 da como raiz aproximada a: 0.86547938051 El cliclo: 8 da como raiz aproximada a: 0.865475242514 El cliclo: 9 da como raiz aproximada a: 0.86547430663 El cliclo: 10 da como raiz aproximada a: 0.865474094964 El cliclo: 11 da como raiz aproximada a: 0.865474047093 El cliclo: 12 da como raiz aproximada a: 0.865474036266 El cliclo: 13 da como raiz aproximada a: 0.865474033817 El cliclo: 14 da como raiz aproximada a: 0.865474033263 El cliclo: 15 da como raiz aproximada a: 0.865474033138 El cliclo: 16 da como raiz aproximada a: 0.86547403311 El cliclo: 17 da como raiz aproximada a: 0.865474033103 El cliclo: 18 da como raiz aproximada a: 0.865474033102 El cliclo: 19 da como raiz aproximada a: 0.865474033102 El cliclo: 20 da como raiz aproximada a: 0.865474033102 El cliclo: 21 da como raiz aproximada a: 0.865474033102 El cliclo: 22 da como raiz aproximada a: 0.865474033102 El cliclo: 23 da como raiz aproximada a: 0.865474033102 La raiz aproximada es de: 0.865474033102
De verdad muchas gracias por hacer tan sencillo el método para los que estamos aprendiendo.....y pude lograr lo que hice viendo tu vídeo y otro de derivadas en python ^^, es genial aprender por internet.
Gracias! Excelente aporte. Hay muchas maneras de hacerlo... otra es usando Sympy. La idea en el video era conocer el algoritmo como tal... su esencia. Pero me parece muy bueno tu comentario. Feliz día.
Muchísimas gracias
Muy bueno el video, bastante utiles tus explicaciones de metodos numericos
:) Que bueno. Me alegra saber que te ayudó el video. Feliz día.
Entendi todo super bien, muchas gracias
Gracias a ti por ver el video. Me algegra mucho saber que te fue de utilidad. Buen día. :)
Gracias fiera, crack, maquina, figura.
Super gracias lo entendí super bien.
gracias mister
¡Qué geniaaaal! Gracias.
Hola! si quisiera que me de una raíz que este dentro de un intervalo como lo especifico?
Hola. Mira, para la situación que planteas están otros métodos como el de la bisección. Newton-Rhapson funciona con un único valor de arranque. Feliz día.
@@math4cheems y como haría si la función tiene más de 1 raíz y quiero la que estar dentro de un determinado intervalo? Gracias!
Hola. Como te dije, usa el método de la bisección. El método de Newton-Rhapson NO funciona especificando un intervalo de interés. Su mecánica es otra.
Recontra bien esplicado.
>Sos el papus de los papus :alaba:
Gracias me sirvio mucho
para una mejor precisión, seria mejor error = abs(x1-x0)/x0.
es correcto?
Hola. La fórmula que planteas es la usada para el error relativo. Recuerda que la idea es que no conocemos el valor real de la raíz (el exacto), por lo que se hace es calcular un error de aproximación y este hace referencia a qué tan pequeño se hace la diferencia entre los diferentes resultados de las iteraciones. Si lo que uno desea es tener un resultado con n cifras decimales exactas (lo que es lo típico en estas situaciones) entonces debe calcular abs(x1-x0) lo cual me indicará que mi precisión ronda en esa precisión decimal. El cálculo del error relativo no es el indicado, tiene otro propósito. Saludos.
Carlos Andrés Pérez Montaña es cierto, tienes razón, saludos
Hola, una consulta, hay alguna forma de que python derive?, por ejemplo que dada cualquier función que ingresemos el programa la derive por si sola?.
Hola. Sí, usando el paquete Sympy para manipulación simbólica en Python. Feliz día. Gracias, me has dado una idea para un nuevo video... hace rato no hago... no tengo tiempo casi :(
Muchas gracias
Como puedo utilizar la formula x^2-e^-x? Me ayudarias mucho explicando
(x**2)-math.e**-x
hay una forma corta de ocupar el metodo, es algo de nw(punto,tolerancia,1000)... algo asi es, si pudieras explicar eso seria espectacular!!!
Hola. Tal vez a lo que te refieras es a crear una función que use internamente el algoritmo de Newton-Rhapson para hallar una raíz de una función dada. Es básicamente crear dicha función poniendo dentro los pasos claves del algoritmo. Aquí el propósito es explicar con detalle qué es lo que hace el método, cómo es que en cada iteración se va aproximando a la raíz, etc., esto es, entender el método.
Hay librerías de Python que traen funciones optimizadas para resolver este tipo de problemas (como Scipy con su módulo optimize, más concretamente la función "newton" cuya sintaxis general es: scipy.optimize.newton(func, x0, fprime=None, args=(), tol=1.48e-08, maxiter=50, fprime2=None)) pero insisto que lo que buscaba era mostrar la "magia" que hay dentro de este método. Pero si quieres crear tu propia función llamada "nw" puedes crearla con "def nw(fun, x0, tol, maxiter):" o como quieras, e internamente poner lo que viste en el video y decirle que te retorne lo que necesites (raiz, error aproximado, iteraciones realizadas, etc.) de lo que opere.
Buen día y gracias por comentar :)
Que tal amigo, una consulta, estoy utilizando python y pypower; ahí existe un ejemplo que se llama "case30"
quiero correr un Flujo de Potencia (runpf) y un Flujo optimo (runopf) y me sale el siguiente error 'numpy.float64' object cannot be interpreted as an integer, favor su ayuda
saludos
Hola Cristian. Mira, desconozco el proceso que estés realizando pero basado en ese mensaje de error te diría que lo que ocurre es que el sistema está esperando que se le entregue un valor entero (integer) y tu le estás entregando un número en formato de coma flotante (float). Acabo de leer en un foro en donde mencionan el hecho de que en versiones anteriores de Numpy este no ponía problemas en algunos casos, pero las versiones más recientes se han puesto un poco más estrictas al respecto. Lo que debes hacer es revisar el código y encontrar la variable o parámetro que se pide entera y que tu le entregas como flotante para que hagas el cambio respectivo de formato. Buen día y éxitos con eso.
Yo tengo una pregunta... Porque en el ciclo while, pones 1e-10? Es el rango de... ?
PD: Gracias por tu EXCELENTE video, me ayudaste mucho.
Imagino que ya lo habrás sacado pero...
Lo hace para que no haga más iteraciones de las necesarias.
Por ejemplo: Si la iteración 5 y la 6 son iguales pues sale (son iguales o varia menos de 1e-10 en este caso)
@@teop0617 sí, lo saqué al día siguiente pero igual me ayudaste bastante. Muchas gracias por tu respuesta 🤭.
Gracias por tu explicación, me sirvió mucho para entender, pero hay mucha diferencia en la implementación de este programa en phyton 2.7?
Hola. Me alegro mucho que te sirviera el video. Mira, en este caso la implementación en python 2.7 de lo hecho en el video simplemente varía en que si usas python 2.7 debes poner poner "print x0" en lugar de "print(x0)" y así para los otros momentos donde aparezca "print". No veo que se requiera otro cambio en lo hecho. Córrelo y me cuentas. Feliz día.
Hola. Me sirvio mucho. Pero no encuentro como hacer tablas en python. Me podrias ayudar?
Hola. Sí, hay varias maneras. La más común es usando el paquete Pandas, el cual tiene cualquier cantidad de herramientas interesantes para datos. Saludos.
GRACIAAAAAAAAAAAAAAAAAAAAAS
faltó hacer el comando de ipython
%matplotlib inline
para tener la gráfica en el cuaderno jupyter☺
Hola! Comprendo lo que dices, pero en realidad es cuestión de gustos. A mi personalmente me gusta tener las gráficas afuera del cuaderno (ya que qt me permite hacerle muchas cosas interesantes para efecto de posterior exportación)... de hecho las versiones más recientes de Jupyter por defecto ponen las gráficas dentro y una de las primeras cosas que hago es poner el comando
% matplotlib qt
para que me las deje por fuera.
Pero de todas maneras muchas gracias por comentar y por ver mis videos. Un feliz día para ti. :)
Carlos Perez muy cierto es mejor fuera
@@math4cheems Hola, gracias por tu video. He entendido muchas cosas. Sólo tengo una duda, ya que a mi la gráfica me sale dentro del cuaderno de Jupyter y no encontré la manera de que sea externa, entonces ¿Cómo logro hacer esto?
@@anibeth8420 en vez de %matplotlib inline usa: %matplotlib qt5
Si tienes en tu computador qt4 pues pon qt4... la idea es esa (es la más común).
Sin embargo otras opciones existentes (dependiendo de cómo esté configurado tu Jupyter y Python) son: 'osx', 'qt4', 'qt5', 'gtk3', 'wx', 'qt', 'gtk', 'tk' (obvio sin las comillas). Alguna te servirá. Pero lo más seguro y mejor es qt5 o qt4.
Encontre esta formas mas sencilla de verlo usando la libreria Scipy
from scipy.misc import derivative
import numpy as np
from numpy import *
# Definiendo la función
def f(x):
return x**3-np.cos(x)
x0 =1
i = 1
for iteration in range(1,6):
x1 = x0 - f(x0)/derivative(f,x0)
x0=x1
print("El ciclo:",c,"da como raíz aproximada a:",x0)
c += 1
print("La raíz aproximada es de:", x0)
Aunque de manera mas general le agregue esto y quedo también chevere:
from scipy.misc import derivative
import numpy as np
from numpy import *
# Definiendo la función
def f(x):
return x**3-np.cos(x)
x0=float(input("Ingrese el valor X0 aproximado para calcular la raiz"))
n=int(input("Ingrese el numero de veces para recorrer para tener mejor exactitud"))
c =1
for iteration in range(n+1):
x1 = x0 - f(x0)/derivative(f,x0)
x0=x1
print("El cliclo:",c,"da como raiz aproximada a:",x0)
c += 1
print("La raiz aproximada es de:",x0)
------Salida de resultado-----------
Ingrese el valor X0 aproximado para calcular la raiz: 1
Ingrese el numero de veces para recorrer para tener mejor exactitud: 22
El cliclo: 1 da como raiz aproximada a: 0.902359701455
El cliclo: 2 da como raiz aproximada a: 0.874334982627
El cliclo: 3 da como raiz aproximada a: 0.867508588426
El cliclo: 4 da como raiz aproximada a: 0.865935796249
El cliclo: 5 da como raiz aproximada a: 0.865578551524
El cliclo: 6 da como raiz aproximada a: 0.865497675877
El cliclo: 7 da como raiz aproximada a: 0.86547938051
El cliclo: 8 da como raiz aproximada a: 0.865475242514
El cliclo: 9 da como raiz aproximada a: 0.86547430663
El cliclo: 10 da como raiz aproximada a: 0.865474094964
El cliclo: 11 da como raiz aproximada a: 0.865474047093
El cliclo: 12 da como raiz aproximada a: 0.865474036266
El cliclo: 13 da como raiz aproximada a: 0.865474033817
El cliclo: 14 da como raiz aproximada a: 0.865474033263
El cliclo: 15 da como raiz aproximada a: 0.865474033138
El cliclo: 16 da como raiz aproximada a: 0.86547403311
El cliclo: 17 da como raiz aproximada a: 0.865474033103
El cliclo: 18 da como raiz aproximada a: 0.865474033102
El cliclo: 19 da como raiz aproximada a: 0.865474033102
El cliclo: 20 da como raiz aproximada a: 0.865474033102
El cliclo: 21 da como raiz aproximada a: 0.865474033102
El cliclo: 22 da como raiz aproximada a: 0.865474033102
El cliclo: 23 da como raiz aproximada a: 0.865474033102
La raiz aproximada es de: 0.865474033102
De verdad muchas gracias por hacer tan sencillo el método para los que estamos aprendiendo.....y pude lograr lo que hice viendo tu vídeo y otro de derivadas en python ^^, es genial aprender por internet.
Gracias! Excelente aporte. Hay muchas maneras de hacerlo... otra es usando Sympy. La idea en el video era conocer el algoritmo como tal... su esencia. Pero me parece muy bueno tu comentario. Feliz día.
Gracias y seguiré aprendiendo cada día un poco mas, gracias por el aporte.
Excelente video, comparto el siguiente video del método de Newton-Raphson ua-cam.com/video/LnL24g8z8Us/v-deo.html