CursosEmpresasBlogLiveConfPrecios

Método de Euler: Solución Numérica de Ecuaciones Diferenciales

Clase 6 de 12 • Taller de Aplicación de Modelos Numéricos

Contenido del curso

Modelos matemáticos

  • 1
    Modelos Matemáticos: Conceptos Básicos y Aplicaciones

    Modelos Matemáticos: Conceptos Básicos y Aplicaciones

    04:24 min
  • 2
    Modelado de Sistemas Dinámicos con Funciones Matemáticas y Python

    Modelado de Sistemas Dinámicos con Funciones Matemáticas y Python

    04:29 min
  • 3
    Ecuaciones Diferenciales Ordinarias: Modelos de Epidemias

    Ecuaciones Diferenciales Ordinarias: Modelos de Epidemias

    05:09 min
  • 4
    Resolución de EDOs para Modelar Epidemias con Python

    Resolución de EDOs para Modelar Epidemias con Python

    03:24 min
  • 5
    Convección y Sistemas Dinámicos: El Modelo de Lorenz

    Convección y Sistemas Dinámicos: El Modelo de Lorenz

    04:05 min

Modelos númericos

  • 6
    Método de Euler: Solución Numérica de Ecuaciones Diferenciales

    Método de Euler: Solución Numérica de Ecuaciones Diferenciales

    Viendo ahora
  • 7
    Solución Numérica y Exacta de Ecuaciones Diferenciales

    Solución Numérica y Exacta de Ecuaciones Diferenciales

    03:54 min

Sistemas caóticos

  • 8
    Comparación de Métodos: Runge-Kutta 4 vs Euler en Ecuaciones Diferenciales

    Comparación de Métodos: Runge-Kutta 4 vs Euler en Ecuaciones Diferenciales

    02:33 min
  • 9
    Resolución del Sistema de Lorenz con Método RK4

    Resolución del Sistema de Lorenz con Método RK4

    03:32 min

