Está en la página 1de 30

MATEMTICA SUPERIOR

APLICADA
Utilizacin de Resolvedores de MATLAB
para
Ecuaciones Diferenciales Ordinarias
Universidad Tecnolgica Nacional Facultad Regional Rosario
Dr. Alejandro S. M. Santa Cruz

Solvers de MATLAB (I)


Los solvers para EDOs de MATLAB se han escrito para
resolver problemas de la forma:
dx1
f 1 t , x1 , x2 , ..., xn
x'1 t
dt
dx2
x'2 t
f 2 t , x1 , x2 , ..., xn
dt

dxn
x'n t
f n t , x1 , x2 , ..., xn
dt
o, en forma compacta:
dx
f t , x1 , x2 , ...,xn f t , x
dt
23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

2
UTN - FRRo

Solvers de MATLAB (II)


Se accede a los solvers de MATLAB mediante el llamado de
funciones (functions) del tipo:
Opcional
[T,X] = ode**(@f, timespan, X0, options, P1, P2, P3)
f
tspan
X0
options
T,X
P1, P2, P3,
23/11/2009

Nombre de odefile archivo que describe la ecuacin diferencial a resolver.


Vector que especifica el intervalo de integracin [t0 tfinal].
Para obtener soluciones en tiempos especficos se usa:
tspan = [t0,t1, ..., tfinal].
Vector que describe las condiciones iniciales
Argumento opcional de integracin creado usando la funcin
odeset.
Matriz solucin X, donde cada columna corresponde al tiempo retornado en el vector columna T.
Parmetros adicionales que sern pasados a @f
Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

3
UTN - FRRo

Solvers de MATLAB (III)


Sintaxis:
options = odeset(name1,value1,name2,value2,...): Crea una
estructura en la opciones de integracin donde name1, name2
representan los nombres de las propiedades seguidos de los
valores a especificar. La propiedades no especificadas se
establecen con la matriz vaca [ ].
odeset: Escribiendo esta sentencia en la lnea de comandos de
MATLAB, se muestran en pantalla todas las propiedades y
sus posibles valores. Las propiedades disponibles dependen
del mtodo de resolucin. Algunas propiedades importantes
se detallan a continuacin:

23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

4
UTN - FRRo

Solvers de MATLAB (IV)


Propiedad Valor
RelTol
AbsTol
Refine

MaxStep

InitialStep

23/11/2009

Descripcin

Establece la tolerancia de error relativo que


Escalar positivo (1e-3) se aplica a todos las componentes del vector
solucin.
Escalar positivo (1e-6) Tolerancia de error absoluto.
Incrementa el nmero de puntos de salida
por un factor de n. El valor por defecto es 1
Entero positivo
salvo cuando se utiliza ode45 donde Refine
es 4.
Establece el lmite superior en la magnitud
Escalar positivo
del tamao de paso utilizado.
Establece el tamao de paso inicial. Si es
demasiado grande y afecta el error cometiEscalar positivo
do, el programa usa un tamao de paso ms
pequeo.
Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

5
UTN - FRRo

Solvers de MATLAB (V)


La function f debe tener la siguiente forma:

function [dx_dt] = f(t, x, P1, P2, P3...)


dx_dt = ......
return
CUIDADO!
ESTA ES UNA SINTAXIS LIGERAMENTE DIFERENTE A
AQUELLA UTILIZADA EN LOS SOLVERS QUE
IMPLEMENTAN EL MTODO DE EULER COMO VIMOS
EN LAS PRESENTACIONES PREVIAS.
23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

6
UTN - FRRo

Sentencia

ode45

ode23

ode113

ode15s

ode23s

ode23tb

23/11/2009

Tipo
de
mtodo
Explcito

Explcito

Explcito

Implcito

Implcito

Implcito

Tipo
de
problema

Orden
de
exactitud

Cuando se usa

No stiff

4to. Orden;
En general, ode45 es el mejor mtodo
exactitud me- para aplicar como primer intento para la
dia
resolucin de muchos problemas.

No stiff

2do./3er. Or- Ante bajas tolerancias de error o resoluden; exactitud cin de problemas moderadamente stiff.
baja

No stiff

13er. Orden;
Baja a alta

