Você está na página 1de 20

Chedas Sampaio, Abril 2010 14-11-2010

Métodos numéricos de solução de equações


diferenciais

por
Chedas Sampaio
Abril 2010

Métodos numéricos de solução de equações diferenciais

ESTRUTURA DA APRESENTAÇÃO
Introdução
Representação em Espaço de Estado
Diferenças finitas
Método de Euler
Método de Euler Modificado
Método de Runge
Métodos de Runge-Kutta
Runge-Kutta de 3ªOrdem
Runge-Kutta de 4ªOrdem

Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 1
Chedas Sampaio, Abril 2010 14-11-2010

INTRODUÇÃO

Métodos numéricos de solução de equações diferenciais

Introdução
Por equação diferencial entende-se uma equação
que envolve uma ou mais derivadas da função
desconhecida, x(t) .

x k (t ) = f (t , x(t ), x& (t ), &x&(t ),..., x k −1 (t )) ∀t ∈ IR

A equação diferencial é ordinária (Ordinary


Differencial Equation) se todas as derivadas forem
definidas relativamente a uma só variável
independente.

Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 2
Chedas Sampaio, Abril 2010 14-11-2010

Introdução
Uma ODE diz-se de ordem n quando n é a ordem
mais elevada das derivadas presentes na equação.

Qualquer ODE de ordem n pode ser transformada


numa ODE de 1ª ordem. Sabendo resolver uma ODE
de 1ª ordem saber-se-á resolver uma ODE de
qualquer ordem.

Métodos numéricos de solução de equações diferenciais

Representação em Espaço de Estado

Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 3
Chedas Sampaio, Abril 2010 14-11-2010

Representação em Espaço de Estado


Transforma-se uma ODE de ordem n numa ODE de 1ª
ordem através da seguinte mudança de variável:
x k (t ) = f (t , x(t ), x& (t ), &x&(t ),..., x k −1 (t )) ∀t ∈ IR
u1 (t ) = x(t )
u2 (t ) = x& (t )
...
uk (t ) = x k −1 (t )

Métodos numéricos de solução de equações diferenciais

Representação em Espaço de Estado


que nos leva à seguinte ODE vectorial:
u&1 (t )  u2 (t ) 
u& (t )  u (t ) 
 2   3 
...  = ... 
   
&
uk −1 (t ) uk (t ) 
u&k (t )   f (t , x(t ), x& (t ), &x&(t ),..., x k −1 (t ))
   
{u& (t )} = f (t , {u (t )})
Representação Espaço de Estado
Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 4
Chedas Sampaio, Abril 2010 14-11-2010

Representação em Espaço de Estado


ou

{u& (t )} = [A]{u (t )}

Variáveis estado
Matriz estado

Métodos numéricos de solução de equações diferenciais

Representação em Espaço de Estado


Exemplo 1: transformar a ODE escalar de 2ª ordem
F (t ) = m&x&(t )
numa ODE vectorial de 1ª ordem.
F (t )
&x&(t ) =
m
u1 (t ) = x(t )
u 2 (t ) = x& (t )
Substituindo na nossa equação de 2ª ordem
obtem--se o seguinte sistema:
obtem sistema:
u&1 (t ) = u 2 (t ) 0 
 u&1 (t )  0 1  u1 (t )   
 F (t )  =    +  F (t ) 
u& 2 (t ) = m u& 2 (t ) 0 0 u 2 (t ) 
r r  m 
u& (t ) = f (t , u (t ))
Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 5
Chedas Sampaio, Abril 2010 14-11-2010

Representação em Espaço de Estado


Exemplo 2: transformar a ODE escalar de 2ª ordem
m&x&(t ) + cx& (t ) + kx(t ) = F (t )
numa ODE vectorial de 1ª ordem.
c k F (t )
&x&(t ) = − x& (t ) − x(t ) +
m m m
u1 (t ) = x(t )
u 2 (t ) = x& (t )
Substituindo na nossa equação de 2ª ordem obtem
obtem--se o seguinte
sistema::
sistema
u&1 (t ) = u 2 (t ) u&1 (t )   0 1  u (t )  0 
  = k c 1
