Equações Diferenciais
Métodos Adaptativos e Rigidez
Computação – 2º Semestre 2011/2012
Métodos Adaptativos
Por vezes as soluções das EDOs têm
diferentes escalas temporais:
Os métodos com o tamanho do
passo constante teriam que aplicar
sempre um pequeno passo:
Em alguns intervalos de tempo a
solução varia gradualmente;
Noutros as variações são abrutas.
Ineficiente em regiões de variação
gradual.
Os métodos adaptativos podem
variar o tamanho do passo de acordo
com as variações da solução.
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
2
Métodos Adaptativos
A implementação requer uma estimativa do erro local de
truncatura cometido em cada passo:
Com base nesta estimativa o tamanho do passo pode ser
diminuído ou aumentado.
Existem 2 abordagens alternativas para incorporar o
controlo adaptativo do tamanho do passo:
Divisão do passo – usar o método de passo simples duas vezes:
Uma vez com o tamanho do passo completo h
Outra vez com 2 meios passos de tamanho h/2
Estimar o erro local de truncatura cometido no passo n como a
diferença entre os resultados obtidos:
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
3
Método RK Adaptativo de 4ª Ordem
Um passo completo h:
Dois meios passos h/2:
Estimativa do erro local de truncatura:
Correcção de 5ª ordem:
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
4
Métodos Adaptativos
A implementação requer uma estimativa do erro local de
truncatura cometido em cada passo:
Com base nesta estimativa o tamanho do passo pode ser
diminuído ou aumentado.
Existem 2 abordagens alternativas para incorporar o
controlo adaptativo do tamanho do passo:
Métodos RK Embebidos (RK Fehlberg) – calcular no mesmo passo
duas estimativas com métodos de RK de ordens diferentes:
Estimar o erro local de truncatura como a diferença entre os resultados
obtidos
Estes métodos costumam ser mais eficientes que os da divisão
do tamanho do passo.
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
5
Método RK Embebido de 2ª/3ª Ordem
Usa os métodos RK de 2ª e 3ª ordem em simultâneo
para resolver a EDO e controlar o tamanho do passo de
acordo com a estimativa do erro:
Estimativa do erro local de truncatura:
(apenas avalia a função 3 vezes: k1 é o mesmo que o k4 do passo anterior)
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
6
Método RK Embebido de 4ª/5ª Ordem
Usa os métodos RK de 4ª e 5ª ordem em simultâneo:
4ª:
5ª:
(apenas avalia a função 6 vezes: k1,…, k6)
( 5)
( 4)
E
y
y
Estimativa do erro local de truncatura:
i 1
i 1
i 1
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
7
Métodos RK em MATLAB
2º/3º Ordem: Implementado pela função ode23
4º/5º Ordem: Implementado pela função ode45
Após cada passo, é verificado se o erro está dentro da
tolerância desejada:
Se estiver, yi+1é aceite;
Caso contrário, o cálculo é repetido com o tamanho do passo
reduzido até ser obtida uma estimativa de erro aceitável
(tolerância relativa: por omissão103)
5 Junho 2012
(tolerância absoluta: por omissão106)
Equações Diferenciais – Métodos Adaptativos e Rigidez
8
Métodos RK em MATLAB
[t,y] = ode23(odefun,tspan,y0)
[t,y] = ode45(odefun,tspan,y0)
y: solução, em que cada coluna representa uma das variáveis e
as linhas os seus valores nos tempos definidos no vector t
odefun: função que calcula as derivadas do sistema de EDOs
tspan: intervalo de tempo para resolver o sistema de EDOs:
Se tspan=[ti tf], os resultados são mostrados para esses
tempos assim como para os tempos intermédios adicionais utilizados.
Se tspan=[t0 t1 … tn], os resultados são mostrados apenas para
os tempos especificados.
y0: vector de valores iniciais para cada uma das variáveis.
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
9
Métodos RK em MATLAB
dy1
1.2y1 0.6y1 y2
dt
dy2
0.8y2 0.3y1 y2
dt
Exemplo:
com y1(0)=2 e y2(0)=1 para t entre 0 e 20
Solução:
>>
>>
>>
>>
function yp = predprey(t, y)
yp = [1.2*y(1)-0.6*y(1)*y(2); -0.8*y(2)+0.3*y(1)*y(2)];
tspan = [0 20];
y0 = [2, 1];
[t, y] = ode45(@predprey, tspan, y0);
plot(t,y);
plot(y(:,1),y(:,2));
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
10
Métodos RK em MATLAB
Podem ser definidos parâmetros do algoritmo (options) e
passados parâmetros para a função odefun
[t,y]=ode23(odefun,tspan,y0,options,p1,p2,…)
[t,y]=ode45(odefun,tspan,y0,options,p1,p2,…)
p1,p2,…: são os parâmetros da função odefun
options: são os parâmetros do algoritmo
Para definir os parâmetros do algoritmo:
options=odeset('par1',val1,'par2',val2,…)
'RelTol': tolerância relativa.
'AbsTol': tolerância absoluta.
'InitialStep': passo inicial.
'MaxStep': passo máximo (1/10 do intervalo inicial)
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
11
Métodos RK em MATLAB
Exemplo:
com y (0)=0.5 para t entre 0 e 4
Solução:
function yp = dydt(t, y)
yp = 10*exp(-(t-2)*(t-2)/(2*.075^2))-0.6*y;
>> options=odeset('RelTol',1e-4);
>> ode23(@dydt, [0 4], 0.5);
>> ode23(@dydt, [0 4], 0.5, options);
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
12
Métodos Multipasso
Os métodos de passo simples usam a informação de um único
ponto ti para calcular uma estimativa da variável dependente yi+1
num ponto futuro ti+1.
Os métodos multipasso baseiam-se na utilização da informação
calculada em pontos anteriores.
A função MATLAB ode113 implementa um método multipasso
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
13
Método de Heun
Melhoria do método de Euler baseada na média das derivadas calculadas no
início e na estimativa do fim do intervalo:
Primeiro estima o novo valor de y, depois corrige-o baseado na derivada
calculada nesse novo valor.
predictor O(h2):
corrector O(h3):
29 Maio 2012
Equações Diferenciais – Problemas de Valor Inicial
14
Método Multipasso Heun
Melhorar o preditor para O(h3) usando a informação de yi1:
(a) Predictor
0
i 1
y
(b) Corrector
Versão iterativa:
y
m
i 1
f ti , y 2h
5 Junho 2012
m
i
j
i 1
y
f ti , yim f ti 1 , yij11
y
h
2
m
i
Equações Diferenciais – Métodos Adaptativos e Rigidez
15
Rigidez
Um sistema rígido (stiff) contém componentes que variam muito
rapidamente e outras que variam muito lentamente.
Em alguns casos a variação rápida ocorre numa pequena fracção
dy
de tempo. Ex:
t
dt
1000y 3000 2000e
cuja solução com y(0)=0 é:
y 3 0.998e1000t 2.002et
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
16
Rigidez
Estabilidade: amplificação ou decréscimo dos erros cometidos.
Um método numérico é estável se o erro cometido numa fase
do algoritmo não é amplificado para as fases seguintes.
Uma equação diferencial diz-se mal condicionada se os erros
numéricos são amplificados independentemente do método
Um sistema rígido (stiff) requer, em alguns métodos numéricos,
passos muito pequenos para evitar a instabilidade numérica.
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
17
Rigidez
Exemplo:
Com um pequeno erro no valor inicial:
logo:
O erro cresce exponencialmente: problema instável
O erro permanece constante: problema neutralmente estável
O erro decresce exponencialmente: problema estável
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
18
Rigidez
Exemplo:
Método de Euler (explícito):
Critério de estabilidade:
(factor de amplificação)
Região estável:
Se a=1000, para manter a estabilidade é necessário h2/1000
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
19
Rigidez
Exemplo:
Método de Euler Implícito:
Critério de estabilidade:
(incondicionalmente estável!)
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
20
Rigidez
Exemplo:
dy
1000y 3000 2000et
dt
cuja solução com y(0)=0 é:
y 3 0.998e1000t 2.002et
Solução:
a)
b)
Método de Euler (explícito)
Método de Euler Implícito
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
21
Rigidez
Sistemas de ODEs rígidos também podem ser resolvidos por
métodos implícitos.
Exemplo:
Cuja solução para y1(0)=52.29 e y2(0)=83.82 é:
Método de Euler Implícito:
(resolver o sistema em cada passo)
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
22
Funções MATLAB para Sistemas Rígidos
ode15s: Método de Gear (Backward-Difference-Formulae)
ode23s: Método de Rosenbrock
Ode23ts: Método Implícito de Runge-Kutta
5 Junho 2012
Equações Diferenciais – Métodos Adaptativos e Rigidez
23