ITESM, Campus Monterrey Departamento de Matemáticas MA-841: Ecuaciones Diferenciales Lectura #21 1 1.1 Invierno 2001 Profesor: Eduardo Uresti Soluciones Numéricas a EDs Introducción: Soluciones numéricas? En general, los métodos de solución a EDs se pueden agrupar en 3 categorias. Los métodos analı́ticos los cuales se basan en el manejo de expresiones matemáticas como la derivación, integración, la simplificación algebraica, o la factorización. Estos producen como resultado la fórmula de la función solución. Este tipo de métodos es preferible pues apartir de la fórmula de solución puede graficarse la función solución o hacer tablas de valores de ella. Pero a veces, para problemas reales no es posible resolver analı́ticamente una ED. Este “a veces” se convierte en “en general” en problemas reales. Los métodos gráficos pretenden describir gráficamente el comportamiento cualitativo de la función. Conclusiones como que la función solución se estaciona en un valor para valores grandes de la variable independiente, o que la función crece y alcanza un máximo y posteriormente se estaciona, pueden ser las conclusiones que se obtienen utilizando este tipo de métodos. A la par de estos métodos están los métodos numéricos. Los métodos numéricos pretenden hacer una tabla de valores para la función incógnita y solución al problema. Estos métodos se aplican a problemas con valores iniciales y producen respuestas del tipo x 1.00 1.10 1.20 1.30 1.40 1.50 y = f (x) 1.000 1.200 1.464 1.815 2.285 2.927 Todos los métodos numéricos son aproximados, y como es de esperarse existen toda una gama con fuertes diferencias entre ellos. Desde los que invierten poco esfuezo computacional hasta aquellos que consumen gran cantidad de recursos. El sentido común funciona; aquellos que invierten más recursos computacionales obtienen tablas de valores más aproximadas a los valores obtenidos utilizando la fórmula de la función solución exacta en general. En la siguiente sección veremos algunas técnicas de obtención de los valores y = f (x) de la función solución. 1.2 Generalidades En esta sección estaremos interesados en hacer una presentación y revisión comentada de algunos métodos numéricos para la solución al problema y 0 = f (x, y) y(x0 ) = y0 , es decir, a una ED de primer orden con condiciones iniciales y(x0 ) = y0 . Esta información será el primer renglón de la tabla que estamos interesados en formar: x x0 ··· y = f (x) y0 ··· La forma como ha sido tratado el llenado de esta tabla ha sido pensado en un proceso iterativo-recursivo. Explicaremos. Supongamos que la tabla está llena hasta el paso o renglón n, cómo llenar el siguiente?: x x0 x1 x2 .. . y = f (x) y0 y1 y2 .. . xn yn Usualmente los valores de x están igualmente espaciados y la distancia entre ellos es una constante fijada por el que quiere resolver el problema, que llamaremos simplemente “el usuario”. Esta distancia se conoce como el paso y se simboliza comnmente por la letra h. De esta forma, el punto xn+1 se puede calcular fácimente por la fórmula xn+1 = xn + h = xo + n h 2 Aunque la fórmula xn = xo + n h es matemáticamente válida y simple, en general se prefiere la versión recursiva xn+1 = xn + h. El problema ahora se reduce a las fórmulas para calcular yn+1 . Aquı́ se puede hacer una división entre diferentes métodos. En áquellos que para el cálculo de yn+1 sólo utilizan la información del renglón anterior de la tabla (xn , yn ) y áquellos que utilizan los dos renglones anteriores o más de la tabla. Estos últimos métodos se conocen en la literatura como métodos multipaso. Los primeros son más sencillos. Entre estos todavı́a hay separaciones. Están aquellos utilizan información intermedia para aproximar mejor el valor de yn+1 y otros que sólo utilizan la función y el renglón anterior. 1.3 Método de Euler El método de Euler es el método más simple utilizado para resolver el problema y 0 = f (x, y) (1) y(x0 ) = y0 . La deducción del método utiliza el desarrollo de Taylor de la función solución y(x) en el punto x = xn la cual queda: y(x) = y(xn ) + a1 (x − xn ) + a2 (x − xn ) + · · · donde los valores de a1 y a2 se calculan por las fórmulas a1 = y 0 (xn ) 1! y y 00 (xn ) 2! si la serie infinita anterior se trunca lo que se obtiene es una aproximación; al truncarla hasta el segundo término obtenemos: a2 = y(x) ≈ y(xn ) + y 0 (xn ) (x − xn ) si tomamos ahora x = xn+1 = xn + h obtenemos: y(xn+1 ) ≈ y(xn ) + y 0 (xn ) h Puesto que y(x) es la solución a la ED (??), se debe complir y 0 (xn ) = f (xn , yn ) 3 (2) si sustituimos la anterior fórmula en la aproximación (??) obtenemos y(xn+1 ) ≈ y(xn ) + f (xn , yn ) h La cual nos da la relación de recurrencia utilizada por el método de Euler para la determinación de yn+1 yn+1 = yn + h f (xn , yn ) 1.3.1 (3) Ejemplo Aplique el método de Euler con paso h = 0.1 para determinar el valor y(1.5) donde y(x) es la solución al problema y0 = 2 x y y(1) = 1. (4) Solución Debemos construir la tabla de valores aproximados de la solución: x .. . y = f (x) .. . 1.5 Sabemos que nuestro primer renglón está constituido por los datos (x0 = 1, y0 = 1) y que el paso es h = 0.1 ası́ que nuestra tabla inicia en x x0 x1 x2 x3 x4 x5 = 1.0 = x0 + 0.1 = 1.1 = x1 + 0.1 = 1.2 = x2 + 0.1 = 1.3 = x3 + 0.1 = 1.4 = x4 + 0.1 = 1.5 y = f (x) y0 = 1.0 Llenemos la columna para la y: x x0 x1 x2 x3 x4 x5 = 1.0 = x0 + 0.1 = 1.1 = x1 + 0.1 = 1.2 = x2 + 0.1 = 1.3 = x3 + 0.1 = 1.4 = x4 + 0.1 = 1.5 y = f (x) y0 = 1.0 y1 = y0 + h f (x0 , y0 ) = 1.000 + 0.1 (2 × 1 × 1) = 1.200 y2 = y1 + h f (x1 , y1 ) = 1.200 + 0.1 (2 × 1.1 × 1.200) = 1.464 y3 = y2 + h f (x2 , y2 ) = 1.464 + 0.1 (2 × 1.2 × 1.464) = 1.815 y4 = y3 + h f (x3 , y3 ) = 1.815 + 0.1 (2 × 1.3 × 1.815) = 2.611 y5 = y4 + h f (x4 , y4 ) = 2.611 + 0.1 (2 × 1.4 × 2.611) = 2.927 4 La solución que temos es y(1.5) ≈ 2.927. Si en lugar de tomar el paso como h = 0.1 hubieramos elegido h = 0.05 tendrı́amos la tabla: x x0 = 1.00 x1 = x0 + 0.05 = 1.05 x2 = x1 + 0.05 = 1.10 x3 = x2 + 0.05 = 1.15 x4 = x3 + 0.05 = 1.20 x5 = x4 + 0.05 = 1.25 x6 = x0 + 0.05 = 1.30 x7 = x1 + 0.05 = 1.35 x8 = x2 + 0.05 = 1.40 x9 = x3 + 0.05 = 1.45 x10 = x4 + 0.05 = 1.50 y = f (x) y0 = 1.000 y1 = y0 + h f (x0 , y0 ) = 1.000 + 0.05 (2 × 1.00 × 1.000) = 1.100 y2 = y1 + h f (x1 , y1 ) = 1.100 + 0.05 (2 × 1.05 × 1.100) = 1.215 y3 = y2 + h f (x2 , y2 ) = 1.215 + 0.05 (2 × 1.10 × 1.215) = 1.349 y4 = y3 + h f (x3 , y3 ) = 1.349 + 0.05 (2 × 1.15 × 1.349) = 1.504 y5 = y4 + h f (x4 , y4 ) = 1.504 + 0.05 (2 × 1.20 × 1.504) = 1.684 y6 = y5 + h f (x5 , y5 ) = 1.684 + 0.05 (2 × 1.25 × 1.684) = 1.895 y7 = y6 + h f (x6 , y6 ) = 1.895 + 0.05 (2 × 1.30 × 1.895) = 2.141 y8 = y7 + h f (x7 , y7 ) = 2.141 + 0.05 (2 × 1.35 × 2.141) = 2.431 y9 = y8 + h f (x8 , y8 ) = 2.431 + 0.05 (2 × 1.40 × 2.431) = 2.771 y10 = y9 + h f (x9 , y9 ) = 2.771 + 0.05 (2 × 1.45 × 2.771) = 3.173 La solución que otenemos es este caso es: y(1.5) = 3.173. Cómo justificamos esta diferencia? Cuál respuesta es la mejor? El sentido común nos inclina a pensar que esta última es más aproximada a la solución exacta. Esto lo podemos corroborar utilizando la solución exacta a la ED; ésta es de variables separables y la podemos resolver fácilmente: la solución general queda 2 y(x) = C ex Al aplicar las condiciones iniciales obtemos la solución al problema: y(x) = ex 2 −1 De donde y(1.5) = 3.490, los cual corrobora nuestra apuesta que con un paso más pequeño se mejora la aproximación. Sin embargo el trabajo se ha duplicado y el error, aunque menor, es considerable. 1.4 Método de Euler Mejorado El método de Euler mejorado tiene las siguientes ecuaciones de recurrencia: yn+1 = yn + h ∗ ) f (xn , yn ) + f (xn+1 , yn+1 2 donde ∗ yn+1 = yn + h f (xn , yn ) 5 1.4.1 Ejemplo Aplique el método de Euler mejorado con paso h = 0.1 para determinar el valor y(1.5) donde y(x) es la solución al problema y0 = 2 x y y(1) = 1. (5) Solución Debemos construir la tabla de valores aproximados de la solución: x x0 x1 x2 x3 x4 x5 y∗ = 1.0 = x0 + 0.1 = 1.1 = 1.2 = 1.3 = 1.4 = 1.5 y1∗ y2∗ y3∗ y4∗ y5∗ = y0 + h f (x0 , y0 ) = 1.200 = 1.5030 = 1.9194 = 2.4988 = 3.3162 y = f (x) y0 = 1.0 f (x0 ,y0 )+f (x1 ,y1∗ ) = 1.232 y1 = y0 + 2 y2 = 1.5479 y3 = 1.9832 y4 = 2.5908 y5 = 3.5408 De donde obtenemos que este método da como respuesta y(1.5) = 3.5408 la cual está más próxima a la solución exacta que la obtenida por los métodos de Euler previamente vistos. 1.5 Método de Runge-Kutta 6