−  u 2 (t )  F (t ) 
+
 k c F (t ) u& 2 (t ) − m m  m 
u& 2 (t ) = − m u1 (t ) − m u 2 (t ) + m
r r
u& (t ) = f (t , u (t ))
Métodos numéricos de solução de equações diferenciais

Representação em Espaço de Estado


Exemplo 3: transformar a ODE escalar de 2ª ordem
&x&(t ) + k sin ( x(t )) = 0
numa ODE vectorial de 1ª ordem.

&x&(t ) = −k sin ( x(t ))


u1 (t ) = x(t )
u 2 (t ) = x& (t )
Substituindo na nossa equação de 2ª ordem obtem
obtem--se o seguinte
sistema::
sistema
u&1 (t ) = u2 (t )

u& 2 (t ) = − k sin (u1 (t ))
r r
u& (t ) = f (t , u (t ))
Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 6
Chedas Sampaio, Abril 2010 14-11-2010

Representação em Espaço de Estado


Assim, neste capítulo pretendemos resolver
problemas do tipo: determinar a função escalar ou
vectorial, x(t), que satisfaz a equação diferencial
ordinária:

x& (t ) = f (t , x(t )) ∀t ∈ IR

Métodos numéricos de solução de equações diferenciais

Representação em Espaço de Estado


A equação apresentada não determina geralmente
uma solução única sendo necessário complementá-la
com uma condição adicional, ou seja, uma condição
inicial:
x(t0 ) = x0
Normalmente escolhe-se um valor de x(t) no
extremo inferior do intervalo de t.

Por esta razão este tipo de problemas é também


conhecido por problema de valor inicial.
Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 7
Chedas Sampaio, Abril 2010 14-11-2010

Representação em Espaço de Estado


Naturalmente que não esperamos obter x como uma
função explícita de t. Em vez disso, o nosso objectivo
é obter aproximações satisfatórias de x(t) para um
conjunto de valores de t.

A metodologia será sempre a mesma: substituir a


equação diferencial por uma equação algébrica.

Métodos numéricos de solução de equações diferenciais

DIFERENÇAS FINITAS

Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 8
Chedas Sampaio, Abril 2010 14-11-2010

Diferenças finitas
Na Derivação Numérica, a partir dos polinómios
interpoladores, deduzimos várias regras de
derivação para a 1ª e 2ª derivadas (cujo método
também se pode estender a derivadas de ordem
superior). Ora, se substituirmos a derivada da
equação diferencial pela regra, obtemos um método
para calcular a função x(t):
x&(t) ≈ D∆t x(t)
&x&(t ) ≈ D2∆t x(t )
x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Diferenças finitas
Por exemplo, das diferenças finitas de 1ª ordem,
regressiva, progressiva e central, obtemos outros
tantos métodos de solução das equações
diferenciais: x(t) − x(t − ∆t )
x&(t) ≈ ≈ f (t, x(t))
∆t
x(t + ∆t) − x(t )
x&(t) ≈ ≈ f (t, x(t))
∆t
x(t + ∆t) − x(t − ∆t)
x&(t) ≈ ≈ f (t, x(t ))
2∆t
x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 9
Chedas Sampaio, Abril 2010 14-11-2010

Diferenças finitas
ou:
xn − xn−1
≈ f (tn , xn ) xn ≈ xn−1 + ∆tf (tn , xn )
∆t
xn+1 − xn
≈ f (tn , xn ) xn+1 ≈ xn + ∆tf (tn , xn )
∆t
xn+1 − xn−1
≈ f (tn , xn ) xn+1 ≈ xn−1 + 2∆tf (tn , xn )
2∆t
x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Diferenças finitas

Exemplo: calcular x(t) no domínio [0,1] com ∆t=0.1 aplicando


o método derivado da diferença progressiva de 1ª ordem

x& (t ) = t 2 + x xn +1 = xn + ∆t t n + xn( 2
) ∆t = 0.1
x(t 0 ) = −1

