Max Hernandez

Laberinto - Ejemplo de Canvas en HTML5

jueves, 23 de agosto de 2012

Método de Euler (Laboratorio)

Durante esta semana en la clase de automatización y control de sistemas dinámicos estamos haciendo un repaso de calculo diferencial, y como tema para laboratorio me propuse a hablar sobre el método Euler.

¿Qué es el método Euler?
El método Euler es un procedimiento para resolver ecuaciones diferenciales ordinarias utilizando un valor inicial.

¿Como funciona?
Cuando la función a resolver involucra solo una variable independiente:

dy/dx = F(x,y)

El método se basa de forma general en la pendiente estimada de la función para extrapolar desde un valor anterior a un nuevo valor:

Nuevo valor = valor anterior + pendiente x tamaño de paso

Donde nuevo valor y valor anterior, son valores de la función que queremos extrapolar osea de "y" o "f(t)" , pendiente es el valor de la derivada o la pendiente para el valor "y" anterior y "tamaño de paso" es la diferencia de "t" entre el valor anterior (valor de t que ya conocemos) y el nuevo punto calculado.

De esta manera, la formula anterior, se aplica paso a paso para encontrar un valor en un punto que se encuentra a una distancia muy pequeña del punto actual, repitiendo este proceso determinada cantidad de veces se puede aproximar



Extrapolación:
La extrapolacion en las matematicas es el proceso de construir nuevos puntos a partir de puntos conocidos, pero el resultado siempre esta sujeto a cierta incertidumbre.

Pendiente:
La pendiente se define como la inclinación de un elemento ideal, natural o constructivo respecto a la horizontal.
En calculo este es una tangente a un punto de la función, osea una linea recta que toca solamente un punto de la función, esto representa la derivada.


[Imagen obtenida de: http://www.mat.uson.mx/eduardo/calculo2/soldifer/soldiferHTML/difere1.jpg]

Ejemplo

Para el ejemplo usaremos la función:
f(t) = e^t
Derivando obtenemos:
dy/dt = e^t
Sustituyendo:
dy/dt = f(t) = y

Ahora para esta ecuación diferencial voy a tratar de extrapolar la función "f(t)" utilizando el método de euler sabiendo que "f(0) = 1".
Para esto construí el siguiente código:

#! usr/bin/python

import math

def ecuacion_diferencial(t, y):
    """ Esta funcion es igual a sustituir "t", y en la ecuación diferencial "dy/dt = y" cuya solucion es "f(y) = e^t" """
    return y
 
def euler(ecuacion, tiempo_inicial, y_inicial, tiempo_buscado, tamano_paso, flName):
    """ 
    Los parametros son:
      - La funcion que sustituye "y", "t" en la ecuacion diferencial
      - El tiempo del punto inicial "t0"
      - El valor "y" o f(t0) del puntto inicial "y0"
      - El valor "t" del f(t) buscado
      - La distancia en "t" de cada nuevo punto que se calcula o el tamano de paso
      - El nombre del archivo
    """

    valor_anterior = y_inicial # "y0"
    tiempo = tiempo_inicial # "t0"
    pendiente = ecuacion(tiempo_inicial, y_inicial) # f'(t0) = 

    while t0 < tiempo_buscado: # Se calculan nuevos puntos hasta que se alcance el valor "t" buscado
        nuevo_valor = valor_anterior + (pendiente * tamano_paso) # Se calcula f(tiempo + tamano_paso)
        tiempo += tamano_paso # se le suma el paso o el cambio de t
        pendiente = ecuacion(tiempo, nuevo_valor) # pendiente o derivada del nuevo valor de t 
        valor_anterior = nuevo_valor
 
  return nuevo_valor

Como puede observarse conociendo un punto "(x,y)" y sabiendo su pendiente o derivada podemos aproximar el valor de un punto cercano pesto que la pendiente representa la inclinación de un punto a otro si la función fuera una linea recta.
Ademas podemos observar que cambiando el tamaño de cada paso se puede mejorar la exactitud del método pero causara que sea más pesado el mismo, como se puede ver en la gráfica:



Referencias:
http://en.wikipedia.org/wiki/Euler_method
http://www.uaem.mx/posgrado/mcruz/cursos/mn/euler.pdf
http://en.wikipedia.org/wiki/Extrapolation 
http://es.wikipedia.org/wiki/Pendiente_%28matem%C3%A1ticas%29 

1 comentario:

  1. Ehm, cuidado con los acentos; esta vez van 15 pts, pero a la próxima quito puntos si la ortografía no es impecable.

    ResponderBorrar