Está en la página 1de 3

PRACTICAS DE CALCULO NUMERICO III PRACTICA 4: El mtodo de Euler expl e cito y el mtodo trapezoidal.

e
En esta prctica implementaremos el mtodo de Euler y el trapezoidal para ecuaciones a e escalares de primer orden, estudiando su orden de convergencia. Asimismo, implementaremos el mtodo de Euler para sistemas y lo aplicaremos a la resolucin de una importante ecuacin e o o no-lineal de segundo orden: la que describe el movimiento del pndulo simple. e

El mtodo de Euler e

Vamos a crear, en primer lugar, la funcin euler.m que implementa el mtodo de Euler o e expl cito: ba N Esta funcin tendr la siguiente sintaxis: [t,y]=euler(a,b,yini,N), donde las entradas: o a a, b, yini y N tendrn los valores numricos asociados con el problema de valores iniciales a e a resolver (intervalo [a, b]; valor inicial yini; nmero de puntos N ). Las salidas de la funcin u o euler.m sern los vectores tiempo t y el vector y conteniendo la solucin aproximada en los a o sucesivos instantes temporales. Crearemos un chero f.m donde estar implementada la funcin f que corresponda en a o cada caso. Se pide lo siguiente: yn+1 = yn + hf (tn , yn ) , n = 0, ..., N , h = 1. Utilizando el mtodo de Euler, resolver el problema: e y = y , 0 t 3 , y(0) = 1 . El chero f.m deber en este caso implementar la funcin f (t, y) = y. a o Dibujar la solucin para N=16. o Crear un vector de N+1 componentes correspondiente a la solucin exacta y(t) = et o en t = {t0 , t2 , ..., tN } (donde t0 = a y tN = b). Dibujar la solucin exacta en el mismo o grco que la aproximacin de Euler anterior. a o 2. Crear un vector de N+1 componentes que contenga el error absoluto del mtodo en e cada paso y representar en otra gura el error absoluto como funcin de t utilizando el o comando semilogy. 3. Ejecutar el programa para N = 8, 16, 32, 64, 128 y dibujar en un mismo grco los errores a absolutos cometidos en cada caso. Almacenar en un vector los correspondientes errores mximos para cada valor de N ; un comando util para obtener los valores mximos es a a max. Conviene recordar que el modo que tiene MATLAB, por defecto, de presentacin de o nmeros es con 4 decimales. As obviamente, no podr u , amos distinguir cantidades

inferiores a 0.00005. Es conveniente entonces teclear previamente format short e antes de calcular el error para as mostrar los valores en notacin cient o ca. Estimar el orden de convergencia pN del mtodo calculando e max |en | 1 1nN pN = log log 2 max |en |

1n2N

para N = 8, 16, 32, 64 (max1nN |en | representa el mximo de los errores absolutos a obtenidos con N pasos). Es consistente con lo que cabr esperar?. a

El mtodo trapezoidal e

Vamos ahora a comparar el funcionamiento del mtodo de Euler expl e cito con un mtodo e impl cito. El mtodo trapezoidal responde al algoritmo: e h (f (tn , yn ) + f (tn+1 , yn+1 )) 2 Es decir, en el paso n + 1-simo hemos de resolver la (generalmente no lineal) ecuacin e o yn+1 = yn + g(yn+1 ) yn+1 yn h (f (tn , yn ) + f (tn+1 , yn+1 )) = 0 2 (2.1)

para obtener la incgnita yn+1 . o Llegados a este punto, hemos de optar por un mtodo numrico de resolucin de ecuaciones e e o no lineales (biseccin, secante, Newton, punto jo). En la programacin de nuestro algoritmo o o utilizaremos el mtodo de Newton, que producir convergencia rpida siempre que el valor e a a inicial sea prxima a la solucin de la ecuacin (2.1); puesto que se supone que yn e yn+1 o o o sern valores prximos, utilizaremos yn como estimacin inicial para iniciar el Newton (otra a o o opcin puede ser, por ejemplo, utilizar la estimacin que da el mtodo de Euler). En su o o e implementacin ser conveniente que introduzcamos dos parmetros: la tolerancia al error o a a (toln) que jaremos a una valor que nos resulte aceptable (108 , por ej.) y el nmero mximo u a de iteraciones (itmax) que permitimos en el Newton (50, por ej.). Por otra parte, podemos observar que, adems del chero f.m, necesitaremos crear tambin el chero dfy.m, que a e implemente f /y en cada caso. La rutina para este mtodo tendr la misma estructura de entradas y salidas que la e a anterior y la escribiremos en el chero trap.m. Se pide: 4. Resolver el problema del apartado 1 utilizando el mtodo impl e cito. Repetir los apartados 1, 2 y 3 anteriores.

Aplicacin al pndulo simple o e

Para resolver numricamente el problema del pndulo simple, necesitaremos modicar la e e rutina Euler para que sea aplicable a un sistema de EDOs de primer orden. Se pide construir tal rutina (que llamaremos eulersis.m). Aplicaremos entonces la rutina anterior a la resolucin de la EDO que describe el movimiento o de un pndulo simple e d2 + g sin = 0. dt2 Para ello, deniendo = , escribimos el sistema equivalente L = g = L sin y aplicaremos la modicacin del mtodo de Euler (eulersis.m) para resolver el problema o e de condiciones iniciales (0) = m , (0) = 0; este problema es el de un pndulo simple que e en el instante t = 0 se libera, con velocidad cero, desde su ngulo mximo de desplazamiento a a m (es decir, que m es la amplitud de oscilacin). o Podemos comparar esta solucin con la solucin anal o o tica del problema: (t) = 2 arcsin( sn(0 t + , )) siendo 0 = g/L, = sin(m /2) y = K(). K es la integral el ptica completa de primera especie (se puede calcular en MATLAB mediante la funcin ellipke(2 )). Por ultimo, sn(u, ) o es una funcin el o ptica de Jacobi, que se puede evaluar mediante la funcin de MATLAB o ellipj(u,2 ). Deberemos estudiar cmo es la comparacin de la aproximacin dada por el mtodo o o o e de Euler con la solucin anal o tica. Para ello, se sugiere animar el movimiento del pndulo e utilizando la solucin numrica y comparar esta animacin con la de la solucin anal o e o o tica. Para animar el movimiento del pndulo utilizaremos la funcin penanim, que est disponible e o a en la pgina web de la asignatura. a Tambin ser conveniente representar grcamente las dos soluciones. e a a

Una modicacin del mtodo de Euler o e


2 n+1 = n h0 sin n n+1 = n + hn

Escribiendo el mtodo de Euler de forma expl e cita para el pndulo simple tenemos: e

Se propone implementar la siguiente modicacin, conocida como mtodo de Eulero e Cromer: 2 n+1 = n h0 sin n n+1 = n + hn+1 y comparar los resultados obtenidos mediante este mtodo, con los dos mtodos anteriores e e (Euler y solucin anal o tica):

También podría gustarte