UNIVERSIDAD SIMON BOLIVAR División de Ciencias Fı́sicas y Matemáticas Departamento de Cómputo Cientı́fico CO-4611 Aproximaciones numéricas 1 Euler El método más sencillo para resolver una ecuación de la forma y 0 = f (t, y), y(t0 ) = y0 , es el método de Euler. La idea central con los métodos numéricos es aproximar la solución de la ecuación con condición inicial en los puntos t1 , t2 , t3 , . . . , tN , con ti = ti−1 +h y h = (tN −t0 )/N . Conociendo la información en t0 , y(t0 ) = y0 , podemos aproximar la solución de y en tN . El método puede ser descrito desde cuatro puntos de vista distintos. 1. Geométricamente. Sea Y (t) la solución de la ecuación diferencial. Dado que tenemos información sobre la solución en t = t0 , extrapolamos la solución hasta t = t1 mediante la recta tangente al punto (t0 , y0 ). La ecuación de la recta tangente es y − y0 = Y 0 (t0 )h = f (t0 , y0 )h de aqui tenemos que y = y0 + hf (t0 , y0 ), por lo que y1 = y0 + hf (t0 , y0 ). Repitiendo el mismo procedimiento anterior pero usando como punto para el cálculo de la recta tangente (t1 , y1 ) y pendiente f (t1 , y1 ), podemos calcular el siguiente iterado. En general el método de Euler se puede describir como yn+1 = yn + hf (tn , yn ), n = 0, 1, 2, ... 2. Serie Taylor. El método de Euler también se puede obtener expandiendo Y (tn+1 ) alrededor de tn , de la siguiente manera: Y (tn+1 ) = Y (tn + h) = Y (tn ) + hY 0 (tn ) + h2 /2Y 00 (ξn ) con tn ≤ ξn ≤ tn+1 . Tomando la aproximación de primer orden tenemos que yn+1 = yn + hy 0 (tn ) = yn + hf (tn , yn ). 3. Diferenciación Numérica. De la definición matemática de la derivada, podemos usar el cociente para hacer una aproximación con h suficientemente pequeño, y(tn+1 ) − y(tn ) ∼ 0 = y (tn ) = f (tn , yn ) h 1 ⇒ yn+1 = yn + hf (tn , yn ) 4. Integración Numérica. Iniciando de la ecuación y 0 (t) = f (t, y) integramos a ambos lados la expresión en el intervalo (tn , tn+1 ) Z tn+1 y(tn+1 ) − y(tn ) = f (t, y(t))dt (1) tn aproximando la integral del lado derecho mediante el rectangulo con base en el extremo izquierdo, obtenemos: y(tn+1 ) − y(tn ) = base ∗ altura = hf (tn , yn ) obteniendo nuevamente la aproximación por Euler. Uno de los aspectos resaltantes del método es que a medida que dividimos el tamaño del paso h, los errores también se disminuyen en aproximadamente la mitad. Es un método sencillo de implementar pero de orden bajo por lo que dependiendo del gardo de precisión que se desee, el h puede ser muy pequeño. Una forma de mejorar el método de Euler (Euler mejorado) es utilizar una mejor aproximación a la integral en (1). Podriamos considerar por ejemplo una aproximación por trapecios de modo que Z tn+1 h f (t, y(t))dt = [f (tn , yn ) + f (tn+1 , yn+1 )] 2 tn noten que el útimo término hace referencia al valor que queremos aproximar en esta iteración (yn+1 ), sin embargo podemos usar un paso del método de Euler para aproximar la solución, obteniendo finalmente: yn+1 = yn + 2 h [f (tn , yn ) + f (tn+1 , yn + hf (tn , yn ))]) 2 Métodos basados en Taylor Si queremos un método de orden superior podemos incluir mas términos en la serie de Taylor. El término de la segunda derivada se calcula usando la regla de la cadena: ∂f ∂f dy ∂f ∂f dy 0 = + = + f dt ∂t ∂y dt ∂t ∂y En general los métodos de Taylor los podemos escribir como yn = yn−1 + hT (n) (t, y) donde n es el orden de la aproximación, 2 de esa manera el método de Euler se rescribe como yn = yn−1 + hT (1) (t, y) con T (1) (t, y) = f (t, y). Un método de Taylor de orden 2, se escribe como yn = yn−1 + hT (2) (t, y) h i ∂f con T (2) (t, y) = f (t, y) + h/2 ∂f (t, y) + (t, y)f (t, y) . La dificultad de los ∂t ∂y métodos de Taylor radica en que es necesario conocer la derivadas parciales de la función y eso no siempre es tarea fácil. Los métodos de Runge Kutta poseen las mismas ventajas de los métodos de Euler sin las desventajas asociadas. 3 Métodos Runge-Kutta Para ejemplificar el método de Runge Kutta, hagamos la derivación de un método de orden 2. El obejtivo es determinar valores de a1 , α1 , β1 tales que a1 f (t + α1 , y + β1 ) se aproxime a T (2) (t, y). Expandimos las dos expresiones: · ¸ ∂f ∂f T (2) (t, y) = f (t, y) + h/2 (t, y) + (t, y)f (t, y) ∂t ∂y a1 f (t+α1 , y+β1 ) = a1 f (t, y)+a1 α1 ∂f ∂f (t, y)+a−1β1 (t, y)+a1 R(t+α1 , y+β1 ) ∂t ∂y igualando coeficientes tenemos: f : a1 = 1 ft : h/2 = a1 α1 fy : h/2f (t, y) = a1 β1 ⇒ ⇒ ⇒ a1 = 1 α1 = h/2 β1 = h/2f (t, y) ∴ T (2) (t, y) ∼ = t(t + h/2, y + h/2f (t, y)) Si tomamos el método de Taylor de orden 2 yn = yn−1 + hT (2) (t, y) y sustituimos a T (2) por su aproximación obtenemos el RK2, mejor conocido como el método del punto medio. Cuentas similares se pueden llevar para obetener métodos RK de orden superior (para orden 3, aproximamos a T (3) (t, y) con f (t + α1 , y + δ1 f (t + α2 , y + δ2 f (t, y)))), siendo el de orden 4 el más utilizado. El método de orden 4 está descrito por el siguiente conjunto de ecuaciones: k1 k2 = = hf (tn , yn ) hf (tn + h/2, yn + 1/2k1 ) k3 k4 = = hf (tn + h/2, yn + 1/2k2 ) hf (tn+1 , yn + k3 ) yn+1 = yn + 1/6 (k1 + 2k2 + 2k3 + k4 ) 3 4 Simulaciones en Matlab Los métodos de Euler. Euler mejorado y método del punto medio se pueden programar fácilmente en Matlab. El método RK4 está implementado como parte de las funciones intrı́nsecas de Matlab en el algoritmo ODE45. Si deseamos encontrar la solución a una ecuación con 4 dı́gitos de precisión (con cual método descrito anteriormente), no podemos garantizar que algún método en particular logre el cometido con un tamaño del paso escogido arbitrariamente. Sin embargo si hacemos la prueba con un h (digamos 0.1) y vemos las soluciones aproximadas y luego aproximamos nuevamente la función con h/10, deberiamos ver que ciertos dı́gitos se estabilizan en las soluciones. Podemos seguir con este procedimiento (reducir el h) hasta lograr que la solución se estabilice en los primeros 4 dı́gitos según nuestro requerimiento. 4