Métodos Numéricos: Método de Euler en Python

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 ม.ค. 2025

ความคิดเห็น • 84

  • @JoseCruz-pi5nf
    @JoseCruz-pi5nf 4 ปีที่แล้ว +1

    muchas gracias, esto me permitió hacer mi tarea más sencilla

  • @ivancurochimaico8047
    @ivancurochimaico8047 3 ปีที่แล้ว +1

    GRACIAS ME RESULTÓ UTIL

  • @pablotobar7322
    @pablotobar7322 3 ปีที่แล้ว +1

    gracias esto me permitió pasar el semestre :D

  • @silviomartinez3108
    @silviomartinez3108 4 ปีที่แล้ว +2

    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!

  • @amaliatrujillotorres8182
    @amaliatrujillotorres8182 4 ปีที่แล้ว +1

    Hola, para el caso de Euler modificado solo se modificaría la función?

  • @profegaspar9869
    @profegaspar9869 4 ปีที่แล้ว +3

    me sale lo siguiente:
    TypeError: 'float' object cannot be interpreted as an integer
    como lo arreglo?

  • @DracoFerrus
    @DracoFerrus 4 ปีที่แล้ว +3

    Hola disculpe, al ejecutarlo me sale el error 'float' object cannot be interpreted as an index, como se soluciona, gracias de antemano.

    • @osvaldorios3314
      @osvaldorios3314 4 ปีที่แล้ว

      lo pudiste solucionar ??

    • @DracoFerrus
      @DracoFerrus 4 ปีที่แล้ว

      @@osvaldorios3314 no, lo que hice fue dejarlo como int, y darle valores enteros al rango

  • @edwincamilomesabaez781
    @edwincamilomesabaez781 3 ปีที่แล้ว +1

    como sacas la grafia? a mi solo me da numeros

  • @abnerlopez6666
    @abnerlopez6666 8 ปีที่แล้ว +1

    hola, disculpe ¿numpy y matplotlib.pyplot ya los trae python por default?
    o usted los importo de algún otro documento

    • @cctmexico
      @cctmexico  8 ปีที่แล้ว +1

      +abner lopez Hola! Si estás usando Spyder ya lo traía por default y no hay necesidad de descargar algo adicional.

  • @aristedesfloresbartra4029
    @aristedesfloresbartra4029 5 ปีที่แล้ว +1

    Eres buena

    • @cctmexico
      @cctmexico  5 ปีที่แล้ว

      ¡Muchas gracias por tan amable comentario! Saludos

  • @gerardomoralesmorales1698
    @gerardomoralesmorales1698 7 ปีที่แล้ว +2

    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

    • @cctmexico
      @cctmexico  7 ปีที่แล้ว

      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!

    • @gerardomoralesmorales1698
      @gerardomoralesmorales1698 7 ปีที่แล้ว +1

      puse n como intero y ya funciono

    • @sebastiansuarezagudelo2333
      @sebastiansuarezagudelo2333 6 ปีที่แล้ว

      Buenas como hiciste, como pongo n asi?

    • @funza1269
      @funza1269 6 ปีที่แล้ว +1

      n = int((s/h)+1)

    • @emiliotexis3645
      @emiliotexis3645 6 ปีที่แล้ว

      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

  • @jonathansanchez279
    @jonathansanchez279 6 ปีที่แล้ว +1

    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

    • @cctmexico
      @cctmexico  6 ปีที่แล้ว

      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

  • @enwilliamsj
    @enwilliamsj 7 ปีที่แล้ว +1

    hola, excelente video. Me gustaria saber si la herramientas de SciPy usan python 3 o la anterior?

    • @cctmexico
      @cctmexico  7 ปีที่แล้ว

      Muchísimas gracias por tu amable comentario, SciPy lo puedes usar con cualquier versión de Python, Saludos!!

  • @andresgarciaalejo9612
    @andresgarciaalejo9612 6 ปีที่แล้ว +1

    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

    • @cctmexico
      @cctmexico  6 ปีที่แล้ว

      Checa si tienes el ciclo For preparado para un contador tipo flotante, esto lo puedes ver en el minuto 7:36

  • @nuncapierdaslafe
    @nuncapierdaslafe 7 ปีที่แล้ว +1

    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.

    • @cctmexico
      @cctmexico  7 ปีที่แล้ว +1

      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

    • @nuncapierdaslafe
      @nuncapierdaslafe 7 ปีที่แล้ว +1

      Donde quedó el ^ jeje. Muchas gracias.

    • @cctmexico
      @cctmexico  7 ปีที่แล้ว +1

      XD Es el signo de los tiempos, quién sabe más adelante como elevemos a una potencia! De nada y saludos!

    • @atrapadosporlaciencia1301
      @atrapadosporlaciencia1301 6 ปีที่แล้ว

      podes colocar ** (asterisco doble) y listo

  • @gutic4824
    @gutic4824 6 ปีที่แล้ว +2

    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()

    • @cctmexico
      @cctmexico  6 ปีที่แล้ว

      ¡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

  • @gerardomoralesmorales1698
    @gerardomoralesmorales1698 7 ปีที่แล้ว +1

    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 #??

  • @gallegosgarciapaola9886
    @gallegosgarciapaola9886 7 ปีที่แล้ว +1

    Hola , disculpe como hago que aparesca la interseccion o las imagenes de dos funciones distinas cualquiera en matplotlib en un solo cuadro?

    • @cctmexico
      @cctmexico  7 ปีที่แล้ว

      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)

    • @gallegosgarciapaola9886
      @gallegosgarciapaola9886 7 ปีที่แล้ว +1

      Gracias

    • @cctmexico
      @cctmexico  7 ปีที่แล้ว

      De nada Paola, saludos!!

  • @andresgarciaalejo9612
    @andresgarciaalejo9612 6 ปีที่แล้ว +2

    ME DA ESE ERROR EN LA LINEA 19
    line 19, in
    x=np.zeros(n)
    TypeError: 'float' object cannot be interpreted as an integer

    • @cctmexico
      @cctmexico  6 ปีที่แล้ว +1

      Hola Andrres, puedes revisar si hay alguna variable que tiene valores decimales, antes de esa línea en tu programa

    • @whathesilence
      @whathesilence 5 ปีที่แล้ว +16

      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

    • @ivethrn4271
      @ivethrn4271 5 ปีที่แล้ว

      Me pasa lo mismo y ya revise el código y está tal cual 😦

    • @juanalbertosantiagodevicen4871
      @juanalbertosantiagodevicen4871 5 ปีที่แล้ว +1

      @@whathesilence Excelente, tu código soluciono el problema, gracias.

    • @superJerrySong
      @superJerrySong 4 ปีที่แล้ว +1

      @@whathesilence muchas gracias tu código me ayudo mucho :)

  • @gerardomoralesmorales1698
    @gerardomoralesmorales1698 7 ปีที่แล้ว +2

    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

    • @whathesilence
      @whathesilence 5 ปีที่แล้ว +10

      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

  • @hunterplay7449
    @hunterplay7449 2 ปีที่แล้ว

    Hola, tengo una pequeña duda: ¿Cómo obtengo la solución exacta?. Felicidades por tan excelente vídeo.

  • @danielcarrasquilla
    @danielcarrasquilla 5 ปีที่แล้ว

    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)....

    • @cctmexico
      @cctmexico  5 ปีที่แล้ว

      Hola Daniel, ¿En qué minuto es la observación?

    • @jasserramos1512
      @jasserramos1512 5 ปีที่แล้ว

      @@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

  • @migueltoralla2442
    @migueltoralla2442 7 ปีที่แล้ว +2

    Para mas de once iteraciones me tira el error :
    IndexError: list assignment index out of range, podrias decirme como solucionarlo ?
    gracias y buen video :)

    • @cctmexico
      @cctmexico  7 ปีที่แล้ว +1

      ¡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!!

    • @migueltoralla2442
      @migueltoralla2442 7 ปีที่แล้ว +1

      cctmexico y como puedo re definir la cantidad de "espacios"? Muchas gracias!

    • @cctmexico
      @cctmexico  7 ปีที่แล้ว

      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

  • @erickaguzman9798
    @erickaguzman9798 5 ปีที่แล้ว

    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

    • @cctmexico
      @cctmexico  5 ปีที่แล้ว

      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

  • @ryunosukeyagami2962
    @ryunosukeyagami2962 3 ปีที่แล้ว

    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)

    • @cctmexico
      @cctmexico  3 ปีที่แล้ว +1

      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

    • @danielfelipemedinamoreno1277
      @danielfelipemedinamoreno1277 2 ปีที่แล้ว +3

      n = int(s/h)+1

    • @fercanelita224
      @fercanelita224 2 ปีที่แล้ว

      @@danielfelipemedinamoreno1277 gracias

  • @Mary-cn6sd
    @Mary-cn6sd 4 ปีที่แล้ว

    me marca error en el float xq si lo puse tal cual :(

    • @salimmoran
      @salimmoran 4 ปีที่แล้ว +1

      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

  • @superJerrySong
    @superJerrySong 4 ปีที่แล้ว +1

    falta el calculo del error

  • @cesarotero8047
    @cesarotero8047 5 ปีที่แล้ว

    Podrías proporcionarme el código fuente?

    • @cctmexico
      @cctmexico  5 ปีที่แล้ว

      Hola César, solamente lo tenemos disponible en el vídeo, saludos!

  • @lauravillavicencio8043
    @lauravillavicencio8043 4 ปีที่แล้ว

    no se me genera la gráfica :(

    • @ohm7429
      @ohm7429 2 ปีที่แล้ว

      Al final .....plt.show()

  • @gerardomoralesmorales1698
    @gerardomoralesmorales1698 7 ปีที่แล้ว +1

    porque enla ec. para Y ponenX[ i-1] y Y[i-1] ?? yo lo hubiera puesto sin el -1

    • @cctmexico
      @cctmexico  7 ปีที่แล้ว

      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!

    • @gerardomoralesmorales1698
      @gerardomoralesmorales1698 7 ปีที่แล้ว

      ok, soy nuevo programando, lo meditare , gracias

    • @gerardomoralesmorales1698
      @gerardomoralesmorales1698 7 ปีที่แล้ว

      cuando importo esas librerias me da una señal de alerta y me dice: imported but unused

    • @gerardomoralesmorales1698
      @gerardomoralesmorales1698 7 ปีที่แล้ว +1

      ya me di cuenta, a ti tambien te marca igual xD

    • @cctmexico
      @cctmexico  7 ปีที่แล้ว

      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?