Stiff

De 1er. a 5to. Si ode45 es lento (sistema stiff).


Orden; exactitud baja a
media

Stiff

Baja exactitud, pero


puede ser ms
estable que
ode15s

Stiff

Baja exactitud, pero


puede ser ms
estable que
ode15s

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

Ante tolerancias estrictas de error y en la


resolucin de un archivo odefile computacionalmente intenso.

7
UTN - FRRo

Algoritmos Utilizados (I)


Varan de acuerdo al orden de exactitud y al tipo de sistema
(stiff o no stiff).
ode45: Se basa en una frmula explcita del mtodo de Runge-Kutta
(4,5), realizado por Dormand-Prince. Es un mtodo de un solo paso,
esto es, para determinar x(ti+1), es necesario conocer solamente la
solucin en el tiempo inmediatamente anterior, x(ti).
ode23: Es una implementacin del mtodo explcito de Runke-Kutta
(2,3) realizado por Bogacki y Shampine. Puede ser ms eficiente que
ode45 para tolerancias de error bajas y en presencia de problemas
stiff moderados.
ode113: Mtodo de orden variable indicado por Adams-BashforthMoulton. Es un mtodo de multipaso; normalmente necesita la
solucin de diversos puntos precedentes para computar la solucin
actual.
23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

8
UTN - FRRo

Algoritmos Utilizados (II)


Los algoritmos anteriores se destinan para resolver sistemas no
stiff. Si ellos aparecen excesivamente lentos, se utilizan otros
mtodos como ser:
ode15s: Es un mtodo de orden variable basado en la frmula de
diferenciacin numrica NDFs. Opcionalmente, usa la frmula de
diferencias hacia atrs, BDFs (backward differentiation formula),
tambin conocida como mtodo de Gear.
ode23s: Se basa en una frmula modificada de Rosenbrock de orden
2. Dado que es un solver de paso simple puede ser ms eficiente que la
ode15s para tolerancias ms altas. Puede resolver algunos tipos de
problemas stiff para los cuales la ode15s no es efectiva.
ode23t: Implementa la regla del trapecio utilizando una interpolacin
libre. Utilizar este solver si el problema es solo moderadamente stiff y
se requiere una solucin sin amortiguamiento numrico.

23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

9
UTN - FRRo

Algoritmos Utilizados (III)


ode23tb: Es una implementacin de la frmula TR-BDF2,
frmula implcita de Runge-Kutta con una primera etapa
que es una regla trapezoidal y una segunda etapa que es
una frmula de diferenciacin hacia atrs de orden 2. Por
construccin, se utiliza la misma matriz de iteracin en la
evaluacin de ambas etapas. Como en la ode23s, este solver
puede ser ms eficiente que la ode15s para tolerancias ms
altas.

23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

10
UTN - FRRo

Consideraciones sobre los


Algoritmos Utilizados (I)
Para un problema stiff las soluciones pueden cambiar
sobre una escala de tiempo que es muy corta comparada
con el intervalo de integracin, pero la solucin de inters
cambia sobre escalas de tiempo mucho ms largas.
Los mtodos no diseados para problemas stiff son
ineficientes sobre intervalos donde la solucin cambia
lentamente debido a que usan pasos temporales
suficientemente pequeos como para resolver el cambio
ms rpido posible.
Las ode15s y ode23s generan numricamente las matrices
Jacobianas.
23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

11
UTN - FRRo

Consideraciones sobre los


Algoritmos Utilizados (II)
En mayor medida utilizaremos las ode45 y ode15s (la 's'
significa que utiliza un mtodo implcito).
Por lo general, los solvers de MATLAB sern mejores de
los que podra programar Ud. mismo.
Son capaces de estimar el error en la solucin en cada
etapa temporal y decidir si el paso es demasiado grande
(error alto) o demasiado pequeo (ineficiente).
Es ms importante que Ud. entienda conceptos tales como
esquemas implcitos, esquemas explcitos y orden de
exactitud del algoritmo en lugar de saber exactamente que
hace internamente la rutina de clculo.
23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

12
UTN - FRRo

Consideraciones sobre los