Modelos epidemiológicos

  • 10
    Modelo SIR: Simulación Numérica de Epidemias con RK4

    Modelo SIR: Simulación Numérica de Epidemias con RK4

    03:39 min
  • 11
    Modelos SIR y el Número Básico de Reproducción (R₀)

    Modelos SIR y el Número Básico de Reproducción (R₀)

    02:42 min
  • 12
    Modelado Epidemiológico con SIRD y Algoritmo de Evolución Diferencial

    Modelado Epidemiológico con SIRD y Algoritmo de Evolución Diferencial

    04:41 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads

      Los modelos cuya solución está basada en un algoritmo numérico los denominamos modelos numéricos. El algoritmo numérico más sencillo que existe es el método de Euler el cual discutiremos a continuación.

      Método de Euler

      Cuando tenemos una ecuación diferencial de primer orden para una función desconocida y(t) lo más general posible, escribimos:

      CleanShot 2020-07-23 at 01.05.35.png

      Donde f(y, t) representa una expresión que contiene todos los demás términos de la ecuación diferencial que no acompañen a la derivada. Ahora, como vimos con el problema de la propagación de una epidemia, un sistema dinámico debe tener un punto de inicio o condición inicial. En general siempre debemos definir cual es esta condición inicial para nuestro sistema así:

      CleanShot 2020-07-23 at 01.09.47.png

      Con y₀ siendo el valor inicial de la variable que estamos buscando predecir. En este sentido, el método de Euler propone construir la solución de la ecuación diferencial paso a paso suponiendo que la derivada se aproxima por medio de diferencias finitas pero muy pequeñas:

      modelos-numericos-6.png

      Estas diferencias finitas representan intervalos de tiempo tan pequeños como uno los considere y paso a paso se puede ir calculando el siguiente valor de la variable y con base en el valor del tiempo anterior:

      CleanShot 2020-07-23 at 01.10.27.png

      Esto representa un proceso iterativo donde vamos construyendo la solución paso a paso. El precio de esto es que el aproximar una derivada por intervalos finitos implica que en cada paso se genera un error que se acumula en los siguientes pasos. Matemáticamente hablando, la única manera de reducir este error es considerando un intervalo de tiempo 𝚫t ➝ 0, pero computacionalmente no podemos considerar números infinitamente pequeños, entonces procuramos tomarlo tan pequeño como nuestros recursos de cómputo nos lo permitan. Esta es la gran diferencia entre el cálculo de infinitesimales y los métodos numéricos.

      Dado que los métodos numéricos son muy sencillos conceptualmente hablando, pero pueden representar procesos que deban repetirse muchas veces, el uso de un computador para su ejecución es lo ideal y por lo tanto hoy en día todos los métodos numéricos se implementan en un lenguaje de programación para poder realizar múltiples pasos en tiempos razonablemente cortos y dejándole todo el trabajo a una máquina. Como dato curioso estos algoritmos eran calculados a mano antes de que aparecieran las grandes computadoras, pero ya te imaginarás lo engorroso que eso era en aquella época.

      Solución de Euler en Python

      Tomaremos como ejemplo una ecuación diferencial sencilla junto con una condición inicial que usaremos como base para aplicar el método de Euler:

      CleanShot 2020-07-23 at 01.12.15.png

      Es decir esto representa un problema donde la solución será una función que es igual a su derivada y que su valor para t = 0 sea 1. El algoritmo de Euler en este caso quedaría de la siguiente manera:

      CleanShot 2020-07-23 at 01.13.08.png

      Para inicial el algoritmo debemos definir el intervalo de tiempo, digamos que tomamos 𝚫t = 0.01 y calculamos los pasos así:

      CleanShot 2020-07-23 at 01.14.16.png

      Y así sucesivamente hasta el número de pasos que sea necesario. Por ejemplo si necesitamos construir la solución hasta un tiempo t = 10 , requerimos calcular al menos 1000 pasos con un 𝚫t = 0.01. Esto es mejor hacerlo en un computador, que es justamente lo que haremos a continuación en las siguientes líneas de código:

      pasted image 0 (4).png

      De aquí, la solución numérica correspondiente se vé así:

      image24.png

      Y para los que ya saben que la solución exacta (la que obtenemos de los métodos del cálculo) de esta ecuación ecuación diferencial es la función exponencial:

      CleanShot 2020-07-23 at 01.17.40.png

      Se darán cuenta que al comparar ambos tipos de soluciones, se observa una pequeña diferencia que va creciendo conforme avanzamos en el tiempo y que es mayor si escogemos intervalos de tiempo más largos:

      image26.png

      Y si quieres seguir jugando con este código te darás cuenta de que esta diferencia desaparece a medida que el intervalo de tiempo es cada vez más pequeño, solo que cada vez tendrás que realizar más pasos.

      Y es así como vemos una alternativa para obtener soluciones a modelos de sistemas dinámicos a partir del paradigma numérico, con la advertencia que los métodos numéricos tienen el problema que el error es directamente proporcional al intervalo de tiempo que se usa y esto, a su vez, es inversamente proporcional al número de operaciones que deben realizarse. Es decir, que para obtener mejores soluciones es preciso realizar más pasos y por lo tanto consumir más recursos computacionales.

      El notebook de esta clase lo encuentras en este link de Google Colab. En nuestra próxima clase discutiremos en detalle las diferencias entre las soluciones exactas que obtenemos con álgebra y cálculo contra las soluciones numéricas.

      Comentarios

        Cristian Iván Solórzano Maya

        Cristian Iván Solórzano Maya

        student•
        hace 5 años

        Muy buen aporte respecto a los métodos numéricos, sería excelente ampliar o crear un curso de análisis numérico y optimización, para la ruta de data science. Pues tienen grandes aplicaciones y al parecer solo los que somos matemáticos estamos al tanto del tema

        Roger Christian Cansaya Olazabal

        Roger Christian Cansaya Olazabal

        student•
        hace 5 años

        Por si no queda claro como llegamos a la formula.

        formula euler.png
        Lorena Mondragón

        Lorena Mondragón

        student•
        hace 5 años
        211686501_571261590715370_4588307422511959773_n.jpg
        Roger Christian Cansaya Olazabal

        Roger Christian Cansaya Olazabal

        student•
        hace 5 años
        import numpy as np import matplotlib.pyplot as plt def exact_sol(ts): return np.exp(ts) def num_sol(ts, dt, tf=10, y0=1): ys = [y0] ts = [0] num_steps = int(tf/dt) for _ in range(num_steps): ts.append(ts[-1]+dt) ys.append((1+dt)*ys[-1]) return ts, ys if __name__=='__main__': ys = [1] # creamos un areglo inicial de valores en y ts = [0] # creamos un areglo inicial de valores en t dt = 0.01 num_steps = 1000 for i in range(num_steps): ts.append(ts[-1]+dt) # calculamos el proximo t y lo agregamos al arreglo ys.append((1+dt)*ys[-1]) # calculamos el proximo y y lo agregamos al arreglo #print (ts) #print(ys) plt.figure(figsize=(15,8)) plt.plot(ts,ys) plt.xticks(fontsize=20) plt.yticks(fontsize=20) plt.show() plt.figure(figsize=(12,6)) for dt in [0.1, 0.05, 0.01]: ts, ys = num_sol(ts, dt) plt.plot(ts, ys, '--', label='dt = {}'.format(dt)) plt.plot(ts,exact_sol(ts), label='exact') plt.xticks(fontsize=20) plt.yticks(fontsize=20) plt.legend(fontsize=20) plt.show()
        metodo_euler2.png
          Ricardo Posada

          Ricardo Posada

          student•
          hace 2 años

          excelente y elegante código

        Eduardo Monzón

        Eduardo Monzón

        student•
        hace 3 años

        Nunca perder de vista que al usar modelos nunméricos hay que tener siempre en cuenta el error que se va a generar por usarlos. Este va a ser menor mientras más nos acercamos a lo infinitesimal, pero ello requiere que usemos más capacidad de cómputo. Lo ideal será encontrar un equilibrio entre cantidad de error y recursos a usar, esto dependerá del tipo de problema a resolver.

        Anthony Jean Paul Blaz Lazo

        Anthony Jean Paul Blaz Lazo

        student•
        hace 5 años

        Genial!