1 Primera parte 2 Segunda parte

Anuncio
PRÁCTICAS DE CÁLCULO NUMÉRICO III
PRÁCTICA 5: Problemas stiff.
Vamos a dedicar esta práctica a analizar el comportamiento de ecuaciones stiff. Una ecuación
stiff presenta escalas de tiempos claramente diferentes. Como vimos en teorı́a, la escala rápida
es la que determina la estabilidad del método, particularmente cuando éste es explı́cito.
1
Primera parte
Para ilustrar en qué consiste un problema de estas caracterı́sticas, consideremos en primer lugar
la resolución de la siguiente ecuación diferencial
y 0 = −50(y − cos(t)) , 0 ≤ t ≤ 1.25 , y(0) = 0 ,
Se pide:
1. Utilizar el método de Euler explı́cito con pasos h = 1.25/31 y h = 1.25/32 para resolver
la ecuación planteada. Representar gráficamente el resultado en una misma gráfica y la
solución exacta
y(t) =
2500
50
(−e−50t + cos t) +
sin t
2501
2501
¿Qué se observa?. ¿Es coherente con la región de estabililidad absoluta del método de
Euler?
2. Considerar el método de Euler implı́cito:
yn+1 = yn + hf (yn+1 , tn+1 )
para resolver el problema planteado, con un paso h = 1.25/31. Representar gráficamente
el resultado.
2
Segunda parte
Vamos a considerar a continuación la ecuación (el sistema de primer orden equivalente, para ser
exactos) de Van der Pol:
y10 = y2
y20 = µ(1 − y12 )y2 − y1
donde µ es un parámetro. La ecuación de Van der Pol constituye un modelo de oscilaciones
periódicas en un circuito eléctrico.
Se pide:
4. Resolver el sistema para µ = 0.1 utilizando el método de Runge-Kutta (pares encajados)
ode45 de MATLAB con una tolerancia de error de 10−5 , un intervalo de integración
[0, 150] y las condiciones iniciales y1 (0) = 0.1, y2 (0) = 0.1.
Para fijar la tolerancia haremos:
opciones=odeset(’Stats’,’on’,’AbsTol’,1.e-5,’RelTol’,1.e-5);
y luego llamaremos a la rutina ası́:
[t,y]=ode45(’f’,[a b], yini, opciones);
Representar gráficamente y1 (t) e y2 (t). Comprobaremos que en este caso la solución y1 (t)
converge a una solución periódica de amplitud 2, independientemente de cuáles sean las
condiciones iniciales.
5. Consideremos ahora µ = 100 y t ∈ [0, 250]. Consideremos de nuevo y1 (0) = 0.1, y2 (0) = 0.1.
Para estas condiciones, la solución del sistema converge a un oscilador de relajación. Vamos
a resolver el sistema utilizando la rutina MATLAB ode15s, que es una rutina especı́fica
para problemas stiff. Como antes, escribiremos:
opciones=odeset(’Stats’,’on’,’AbsTol’,1.e-5,’RelTol’,1.e-5);
y lo añadiremos a la llamada a la rutina:
[t,y]=ode15s(’f’,[a b], yini, opciones);
Representar gráficamente y2 (t) e y1 (t). Comprobar que la rutina ode15s es mucho más
eficiente que ode45) para resolver este problema. Una forma de corroborar esto es representar los pasos h que ha necesitado cada método para resolver el problema; los comandos
tic y toc también nos pueden dar información al respecto..
Descargar