x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 10
Chedas Sampaio, Abril 2010 14-11-2010

Diferenças finitas

Exemplo: calcular x(t) no domínio [0,1] com ∆t=0.1 aplicando


o método derivado da diferença central de 1ª ordem

x& (t ) = t 2 + x xn +1 = xn −1 + 2∆t t n + xn ( 2
) ∆t = 0.1
x(t 0 ) = −1

x(t 1) = −1.105

Note-se que neste método foram


necessários 2 valores iniciais (o que
é uma desvantagem) mas o rigor é
maior que no anterior (como se
pode verificar pelo gráfico).
x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

MÉTODO DE EULER

Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 11
Chedas Sampaio, Abril 2010 14-11-2010

Método de Euler
Outra abordagem usada na resolução do nosso
problema é calcular o valor aproximado de x(t) em t1
ou o valor de ∆x1:
x(t) t1 = t0 + ∆t ⇒ x1 = x0 + ∆x1

x1

 ∆x1
x0 
∆t
t0 t1

x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Método de Euler
A recta tangente a x(t) em (x0,y0) é dada por :
(∆x1 )1 1ª aproximação
cujo declive é:
p (t ) = x0 + (t − t0 )
∆t (∆x1 )1
p& (t 0 ) =
x(t)
∆t
mas como:
x& (t0 ) = f (t0 , x0 )
x1
(x1)1  logo:
}(∆x1 )1 1
∆x (∆x1 )1
x0 = f (t0 , x0 )
∆t
∆t
t0 t1 Finalmente: ( x1 )1 = x0 + f (t 0 , x0 )∆t
x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 12
Chedas Sampaio, Abril 2010 14-11-2010

Método de Euler
Generalizando, obtem-se o Método de Euler :
xn +1 = xn + f (t n , xn )∆t

x(t)
Como se pode verificar este
método é igual ao que se obtem
x1 pela diferença finita progressiva
 de 1ªordem…
 ∆x1
x0 
∆t
t0 t1

x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Método de Euler
Exemplo: calcular x(t) da equação diferencial
&x&(t ) + k sin ( x(t )) = 0

logo
&x&(t ) = − k sin ( x(t ))
u1 (t ) = x(t )
u 2 (t ) = x& (t )
Substituindo na nossa equação de 2ª ordem obtem
obtem--se o seguinte sistema:
sistema:

u&1 (t ) = u2 (t )

u& 2 (t ) = − k sin (u1 (t ))
r r
u& (t ) = f (t , u (t ))
Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 13
Chedas Sampaio, Abril 2010 14-11-2010

Método de Euler
Exemplo: calcular x(t) da equação diferencial
&x&(t ) + k sin ( x(t )) = 0

Já estamos em condições de aplicar o método de Euler


xn +1 = xn + f (t n , xn )∆t
Substituindo x por u
r r r
un +1 = u n + f (t n , u n )∆t

 xn +1   xn   x& n 
  =  +  ∆t
&
x &
x
 n +1   n   − k sin ( x )
n 

r r
u& (t ) = f (t , u (t ))
Métodos numéricos de solução de equações diferenciais

MÉTODO DE EULER MODIFICADO

Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 14
Chedas Sampaio, Abril 2010 14-11-2010

Método de Euler Modificado


Tendo (t1 , (x1 )1 ) é possível calcular a derivada nesse
ponto e, em conjunto com a derivada no ponto (t0 , x0 )
calcular a média das derivadas, obtendo-se assim
uma melhor estimativa de ∆x1 :
x(t)
(∆x1 )2 = 1 (x&(t0 ) + x& (t1 ))∆t
2
x1 2ª aproximação
(x1)2 ou:

(∆x1 )2 = 1 ( f (t0 , x0 ) + f (t1 , (x1 )1 ))∆t
x0 } (∆x1)2 ∆x1
 generalizando:
2
∆t 1
t0 t1 xn +1 = xn + [ f (t n , xn ) + f (t n +1 , xn + f (t n , xn )∆t )]∆t
2
x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Método de Euler Modificado


