Lección 6 Técnicas numéricas para las Ecuaciones diferenciales de primer orden: Método de Euler 6.1. Introducción a los métodos numéricos En este capı́tulo y en los anteriores estamos estudiado algunas técnicas analı́ticas y geométricas para buscar o comprender el comportamiento de las soluciones de una ecuación diferencial de primer orden. En esta sección vamos a discutir algunas técnicas numéricas. El cálculo numérico es una especialidad de la matemática cuyo objetivo es formular los problemas matemáticos de tal forma que puedan resolverse mediante operaciones aritméticas. Hay muchos tipos de métodos numéricos pero todos ellos comparten una caracterı́stica común: conllevan la realización de un gran número de cálculos aritméticos. Con la extensión del uso de los ordenadores y siendo, como son, cada vez más potentes es imprescindible en cualquier disciplina en la que haya presencia de matemáticas la consideración de la vertiente numérica. En el caso de las ecuaciones diferenciales y en el de los problemas en los que éstas están presentes, el cálculo numérico es, si cabe, más importante. Ello es debido, entre otras cosas y como ya hemos dicho, a que muy pocas ecuaciones diferenciales se pueden resolver mediante técnicas analı́ticas y a que las técnicas cualitativas son útiles para saber cómo evolucionan 87 88 Técnicas cualitativas: Campos de pendientes y lı́neas de fase las soluciones a largo plazo, pero nos proporcionan poca información sobre el valor de una solución en un punto concreto. Los métodos numéricos para resolver ecuaciones diferenciales tienen por objetivo conocer de forma aproximada el valor de la solución de una ecuación diferencial dada y, debido a la generalización del uso de los ordenadores y a la aparición de muchos paquetes de programación muy eficientes que automatizan en gran medida el proceso de obtención de soluciones numéricas, son los más utilizados en las ciencias aplicadas y la ingenierı́a. Aún cuando hay procedimientos analı́ticos y cualitativos relativamente simples se acrecienta la tentación de “dejar que el ordenador” lo haga. No hay nada malo en este modo de proceder siempre que se tengan presentes dos puntos importantes. Primero, los ordenadores son muy buenos haciendo operaciones y haciendo gráficas, pero no realizan ninguna interpretación. Corresponde al ser humano entender el significado de los datos que aporta la máquina e interpretarlos. Y en segundo lugar, los métodos numéricos siempre proporcionan soluciones aproximadas. No hay nada malo en ello, también nosostros hacemos la mayorı́a de los cálculos de forma aproximada. El problema está en que los errores que son inherentes al cálculo numérico, por lo general, se incrementan cuanto más nos alejamos del valor inicial. Éstos pueden no ser significativos para algunas ecuaciones, pero en otras pueden ser catastróficos. En definitiva, no debemos utilizar los programas prediseñados para resolver ecuaciones como si fueran cajas negras en las que se mete la ecuación y sale la solución. Esta forma de actuar no sólo no es cientı́fica sino que nos puede dar más de un disgusto. Debemos poseer un cierto conocimiento de lo que sucede “ahı́ dentro”. El objetivo de esta sección es discutir el método numérico más elemental: el método de Euler. Consideremos entonces el siguiente problema de condición inicial: x0 = f (t, x), x(t0 ) = x0 . (6.1) Por los teoremas de existencia y unicidad, para que este problema tenga solución única, supondremos que f y ∂f son funciones continuas en un rectángulo R = {(t, x) | a < t < ∂x b, c < x < d} que contiene al punto (t0 , x0 ). Estas hipótesis garantizan que existe un ε > 0 tal que el problema (6.1) tiene una única solución en el intervalo t0 − ε < t < t0 + ε; pero no sabemos lo grande o pequeño que es ε. En lo que sigue supondremos que ε es lo suficientemente grande como para incluir el intervalo de integración donde se quieren calcular las soluciones de forma aproximada. 6.2. El método de Euler El método de Euler se basa en la idea de aproximar la curva solución de la ecuación diferencial por una poligonal (sucesión de pequeños segmentos pegado cada uno al siguiente) que se construye partiendo de la misma idea que nos llevó a la consideración de los campos 6.2 El método de Euler 89 de pendientes: si x0 (t1 ) = f (t1 , x(t1 )) entontes x0 (t1 ) es la pendiente de la recta tangente a la curva solución en el punto (t1 , x(t1 )). Con esta idea en mente y partiendo del punto (t0 , x0 ), que es el dato inicial del problema (6.1), podemos calcular la recta tangente a la curva solución en el punto (t0 , x0 ). Ésta tiene por ecuación: x − x0 = f (t0 , x0 )(t − t0 ). Si t1 está muy próximo a t0 entonces el valor de la recta tangente en t1 y el de la curva solución en dicho punto serán muy parecidos. Sea x1 el valor de la recta tangente en el punto t1 ; es decir, x1 = x0 + f (t0 , x0 )(t − t0 ), y tomemos este valor como el valor verdadero de la curva solución en t1 . Construı́mos “la recta tangente a la curva” en (t1 , x1 ): x − x1 = f (t1 , x1 )(t − t1 ). Hemos escrito “recta tangente a la curva” porque en realidad no se trata de la recta tangente sino de una aproximación. En efecto, el punto (t1 , x1 ) está cerca de la curva (suponiendo que t1 está muy cerca de t0 ) pero seguramente no es un punto de la curva (véase la Figura 6.1). (t3,x3) (t4,x4) (t2,x2) (t1,x1) Figura 6.1: La gráfica de una solución y su aproximación obtenida por el método de Euler. (t0,x0) A partir del punto (t1 , x1 ) obtenemos el punto (t2 , x2 ) de la misma forma: tomamos un punto t2 muy próximo a t1 y calculamos el valor x2 = x1 + f (t1 , x1 )(t2 − t1 ) que es el valor, en t2 , de la recta que pasa por (t1 , x1 ) con pendiente f (t1 , x1 ). A continuación actuamos como si el punto (t2 , x2 ) estuviera en la curva solución y calculamos “la recta tangente a la curva” en dicho punto, y ası́ sucesivamente (Figura 6.1). Este procedimiento nos permite construir una poligonal que, aparentemente, estará tanto más cerca de la solución cuanto más próximos estén entre sı́ los puntos t0 , t1 , t2 , etc. En la práctica suele suceder que se conoce de antemano el intervalo (a, b) donde se quiere calcular la solución y t0 ∈ (a, b). También es habitual que se quiera conocer, de forma aproximada, cómo evoluciona la curva en un tiempo futuro; es decir, para t > t0 . 90 Técnicas cualitativas: Campos de pendientes y lı́neas de fase Ésta será nuestra suposición aunque todo lo que digamos vale para conocer, siempre de forma aproximada, la curva solución del problema de condición inicial para t < t0 . Ası́ pues, supondremos que t0 = a y que en el intervalo (a, b) existe una única solución del problema de condición inicial. Finalmente, los puntos t1 , t2 , . . . sobre los que se aplica el método de Euler se escogen igualmente espaciados en el intervalo (a, b). En consecuencia, se divide el intervalo en, digamos, N subintervalos de longitud h: b−a N y se toma t1 = t0 + h, t2 = t1 + h = t0 + 2h, t3 = t2 + h = t0 + 3h, . . . , tN = tN −1 + h = t0 + N h = a + b − a = b. Al valor N se le llama número de pasos y a h el tamaño de paso del método de Euler. Cuanto más pequeño es el tamaño de paso más próximos entre sı́ están los puntos t0 , t1 , t2 , etc. y parece plausible que más próxima estará la poligonal que obtenemos con el método de Euler de la curva solución. h= Una vez que ya tenemos los valores de t0 , t1 , . . . , tN debemos calcular los valores de x0 , x1 ,. . . , xN . En realidad, como estamos considerando el problema de condición inicial x0 = f (t, x), x(t0 ) = x0 . El valor de x0 ya lo conocemos. Calculamos x1 , x2 ,. . . xN por el método de Euler: x − x0 = f (t0 , x0 )(t − t0 ) x − x1 = f (t1 , x1 )(t − t1 ) .. . ⇒ x1 = x0 + f (t0 , x0 )(t1 − t0 ) = x0 + f (t0 , x0 )h ⇒ x2 = x1 + f (t1 , x1 )(t2 − t1 ) = x1 + f (t1 , x1 )h .. .. . . x − xN −1 = f (tN −1 , xN −1 )(t − tN −1 ) ⇒ xN = xN −1 + f (tN −1 , xN −1 )(tN − tN −1 ) = = xN −1 + f (tN −1 , xN −1 )h Una vez obtenidos los puntos x1 , x2 , . . . , xN la poligonal que se aproxima a la curva solución se obtiene uniendo los puntos (t0 , x0 ), (t1 , x1 ), (t2 , x2 ),. . . ,(tN , xN ). Podemos resumir el método de Euler en el siguiente esquema o algoritmo Método de Euler para el problema dx dt = f (t, x), x(t0 ) = x0 Dado el intervalo de integración (a, b) y el número de pasos N , calcúlese el tamaño de b−a paso h = . Entonces, sucesivamente para k = 1, . . . , N : N 1.- Calcúlese f (tk−1 , xk−1 ). (Nótese que para k = 1, (tk−1 , xk−1 ) = (t0 , x0 ) son valores conocidos). 2.- Calcúlese tk = tk−1 + h = t0 + kh. 3.- Calcúlese xk = xk−1 + f (tk−1 , xk−1 )h 6.2 El método de Euler 91 k 0 1 2 3 4 tk 0 1/2 1 3/2 2 xk 1 1 1/2 1/4 5/32 Tabla 6.1: Método de Euler para dx dt f (tk , xk ) 0 -1 -1/2 -3/16 = −2tx2 , x(0) = 1 con h = 0,5 Estos datos se pueden poner en una tabla tal y como se muestra en el siguiente ejemplo. Ejemplo 6.1 .- Consideremos el problema de condición inicial dx = −2tx2 , dt La función f (t, x) = −2tx2 es continua con sus derivadas parciales de cualquier orden respecto de la variable x son continuas. Los teoremas de existencia y unicidad nos permiten asegurar que en las proximidades de t0 existe una solución única. x 1 0.5 0 x(0) = 1. 0.5 1 1.5 2 t Figura 6.2: Grafica de la solución del problema de condición inicial dx = −2tx2 , dt x(0) = 1 y la aproximación producida por el método de Euler con un tamaño de paso h = 0,5. Vamos a utilizar el método de Euler para aproximar esta solución en el intervalo 0 ≤ t ≤ 2. Para poder hacer los cálculos a mano, o con ayuda de una calculadora, vamos a tomar 4 pasos, N = 4. Por lo tanto b−a 2−0 h= = = 0,5, N 4 el tamaño de paso es 0,5. Entonces t0 = 0, t1 = 0,5, t2 = 1, t3 = 1,5, t4 = 2. Además x0 x1 x2 x3 x4 =1 = x0 + f (t0 , x0 )h = 1 + f (0, 1)0,5 = 1 = x1 + f (t1 , x1 )h = 1 + f (0,5, 1)0,5 = 1/2 = x2 + f (t2 , x2 )h = 0,5 + f (1, 0,5) = 1/4 = x3 + f (t3 , x3 )h = 0,25 + f (1,5, 0,25)0,5 = 5/32 Es conveniente poner estos datos en una tabla (Tabla 6.1). Para dibujar la poligonal que se aproxima a la curva solución en el intervalo (0, 2) sólo tenemos que unir los puntos (t0 , x0 ), (t1 , x1 ),(t2 , x2 ), (t3 , x3 ) y (t4 , x4 ) (Figura 6.2). 92 Técnicas cualitativas: Campos de pendientes y lı́neas de fase Con un tamaño de paso tan grande como h = 0,5 no podemos esperar resultados espectaculares. Debemos reducir el tamaño de paso si queremos una mejor aproximación. Claro que entonces el número de operaciones a realizar es mucho mayor. Por ejemplo, si escogemos h = 0,1 entonces el número de pasos es N = 20 y es éste el número de operaciones a realizar para calcular los valores de xk . Si reducimos más aún el tamaño de paso, por ejemplo h = 0,001, el número de pasos aumenta proporcionalmente, en este caso N = 2000. Hacer esto a mano lleva mucho tiempo, aún cuando se disponga de una calculadora. Pero el más simple de los ordenadores nos realiza estos cálculos en unas pocas décimas de segundo. Las Tablas 6.2 6.3 nos dan los resultados que se han obtenido, con seis cifras decimales, utilizando el programa MATLAB. Comparando las tres Tablas vemos que los valores aproximados para k 0 1 2 3 4 .. . tk 0 0.1 0.2 0.3 0.4 .. . xk 1 1.000000 0.980000 0.941584 0.888389 .. . k 0 1 2 3 4 .. . tk 0 0.001 0.002 0.003 0.004 .. . xk 1. 1.000000 0.999998 0.999994 0.999988 .. . 19 20 1.9 2 0.210119 0.193342 1999 2000 1.999 2 0.200097 0.199937 Tabla 6.2: Método de Euler para −2tx2 , x(0) = 1 con h = 0,1 dx dt = Tabla 6.3: Método de Euler para −2tx2 , x(0) = 1 con h = 0,001 dx dt = la solución, x(t), del problema de condición inicial dx = −2tx2 , x(0) = 1 en el punto t = 2 dt son distintos según sea el tamaño de paso que utilicemos. Tal y como venimos diciendo, la intuición nos dice que cuanto más pequeño es el tamaño de paso más próximosde la solución verdadera estaremos. Par este problema concreto lo podemos comprobar porque al tratarse de unaecuación variables separables la podemos integrar sin ninguna dificultad. La solución analı́tica es: 1 x(t) = 2 . t +1 1 y x(2) = = 0,2. El valor obtenido con h = 0,5 es 5/32 = 0,15625, el obtenido con h = 0,1 es 5 0,193342 y el obtenido con h = 0,001 es 0,199937. Vemos que, en efecto, cuanto más pequeño es el tamaño de paso mayor es la exactitud de la aproximación o, si se quiere, menor es el error que se comete en la aproximación.. La cuestión que surge de forma natural es si hay alguna relación entre el tamaño de paso h y este error. Si denotamos por eh el error que se comete en la aproximación cuando el tamaño de paso es h, de los resultados obtenidos, vemos que e0,5 = 0,2 − 0,15625 = 0,04375 e0,1 = 0,2 − 0,193342 = 0,006658 e0,001 = 0,2 − 0,199937 = 0,000063. 6.2 El método de Euler 93 En general podemos definir el error en la aproximación para tN como (recordemos que b−a h= siendo (a, b) el intervalo de integración): N eh = |x(tN ) − xN | donde x(tN ) es el valor de la solución del problema de condición inicial dado en tN y xN es el valor obtenido por el método de Euler. El valor absoluto se utiliza para que el error sea siempre positivo. −1 10 h Tabla 6.4: Error en el método de Euler para la solución de dx = −2tx2 , x(0) = dt 1 para varios valores de h −2 10 Error eh 0.1 0.026320 0.05 0.012547 0.025 0.006126 0.0125 0.003027 0.00625 0.001505 0.003125 0.000750 0.0015625 0.000374 0.00078125 0.000187 0.000390625 0.000094 0.0001953125 0.000047 −3 10 −4 10 −5 10 −4 10 −3 10 −2 10 Tamaño de paso −1 10 Figura 6.3: Análisis del Error en el método de Euler. Si queremos tener una idea más precisa de la relación que existe entre h y eh debemos obtener los resultados de aplicar el método de Euler para varios valores de h y compararlos con el valor verdadero. Esto se puede hacer fácilmente con ayuda de, por ejemplo, MATLAB. La Tabla 6.4 muestra los valores de eh para diez valores de h, empezando por h = 0,1 y de forma que cada uno es la mitad del anterior. El error que se calcula se refiere al máximo valor de |x(tk ) −¶xk | para k = 1, . . . , N (recordamos de nuevo que N depende h por la expresión b−a N= y se redondea a seis cifras decimales. En la columna eh se observa a simple h vista que cada valor es aproximadamente la mitad del anterior. En otras palabras, cuando h disminuye a la mitad también el error disminuye a la mitad. De la misma forma se podrı́a comprobar que si h disminuye en un tercio lo mismo sucederı́a con el error, etc.. Esto indica que la relación que existe entre el error, eh , y el tamaño de paso, h, es aproximadamente lineal. La Figura 6.3 refleja este hecho. En ella se han dibujado los puntos de la Tabla 6.4 y se han unido con segmentos para comprobar que, en efecto, están sobre una lı́nea recta. 94 Técnicas cualitativas: Campos de pendientes y lı́neas de fase