Algoritmos Utilizados (III)
ode45 (mtodo explcito de Runge-Kutta) es eficiente, pero
se vuelve inestable con sistemas stiff. Este hecho se
manifestar con el solver tratando de adoptar pasos
temporales cada vez ms cortos para compensar.
Consecuentemente, al algoritmo le tomar mucho tiempo
alcanzar la solucin o el paso temporal se reducir al
punto donde la precisin de la mquina provoque la falla
del algoritmo.
ode15s debera utilizarse slo para problemas stiff. Debido
a que es un esquema implcito, tendr que resolver
conjuntos de ecuaciones (posiblemente grande) en cada
paso temporal.
23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

13
UTN - FRRo

Utilizacin de Solvers de MATLAB


Ejemplo 01
Utilizar la ode45 para resolver el siguiente sistema acoplado
de EDOs :
Condiciones iniciales

d x1 1 1 x1
x
x

dt 2 1 2 2

23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

x1 1
x
2 1

14
UTN - FRRo

Ejemplo 01
Archivo de Comandos de MATLAB:
Ejemplo_01_ode45.m: Archivo de comandos que
llama al solver ode45.m.

Funcin:
TestFunction.m: Funcin que implementa en forma
matricial las derivadas del sistema de EDOs.

23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

15
UTN - FRRo

Archivo de Comandos
clear all
clc
% Example 01
% A simple example to solve ODE's
% Uses ode45 to solve
% dx_dt(1) = -1*x(1)-1*x(2)
% dx_dt(2) = 1*x(1) -2*x(2)
% set an error
options=odeset('RelTol',1e-6);
% initial conditions
Xo = [1;1];
%timespan
tspan = [0,5];
%call the solver
[t,X] = ode45(@TestFunction,tspan,Xo,options);
%plot the results
figure
hold on
plot(t,X(:,1));plot(t,X(:,2),'r:')
legend('x1','x2');
ylabel('x');
xlabel('t')
23/11/2009

16

Funcin

function [dx_dt]= TestFunction(t,x)


%A function which returns a rate of change vector
M = [-1 -1; 1 -2];
dx_dt = M*x;
return

23/11/2009

17

Grfica de la Solucin

Solucin del sistema de EDOs generada por ode45.


23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

18
UTN - FRRo

Consideraciones Acerca del Uso


del Solver ode45
No hemos especificado un tamao de paso. ode45 utiliza el mtodo de
Runge-Kutta-Fehlberg de 4to.orden (explcito), que adems nos provee
una estimacin del error de truncamiento en cada paso. EL SOLVER
ES CAPAZ DE ELEGIR EL TAMAO DE PASO QUE REQUIERE
LA TOLERANCIA DEL ERROR QUE HEMOS ESPECIFICADO.
Todos los solvers de Matlab modificarn el tamao del paso para
generar una solucin que sea exacta para una determinada tolerancia
del error. Ud. puede pasar por alto este aspecto fijando un tamao de
paso mximo (que puede forzar al solver a adoptar un paso demasiado
pequeo). Es mejor dejar que el solver elija el tamao del paso y
utilizar la opcin refine. Refine suaviza la solucin interpolando entre
puntos.
Las opciones se establecen creando una estructura de opciones con el
comando odeset.
23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

19
UTN - FRRo

Utilizacin de Solvers de MATLAB


Ejemplo 02
Resolver el siguiente sistema acoplado de EDOs :
Condiciones iniciales

x1 1
x
2 1

1 x1
d x1 1
x
x

dt 2 1 5000 2
Los autovalores de la matriz son:

1 5000
2 1.002
23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

Problema Stiff!!
20
UTN - FRRo

Utilizacin de Solvers de MATLAB


Ejemplo 02
Un problema stiff consiste de diferentes procesos de los
cuales al menos uno de ellos tendr una constante de
tiempo muy pequea.
En primer lugar utilizamos la ode45 para resolver el
sistema acoplado de EDOs.
El cdigo para resolver este sistema se muestra a
continuacin.

23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

21
UTN - FRRo

