Hola!!! Consulta: en lugar de definir la función con el comando def, quiero usar eval(), cuando la incorporo en el bucle for, neceito ponerle los indices [i]? porque no me funciona ni poniendo ni sacando los indice[i].Saludos!
lo copie tal y como lo pus uds. y me marca error: File "C:/Users/gerardo/.spyder-py3/temp.py", line 17, in x= np.zeros(n) TypeError: 'float' object cannot be interpreted as an integer
Aquí te dejamos información sobre ese error: stackoverflow.com/questions/19824721/i-keep-getting-this-error-for-my-simple-python-program-typeerror-float-obje también pudo haber sido un error de dedo, ya que a nosotros nos corrió sin problema. Saludos!
debe ser tu version de pyton a mi me marco el mismo error pero tambien poniendo int ya quedo, tambien omite la instruccion "show()" en mi version de python no me muestra nada hasta que la ponga
Hola! Si vas a ocupar números enteros en el tamaño de paso utiliza range en lugar de arange en el ciclo For, aquí te dejamos la información de lo que hace arange: docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html
Siempre que deseo poner un exponente tengo que llamar a la librería ? No resultaría eso algo bastante tedioso para ecuaciones complejas o hay alguna alternativa. Muchas gracias por el video.
Hola! pow sin el math, es para números enteros puedes probar el siguiente código: import math print (pow(2,3)) print (math.pow(2,3)) Tal vez podrías usar funciones o hacer tu propia función para hacer más corto el uso de la potencia, aqui te dejamos un vídeo por si lo ocupas: th-cam.com/video/iniDheGLFTA/w-d-xo.html
En el bucle for no habria que poner ys[i]=solucion(x[i], y[i-1]) en lugar de ys[i]=solucion(x[i-1], y[i-1]). Lo he comprobado al representar la funcion y hay algo que no cuadra.Un saludo y gracias por este fantastico video :) Lo he comparado con lo que obtengo con este codigo con la funcion odeint. import numpy as np from scipy.integrate import odeint import matplotlib.pyplot as plt def model(y,t): dydt = t + 2*y return dydt y0=0 t=np.linspace(0,2,10) print(t) y = odeint(model,y0,t) print(y) plt.plot(t,y) plt.xlabel("Time") plt.ylabel("y(t)") plt.show()
¡Muchas gracias por tan amable comentario ^_^ ! Aquí nos encontramos una pregunta de Stackoverflow, donde en una de las respuestas comparten un código para este método, te podría ser de utilidad, para comparar tus resultados: stackoverflow.com/questions/27994660/eulers-method-in-python
Hola! Encontramos un ejemplo que te puede servir, y vamos a trabajar en un vídeo, para este tema. Lo tomamos de: stackoverflow.com/questions/28726931/plotting-to-1-figure-using-multiple-functions-with-matplotlib-python import matplotlib.pyplot as plt a = [1,2,3] b = [3,2,1] def func1(x): plt.plot(x) def func2(x): plt.plot(x) fig = plt.figure() func1(a) func2(b)
Se debe cambiar el tipo de dato de flotante a entero y luego viceversa, checa mi código: import numpy as np import matplotlib.pyplot as plt import math def funcion(x,y):#evalua la ecuacion diferencial ec = x + (2*y) # y'=x + 2y return ec def solucion(x): #solucion exacta de la ED sol = 0.25 * math.exp(2*x) - 0.5*x - 0.25 return sol h = float(input("Tamaño de paso: "))#se pide al usuario el paso, en este ejemplo es 0.25 s = float(input("¿Hasta que valor? "))# en este ejemplo es 1 n = int((s/h) + 1) #numero entero de iteraciones=(valor deseado/tamaño de paso) +1 x = y = np.zeros(n) # asignacion en cadena, vectores de ceros para llenar con los #calculos posteriores. La asignacion en cadena solo permite a dos variables. x = x.astype(float) #se cambia el tipo de dato de entero a flotante #automaticamente los cambios se hacen para y tambien ys = np.zeros(n) #ys es la solucion exacta ys = ys.astype(float) #valor inicial x[0] = 0, y[0] = 0 for i in np.arange(1,n): #np.arange(1,n) permite a i moverse con h sin importar que es decimal de 1 hasta n y[i] = y[i-1] + h*(funcion(x[i-1],y[i-1])) #calculo de y x[i] = x[i-1] + h #incremento en x ys[i] = solucion(x[i-1]) print (x) #impresion de vectores print (y) print (ys) plt.scatter(x,y) #realizacion de grafica de puntos plt.scatter(x,ys, color = 'red') #grafica de solucion exacta que se empalma con la anterior plt.plot(x,y) #realizacion de grafica de lineas (se empalma) plt.plot(x,ys, color = 'red') #se empalma plt.show() #se muestra grafica de las dos soluciones
lo quiero correr y me marcar error: File "C:/Users/gerardo/.spyder-py3/temp.py", line 18, in x=np.zeros(n) TypeError: 'float' object cannot be interpreted as an integer
Se debe cambiar el tipo de dato de flotante a entero y luego viceversa, checa mi código: import numpy as np import matplotlib.pyplot as plt import math def funcion(x,y):#evalua la ecuacion diferencial ec = x + (2*y) # y'=x + 2y return ec def solucion(x): #solucion exacta de la ED sol = 0.25 * math.exp(2*x) - 0.5*x - 0.25 return sol h = float(input("Tamaño de paso: "))#se pide al usuario el paso, en este ejemplo es 0.25 s = float(input("¿Hasta que valor? "))# en este ejemplo es 1 n = int((s/h) + 1) #numero entero de iteraciones=(valor deseado/tamaño de paso) +1 x = y = np.zeros(n) # asignacion en cadena, vectores de ceros para llenar con los #calculos posteriores. La asignacion en cadena solo permite a dos variables. x = x.astype(float) #se cambia el tipo de dato de entero a flotante #automaticamente los cambios se hacen para y tambien ys = np.zeros(n) #ys es la solucion exacta ys = ys.astype(float) #valor inicial x[0] = 0, y[0] = 0 for i in np.arange(1,n): #np.arange(1,n) permite a i moverse con h sin importar que es decimal de 1 hasta n y[i] = y[i-1] + h*(funcion(x[i-1],y[i-1])) #calculo de y x[i] = x[i-1] + h #incremento en x ys[i] = solucion(x[i-1]) print (x) #impresion de vectores print (y) print (ys) plt.scatter(x,y) #realizacion de grafica de puntos plt.scatter(x,ys, color = 'red') #grafica de solucion exacta que se empalma con la anterior plt.plot(x,y) #realizacion de grafica de lineas (se empalma) plt.plot(x,ys, color = 'red') #se empalma plt.show() #se muestra grafica de las dos soluciones
@@cctmexico Tengo la misma duda, porfavor la puedes responder, el minuto es 8:14 , de donde sale esa def solucion(x,y){ sol = 0.25 * math.exp(2*x) - 0.5*x - 0.25
Para mas de once iteraciones me tira el error : IndexError: list assignment index out of range, podrias decirme como solucionarlo ? gracias y buen video :)
¡Miguel, muchas gracias por tu amable comentario! Ese error es muy común cuando a algún arreglo le faltan "espacios" por ejemplo cuando tienes un arreglo definido para 10 espacios y en el ciclo For, se está llegando a 11 chécalo, a ver si es tu caso. Saludos!!
Justo en el minuto 3:39 definimos el número de espacios en n (n lo podrías preguntar al usuario, o hacerlo que dependa de los valores de s y h como en el vídeo
Hola! Aquí te dejamos las funciones matemáticas para hacer esa ecuación, con gusto trabajamos en el vídeo, sólo que nos vamos a tardar un poco :( www.programiz.com/python-programming/modules/math #petición
Tienes un número decimal, que en algún procedimiento Python lo va interpretar como entero, por si te sirve te dejamos este vídeo para interpretar los errores: th-cam.com/video/X46F2-OxxqY/w-d-xo.html
Hola, aquí lo usamos (minuto 5:43) para utilizar un valor anterior, igual lo puedes probar con el 1, y acomodar los valores de los contadores, para que obtengas los mismos resultados, sería una excelente practica de programación. Saludos!
muchas gracias, esto me permitió hacer mi tarea más sencilla
GRACIAS ME RESULTÓ UTIL
gracias esto me permitió pasar el semestre :D
x2
@@jeffersonnarvaez344 a perro traes el omnitrix
Hola!!! Consulta: en lugar de definir la función con el comando def, quiero usar eval(), cuando la incorporo en el bucle for, neceito ponerle los indices [i]? porque no me funciona ni poniendo ni sacando los indice[i].Saludos!
Hola, para el caso de Euler modificado solo se modificaría la función?
me sale lo siguiente:
TypeError: 'float' object cannot be interpreted as an integer
como lo arreglo?
yo lo solucioné convirtiendo a entero el valor de n
Hola disculpe, al ejecutarlo me sale el error 'float' object cannot be interpreted as an index, como se soluciona, gracias de antemano.
lo pudiste solucionar ??
@@osvaldorios3314 no, lo que hice fue dejarlo como int, y darle valores enteros al rango
como sacas la grafia? a mi solo me da numeros
hola, disculpe ¿numpy y matplotlib.pyplot ya los trae python por default?
o usted los importo de algún otro documento
+abner lopez Hola! Si estás usando Spyder ya lo traía por default y no hay necesidad de descargar algo adicional.
Eres buena
¡Muchas gracias por tan amable comentario! Saludos
lo copie tal y como lo pus uds. y me marca error: File "C:/Users/gerardo/.spyder-py3/temp.py", line 17, in
x= np.zeros(n)
TypeError: 'float' object cannot be interpreted as an integer
Aquí te dejamos información sobre ese error: stackoverflow.com/questions/19824721/i-keep-getting-this-error-for-my-simple-python-program-typeerror-float-obje también pudo haber sido un error de dedo, ya que a nosotros nos corrió sin problema. Saludos!
puse n como intero y ya funciono
Buenas como hiciste, como pongo n asi?
n = int((s/h)+1)
debe ser tu version de pyton a mi me marco el mismo error pero tambien poniendo int ya quedo, tambien omite la instruccion "show()" en mi version de python no me muestra nada hasta que la ponga
disculpe como cambio el tamaño del paso esque pondo de 0.30 a 1 y me sale error pero si pongo de 0.25 a 1 si me sale
Hola! Si vas a ocupar números enteros en el tamaño de paso utiliza range en lugar de arange en el ciclo For, aquí te dejamos la información de lo que hace arange: docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html
hola, excelente video. Me gustaria saber si la herramientas de SciPy usan python 3 o la anterior?
Muchísimas gracias por tu amable comentario, SciPy lo puedes usar con cualquier versión de Python, Saludos!!
al correrlo pongo tama;o de paso y al poner hasta que valor? me da este error
TypeError: 'float' object cannot be interpreted as an integer
Checa si tienes el ciclo For preparado para un contador tipo flotante, esto lo puedes ver en el minuto 7:36
Siempre que deseo poner un exponente tengo que llamar a la librería ? No resultaría eso algo bastante tedioso para ecuaciones complejas o hay alguna alternativa.
Muchas gracias por el video.
Hola! pow sin el math, es para números enteros puedes probar el siguiente código:
import math
print (pow(2,3))
print (math.pow(2,3))
Tal vez podrías usar funciones o hacer tu propia función para hacer más corto el uso de la potencia, aqui te dejamos un vídeo por si lo ocupas: th-cam.com/video/iniDheGLFTA/w-d-xo.html
Donde quedó el ^ jeje. Muchas gracias.
XD Es el signo de los tiempos, quién sabe más adelante como elevemos a una potencia! De nada y saludos!
podes colocar ** (asterisco doble) y listo
En el bucle for no habria que poner ys[i]=solucion(x[i], y[i-1]) en lugar de ys[i]=solucion(x[i-1], y[i-1]).
Lo he comprobado al representar la funcion y hay algo que no cuadra.Un saludo y gracias por este fantastico video :)
Lo he comparado con lo que obtengo con este codigo con la funcion odeint.
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
def model(y,t):
dydt = t + 2*y
return dydt
y0=0
t=np.linspace(0,2,10)
print(t)
y = odeint(model,y0,t)
print(y)
plt.plot(t,y)
plt.xlabel("Time")
plt.ylabel("y(t)")
plt.show()
¡Muchas gracias por tan amable comentario ^_^ ! Aquí nos encontramos una pregunta de Stackoverflow, donde en una de las respuestas comparten un código para este método, te podría ser de utilidad, para comparar tus resultados:
stackoverflow.com/questions/27994660/eulers-method-in-python
para cambiar los valor iniciales solo tendria que que poder x[0]=algo,y[0]=algo???
osea como lo hace uds. en el video pero quitando el simbolo #??
Así es quitando el símbolo #, como dejamos el ejemplo en el minuto 4:04
gracias, lo estuve revisando anoche =)
De nada :) Saludos!
igual saludos =)
Hola , disculpe como hago que aparesca la interseccion o las imagenes de dos funciones distinas cualquiera en matplotlib en un solo cuadro?
Hola! Encontramos un ejemplo que te puede servir, y vamos a trabajar en un vídeo, para este tema.
Lo tomamos de: stackoverflow.com/questions/28726931/plotting-to-1-figure-using-multiple-functions-with-matplotlib-python
import matplotlib.pyplot as plt
a = [1,2,3]
b = [3,2,1]
def func1(x):
plt.plot(x)
def func2(x):
plt.plot(x)
fig = plt.figure()
func1(a)
func2(b)
Gracias
De nada Paola, saludos!!
ME DA ESE ERROR EN LA LINEA 19
line 19, in
x=np.zeros(n)
TypeError: 'float' object cannot be interpreted as an integer
Hola Andrres, puedes revisar si hay alguna variable que tiene valores decimales, antes de esa línea en tu programa
Se debe cambiar el tipo de dato de flotante a entero y luego viceversa, checa mi código:
import numpy as np
import matplotlib.pyplot as plt
import math
def funcion(x,y):#evalua la ecuacion diferencial
ec = x + (2*y) # y'=x + 2y
return ec
def solucion(x): #solucion exacta de la ED
sol = 0.25 * math.exp(2*x) - 0.5*x - 0.25
return sol
h = float(input("Tamaño de paso: "))#se pide al usuario el paso, en este ejemplo es 0.25
s = float(input("¿Hasta que valor? "))# en este ejemplo es 1
n = int((s/h) + 1) #numero entero de iteraciones=(valor deseado/tamaño de paso) +1
x = y = np.zeros(n) # asignacion en cadena, vectores de ceros para llenar con los
#calculos posteriores. La asignacion en cadena solo permite a dos variables.
x = x.astype(float) #se cambia el tipo de dato de entero a flotante
#automaticamente los cambios se hacen para y tambien
ys = np.zeros(n) #ys es la solucion exacta
ys = ys.astype(float)
#valor inicial x[0] = 0, y[0] = 0
for i in np.arange(1,n):
#np.arange(1,n) permite a i moverse con h sin importar que es decimal de 1 hasta n
y[i] = y[i-1] + h*(funcion(x[i-1],y[i-1])) #calculo de y
x[i] = x[i-1] + h #incremento en x
ys[i] = solucion(x[i-1])
print (x) #impresion de vectores
print (y)
print (ys)
plt.scatter(x,y) #realizacion de grafica de puntos
plt.scatter(x,ys, color = 'red') #grafica de solucion exacta que se empalma con la anterior
plt.plot(x,y) #realizacion de grafica de lineas (se empalma)
plt.plot(x,ys, color = 'red') #se empalma
plt.show() #se muestra grafica de las dos soluciones
Me pasa lo mismo y ya revise el código y está tal cual 😦
@@whathesilence Excelente, tu código soluciono el problema, gracias.
@@whathesilence muchas gracias tu código me ayudo mucho :)
lo quiero correr y me marcar error:
File "C:/Users/gerardo/.spyder-py3/temp.py", line 18, in
x=np.zeros(n)
TypeError: 'float' object cannot be interpreted as an integer
Se debe cambiar el tipo de dato de flotante a entero y luego viceversa, checa mi código:
import numpy as np
import matplotlib.pyplot as plt
import math
def funcion(x,y):#evalua la ecuacion diferencial
ec = x + (2*y) # y'=x + 2y
return ec
def solucion(x): #solucion exacta de la ED
sol = 0.25 * math.exp(2*x) - 0.5*x - 0.25
return sol
h = float(input("Tamaño de paso: "))#se pide al usuario el paso, en este ejemplo es 0.25
s = float(input("¿Hasta que valor? "))# en este ejemplo es 1
n = int((s/h) + 1) #numero entero de iteraciones=(valor deseado/tamaño de paso) +1
x = y = np.zeros(n) # asignacion en cadena, vectores de ceros para llenar con los
#calculos posteriores. La asignacion en cadena solo permite a dos variables.
x = x.astype(float) #se cambia el tipo de dato de entero a flotante
#automaticamente los cambios se hacen para y tambien
ys = np.zeros(n) #ys es la solucion exacta
ys = ys.astype(float)
#valor inicial x[0] = 0, y[0] = 0
for i in np.arange(1,n):
#np.arange(1,n) permite a i moverse con h sin importar que es decimal de 1 hasta n
y[i] = y[i-1] + h*(funcion(x[i-1],y[i-1])) #calculo de y
x[i] = x[i-1] + h #incremento en x
ys[i] = solucion(x[i-1])
print (x) #impresion de vectores
print (y)
print (ys)
plt.scatter(x,y) #realizacion de grafica de puntos
plt.scatter(x,ys, color = 'red') #grafica de solucion exacta que se empalma con la anterior
plt.plot(x,y) #realizacion de grafica de lineas (se empalma)
plt.plot(x,ys, color = 'red') #se empalma
plt.show() #se muestra grafica de las dos soluciones
Hola, tengo una pequeña duda: ¿Cómo obtengo la solución exacta?. Felicidades por tan excelente vídeo.
hola no me quedo claro cuando ponen la función def solución el proceso que hacen ahi, esa ecuación como la sacan sol=.25math.exp(2*x)....
Hola Daniel, ¿En qué minuto es la observación?
@@cctmexico Tengo la misma duda, porfavor la puedes responder, el minuto es 8:14 , de donde sale esa
def solucion(x,y){
sol = 0.25 * math.exp(2*x) - 0.5*x - 0.25
Para mas de once iteraciones me tira el error :
IndexError: list assignment index out of range, podrias decirme como solucionarlo ?
gracias y buen video :)
¡Miguel, muchas gracias por tu amable comentario! Ese error es muy común cuando a algún arreglo le faltan "espacios" por ejemplo cuando tienes un arreglo definido para 10 espacios y en el ciclo For, se está llegando a 11 chécalo, a ver si es tu caso. Saludos!!
cctmexico y como puedo re definir la cantidad de "espacios"? Muchas gracias!
Justo en el minuto 3:39 definimos el número de espacios en n (n lo podrías preguntar al usuario, o hacerlo que dependa de los valores de s y h como en el vídeo
Hola, ¿cómo podría programar la siguiente función 1/f^1/2=4log(Re*f^1/2)-0.4 para encontrar el valor de f? si Re está entre 2500 y 1000000 ayudaaaaa
Hola! Aquí te dejamos las funciones matemáticas para hacer esa ecuación, con gusto trabajamos en el vídeo, sólo que nos vamos a tardar un poco :( www.programiz.com/python-programming/modules/math
#petición
line 17, in
x = np.zeros(n)
TypeError: 'float' object cannot be interpreted as an integer (Tengo este error, me podrían ayudar, no se por que me sale)
Tienes un número decimal, que en algún procedimiento Python lo va interpretar como entero, por si te sirve te dejamos este vídeo para interpretar los errores: th-cam.com/video/X46F2-OxxqY/w-d-xo.html
n = int(s/h)+1
@@danielfelipemedinamoreno1277 gracias
me marca error en el float xq si lo puse tal cual :(
a mi me pasó lo mismo. Para solucionarlo convertí al x y al n en integer [ n=int((s/h)+1) ], tambien al argumento de los vectores
falta el calculo del error
Podrías proporcionarme el código fuente?
Hola César, solamente lo tenemos disponible en el vídeo, saludos!
no se me genera la gráfica :(
Al final .....plt.show()
porque enla ec. para Y ponenX[ i-1] y Y[i-1] ?? yo lo hubiera puesto sin el -1
Hola, aquí lo usamos (minuto 5:43) para utilizar un valor anterior, igual lo puedes probar con el 1, y acomodar los valores de los contadores, para que obtengas los mismos resultados, sería una excelente practica de programación. Saludos!
ok, soy nuevo programando, lo meditare , gracias
cuando importo esas librerias me da una señal de alerta y me dice: imported but unused
ya me di cuenta, a ti tambien te marca igual xD
Ese error aparece, cuando no utilizas las librerías, revisa si estas utilizandolas como en el minuto 4:40 ¿Estás usando Spyder y Python 3?