Ou
1
xn +1 = xn + [(∆xn )1 + (∆xn )2 ]
2

x(t) (∆xn )1 = f (t n , xn )∆t

(∆xn )2 = f (tn+1 , xn + (∆xn )1 )∆t


x1
(x1)2

x0 }(∆x ) 1 1 } (∆x1)2 ∆x1

∆t
t0 t1

x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 15
Chedas Sampaio, Abril 2010 14-11-2010

MÉTODO DE RUNGE

Métodos numéricos de solução de equações diferenciais

Método de Runge
Se, depois de calcularmos a segunda aproximação de
cada valor da função, calcularmos a derivada no
ponto intermédio:  t0 + t1 x0 + (x1 )2 
 , 
 2 2 
x(t)
teremos talvez uma estimativa ainda
melhor de ∆x1 :
x1
x + (x )
(x1)3 (x1)2
 (∆x1 )3 = f  t0 + t1 , 0 1 2 ∆t
x0 } } (∆x )  ∆x1
}(∆x1 )1 (∆x1)2 1 3
 2
generalizando:
2 

∆t x + (x )
t0 t1
( xn+1 )3 = xn + f  t n + tn+1 , n n+1 2 ∆t
 2 2 
x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 16
Chedas Sampaio, Abril 2010 14-11-2010

Método de Runge
Ou t +t 2 x + f (t n +1 , xn + (∆xn )1 )∆t 
xn +1 = xn + f  n n+1 , n  ∆t
 2 2 

(∆xn )1 = f (t n , xn )∆t
x(t)

(∆xn )2 = f (tn+1 , xn + (∆xn )1 )∆t


x1
(x1)3 (x1)2

x0 }(∆x ) 1 1 } }
(∆x1)2 (∆x1)3

∆x1

∆t
t0 t1

x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

MÉTODOS DE RUNGE-KUTTA

Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 17
Chedas Sampaio, Abril 2010 14-11-2010

Métodos de Runge-Kutta
Nenhum dos métodos anteriores é eficiente na
solução das equações diferenciais pois se ∆t não for
suficientemente pequeno o erro no cálculo de
valores sucessivos de x(t) cresce acentuadamente.

Os métodos de Runge-Kutta são essencialmente uma


generalização ou combinação dos 3 métodos
anteriores, onde em cada iteração n, três ou mais
estimativas (aproximações) de ∆x são calculadas.

x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Método de Runge-Kutta 3ª Ordem

1
xn +1 = xn + [(∆xn )1 + 3(∆xn )3 ]
4

(∆xn )1 = (xn+1 )1 − xn = f (tn , xn )∆t

 1 1 
(∆xn )2 = f  t n + ∆t , xn + (∆xn )1 ∆t
 3 3 
 2 2 
(∆xn )3 = f  t n + ∆t , xn + (∆xn )2 ∆t
 3 3 

x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 18
Chedas Sampaio, Abril 2010 14-11-2010

Método de Runge-Kutta 4ª Ordem


1
xn +1 = xn + [(∆xn )1 + 2(∆xn )2 + 2(∆xn )3 + (∆xn )4 ]
6

(∆xn )1 = f (tn , xn )∆t


 1 1 
(∆xn )2 = f  t n + ∆t , xn + (∆xn )1 ∆t
 2 2 
 1 1 
(∆xn )3 = f  t n + ∆t , xn + (∆xn )2 ∆t
 2 2 

(∆xn )4 = f (tn + ∆t , xn + (∆xn )3 )∆t

x& (t ) = f (t , x(t ))
Métodos numéricos de solução de equações diferenciais

Referências bibliográficas

Métodos Numéricos, Heitor Pina


Instituto Superior Técnico
1982
Advanced Engineering Mathematics, Ray Wylie
McGraw Hill
1995

Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 19
Chedas Sampaio, Abril 2010 14-11-2010

FIM

Métodos numéricos de solução de equações diferenciais

Métodos numéricos de solução de


equações diferenciais 20