clear all
clc
%Example 02: Stiff Problem
% A simple example to solve ODE's
% Uses ODE45 to solve
% dx_dt(1) = -1*x(1)-1*x(2)
% dx_dt(2) = 1*x(1) -5000*x(2)
%set an error
options=odeset('RelTol',1e-6,'Stats','on');
%initial conditions
Xo = [1;1];
%timespan
tspan = [0,5];
%call the solver
tic
[t,X] = ode45(@TestFunction,tspan,Xo,options);
toc
%plot the results
figure;hold on
plot(t,X(:,1));plot(t,X(:,2),':')
legend('x1','x2'); ylabel('x');xlabel('t')
23/11/2009

22

Utilizacin de Solvers de MATLAB


Ejemplo 02
Los stats informados por la solucin son:
7557 successful steps
504 failed attempts
48367 function evaluations
Elapsed time is 3.797000 seconds.
El solver ha sido forzado a adoptar un paso
temporal muy pequeo para generar una solucin
estable.

23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

23
UTN - FRRo

Grfica de la Solucin

23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

24
UTN - FRRo

Utilizacin de Solvers de MATLAB


Ejemplo 02
La opcin 'stats' ha sido activada. El solver
mostrar por pantalla informacin acerca de
cmo ha realizado el clculo.
La ejecucin del cdigo demanda un tiempo
relativamente largo.
Los comandos tic y toc que preceden y suceden
respectivamente al llamado de la ode45, estiman y
muestran el tiempo que le demand al solver
alcanzar el resultado final.
23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

25
UTN - FRRo

Utilizacin de Solvers de MATLAB


Ejemplo 02
Si en lugar utilizamos la ode15s, debemos cambiar la
lnea donde se llama al solver de la edo, as:
[t,X] = ode15s(@TestFunction,tspan,Xo,options)
En este caso Los stats informados por la solucin
son:

23/11/2009

139 successful steps


3 failed attempts
288 function evaluations
1 partial derivatives
27 LU decompositions
284 solutions of linear systems
Elapsed time is 0.625000 seconds.
Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

26
UTN - FRRo

Utilizacin de Solvers de MATLAB


Ejemplo 02
El solver puede adoptar pasos temporales mucho
ms grandes (139 comparado con los 7557 para la
ode45), lo cual reduce el tiempo computacional total.
ode15s es implcita, por lo tanto resuelve un sistema
no lineal de ecuaciones en cada paso temporal.

23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

27
UTN - FRRo

Mejoras al Cdigo (I)


En cada etapa de tiempo la ode15s resuelve un
conjunto de ecuaciones no lineales, para las cuales
requerir del Jacobiano de f(t,x).
Dado que la rutina no suministra informacin
sobre el Jacobiano, est forzada a calcular el
Jacobiano completo en forma numrica.

23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

28
UTN - FRRo

Mejoras al Cdigo (II)


Por consiguiente, se nos plantean dos opciones:
1) Suministrar una function que nos devuelva el Jacobiano,
o si el Jacobiano es una constante, entonces podemos
suministrar la matriz.
2) Suministrar un Jacobiano patrn. En este caso, la rutina
es capaz de evitar el costoso llamado a la velocidad de
cambio de la funcin. Un Jacobiano patrn es una matriz
rala de ceros y unos. Los unos slo aparecen donde el
Jacobiano es no nulo.

23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

29
UTN - FRRo

Mejoras al Cdigo (III)


Opcin 1:
Para hacer esto fijamos la opcin 'Jacobian' en la estructura odeset
para la matrix o nombre de la function. Generalmente sta es la
opcin computacionalmente ms eficiente.
MATLAB tambin permite a la rutina devolver un Jacobiano ralo
(sparse). En este ejemplo el Jacobiano es una constante,
utilizndose las siguientes lneas para suministrar al solver:
J=[-1, -1; 1, -5000];

options = odeset('RelTol',1e-6,'Stats','on','Jac',J);
El cdigo ahora corre ms rpido dado que el Jacobiano no
necesita ms ser evaluado (an cuando la ganancia sea muy
pequea cuando el Jacobiano es constante, lo cual es detectado por
el solver, por lo que el Jacobiano no ser actualizado despus de la
primera evaluacin)
23/11/2009

Matem
Matemtica Superior Aplicada
Dr. Alejandro S. M. Santa Cruz

30
UTN - FRRo

También podría gustarte