Você está na página 1de 40

Métodos Numéricos

Soluções Numéricas de EDOs


Problema do Valor Inicial

Marcelo Zamith
e-email:zamith.marcelo@gmail.com

Universidade Federal Rural do Rio de Janeiro - DCC


Roteiro

Introdução

Método de Euler

Métodos da Série de Taylor

Métodos de Runge-Kutta
Runge-Kutta de 2a ordem
Runge-Kutta de 3a ordem
Runge-Kutta de 4a ordem
Introdução
▸ Equações Diferenciais Ordinárias
▸ Comuns - comportamento de fenômenos físicos:
● dinâmica de fluídos
● propagação de epidemias
● dinâmica populacional
● economia, biologia, etc...
▸ Algumas EDOs são difíceis de serem resolvidas
▸ Uso de Métodos Numéricos
Introdução
▸ Problema de Valor Inicial (PVI)
● Valor da função e suas derivadas definidas num ponto
▸ Problema de Valor de Contorno (PVC)
● Valor da função e suas derivadas definidas em mais de um ponto
Método de Euler
▸ Solução para o problema do PVI
▸ Conhecemos:
Método de Euler
▸ Solução para o problema do PVI
▸ Conhecemos:
● x0
Método de Euler
▸ Solução para o problema do PVI
▸ Conhecemos:
● x0
● y0 = y(x0 )
Método de Euler
▸ Solução para o problema do PVI
▸ Conhecemos:
● x0
● y0 = y(x0 )
● y ′ = f (x, y)
Método de Euler
▸ Solução para o problema do PVI
▸ Conhecemos:
● x0
● y0 = y(x0 )
● y ′ = f (x, y)
▸ Não conhecemos:
● y(xi )
Método de Euler
▸ Solução para o problema do PVI
▸ Conhecemos:
● x0
● y0 = y(x0 )
● y ′ = f (x, y)
▸ Não conhecemos:
● y(xi )
▸ Podemos calcular a reta r0 que passa pelos pontos (x0 , y0 ), com coeficiente angular
y ′ (x0 )
Método de Euler
▸ Dado que o PVI tem os seguintes dados:
● x0
● y0 = y(x0 )
● y ′ = f (x, y)
Logo,
Método de Euler
▸ Dado que o PVI tem os seguintes dados:
● x0
● y0 = y(x0 )
● y ′ = f (x, y)
Logo,
r0 (x1 ) = y(x0 ) + (x1 − x0 )y ′ (x0 )

Definimos que:
Método de Euler
▸ Dado que o PVI tem os seguintes dados:
● x0
● y0 = y(x0 )
● y ′ = f (x, y)
Logo,
r0 (x1 ) = y(x0 ) + (x1 − x0 )y ′ (x0 )

Definimos que:
h = (x1 − x0 )

y ′ = f (x, y)

Então:
Método de Euler
▸ Dado que o PVI tem os seguintes dados:
● x0
● y0 = y(x0 )
● y ′ = f (x, y)
Logo,
r0 (x1 ) = y(x0 ) + (x1 − x0 )y ′ (x0 )

Definimos que:
h = (x1 − x0 )

y ′ = f (x, y)

Então:
y1 = y0 + hf (x0 , y0 )
Método de Euler
▸ Dado que o PVI tem os seguintes dados:
● x0
● y0 = y(x0 )
● y ′ = f (x, y)
Logo,
r0 (x1 ) = y(x0 ) + (x1 − x0 )y ′ (x0 )

Definimos que:
h = (x1 − x0 )

y ′ = f (x, y)

Então:
y1 = y0 + hf (x0 , y0 )

yi+1 = yi + hf (xi , yi )
Método de Euler

1
x
g(x)=e

0.8

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1
Método de Euler

1
x
g(x)=e

0.8

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1
Método de Euler

1
x
g(x)=e

0.8

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1
Método de Euler

1
x
g(x)=e

0.8

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1
Método de Euler

1
x
g(x)=e

0.8

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1
Método de Euler

1
x
g(x)=e

0.8

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1
Método de Euler
Exemplo:

⎪ dy = f (x, y)
▸ y ′ (x) + 2y(x) = 0 ⇒ y ′ (x) = −2y ⎪
= −2y
⎨ dx

⎪ y(0) = y0 = 1

▸ Dados do problema:
● y0 = 1
● h = 0, 2
● x ∈ [0, 1]
▸ Método de Euler: yi+1 = yi + hf (x, y), i ≥ 0

Iteração i yi y ′ = f (x, y) sol. exata EA


0 1,00000 -2,00000 1,0000000000 0,0000000000
1 0,60000 -1,20000 0,6703200460 0,0703200460
2 0,36000 -0,72000 0,4493289641 0,0893289641
3 0,21600 -0,43200 0,3011942119 0,0851942119
4 0,12960 -0,25920 0,2018965180 0,0722965180
5 0,07776 -0,15552 0,1353352832 0,0575752832
Método de Euler
Exemplo:
▸ Dados do problema - PVI:
● y0 = 1
dy
▸ dx
= −2y = f (x, y)
● h = 0, 2 ▸ Método de Euler: yi+1 = yi + hf (x, y), i ≥ 0
● x ∈ [0, 1]

1
x
g(x)=e

▸ Condição inicial: y0 = 1
0.8

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1
Método de Euler
Exemplo:
▸ Dados do problema - PVI:
● y0 = 1
dy
▸ dx
= −2y = f (x, y)
● h = 0, 2 ▸ Método de Euler: yi+1 = yi + hf (x, y), i ≥ 0
● x ∈ [0, 1]

1
x
g(x)=e

▸ Condição inicial: y0 = 1
0.8

▸ y1 = 1 + 0, 2(−2 × 1) = 0, 6
0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1
Método de Euler
Exemplo:
▸ Dados do problema - PVI:
● y0 = 1
dy
▸ dx
= −2y = f (x, y)
● h = 0, 2 ▸ Método de Euler: yi+1 = yi + hf (x, y), i ≥ 0
● x ∈ [0, 1]

1
x
g(x)=e

▸ Condição inicial: y0 = 1
0.8

▸ y1 = 1 + 0, 2(−2 × 1) = 0, 6
0.6
▸ y2 = 0, 6 + 0, 2(−2 × 0, 6) = 0, 36
0.4

0.2

0
0 0.2 0.4 0.6 0.8 1
Método de Euler
Exemplo:
▸ Dados do problema - PVI:
● y0 = 1
dy
▸ dx
= −2y = f (x, y)
● h = 0, 2 ▸ Método de Euler: yi+1 = yi + hf (x, y), i ≥ 0
● x ∈ [0, 1]

1
x
g(x)=e

▸ Condição inicial: y0 = 1
0.8

▸ y1 = 1 + 0, 2(−2 × 1) = 0, 6
0.6
▸ y2 = 0, 6 + 0, 2(−2 × 0, 6) = 0, 36
▸ y3 = 0, 36 + 0, 2(−2 × 0, 36) = 0, 216 0.4

0.2

0
0 0.2 0.4 0.6 0.8 1
Método de Euler
Exemplo:
▸ Dados do problema - PVI:
● y0 = 1
dy
▸ dx
= −2y = f (x, y)
● h = 0, 2 ▸ Método de Euler: yi+1 = yi + hf (x, y), i ≥ 0
● x ∈ [0, 1]

1
x
g(x)=e

▸ Condição inicial: y0 = 1
0.8

▸ y1 = 1 + 0, 2(−2 × 1) = 0, 6
0.6
▸ y2 = 0, 6 + 0, 2(−2 × 0, 6) = 0, 36
▸ y3 = 0, 36 + 0, 2(−2 × 0, 36) = 0, 216 0.4

▸ y4 = 0, 216 + 0, 2(−2 × 0, 216) = 0, 12960 0.2

0
0 0.2 0.4 0.6 0.8 1
Método de Euler
Exemplo:
▸ Dados do problema - PVI:
● y0 = 1
dy
▸ dx
= −2y = f (x, y)
● h = 0, 2 ▸ Método de Euler: yi+1 = yi + hf (x, y), i ≥ 0
● x ∈ [0, 1]

1
x
g(x)=e

▸ Condição inicial: y0 = 1
0.8

▸ y1 = 1 + 0, 2(−2 × 1) = 0, 6
0.6
▸ y2 = 0, 6 + 0, 2(−2 × 0, 6) = 0, 36
▸ y3 = 0, 36 + 0, 2(−2 × 0, 36) = 0, 216 0.4

▸ y4 = 0, 216 + 0, 2(−2 × 0, 216) = 0, 12960 0.2

▸ y5 = 0, 1296 + 0, 2(−2 × 0, 1296) = 0, 07776


0
0 0.2 0.4 0.6 0.8 1
Método de Euler

É possível melhor o resultado ?


Método de Euler
Exemplo:
▸ Dados do problema:
● y0 = 1
● h = 0, 1
● x ∈ [0, 1]

Iteração i xi yi y ′ = f (x, y) solução EA


0 0,00 1,00000 -2,00000 1,0000000000 0,0000000000
1 0,10 0,80000 -1,60000 0,8187307531 0,0187307531
2 0,20 0,64000 -1,28000 0,6703200460 0,0303200460
3 0,30 0,51200 -1,02400 0,5488116361 0,0368116361
4 0,40 0,40960 -0,81920 0,4493289641 0,0397289641
5 0,50 0,32768 -0,65536 0,3678794412 0,0401994412
6 0,60 0,26214 -0,52429 0,3011942119 0,0390502119
7 0,70 0,20972 -0,41943 0,2465969639 0,0368817639
8 0,80 0,16777 -0,33554 0,2018965180 0,0341243580
9 0,90 0,13422 -0,26844 0,1652988882 0,0310811602
10 1,00 0,10737 -0,21475 0,1353352832 0,0279611008
Métodos da Série de Taylor
▸ Solução para qualquer equação diferencial
▸ Requer o cálculo de derivadas de ordem mais elevada
▸ Assim, dado que temos o valor inicial de y(x0 ) e os valores de x1 , x2 , ⋯, xn , podemos
achar qualquer valor de yi para i ∈ [1, n] conforme a série de Taylor, considerando
h = xi+1 − xi
h2 y ′′ (xi ) h3 y ′′′ (xi )
yi+1 = yi + hy ′ (xi ) + + +⋯
2! 3!

▸ Método de Euler:
yi+1 = yi + hy ′ (xi ) + 
Métodos da Série de Taylor
▸ Exemplo de PVI:
● x0 = 2
● y(x0 ) = 2
● y ′ = f (x, y) = x−y
x
● y ′′ = xy2
● h = 0, 1
● Qual o valor y(2, 1) ?
2−2 0, 12 yi
y1 = 2 + 0, 1( )+ ( ) = 2, 0025
2 2! x2i
x1 = x0 + h = 2 + 0, 1 = 2, 1

Logo, temos que x1 = 2, 1 e y1 = 2, 0025


Método de Runge-Kutta de 2a ordem
▸ Métodos de Runge-Kutta de 2a ordem conhecido também como Método de Euler
melhorado
▸ Buscar melhorar a precisão sem o problema do Método da Série de Taylor
▸ Trabalha com a ideia de médias, utilizando para isso valores intermediários de xi+1
e yi+1
yi+1 = yi + K1 + K2

onde:
▸ K1 = h2 f (xi , yi )
▸ K2 = h2 f (xi + h, yi + hf (xi , yi ))
Método de Runge-Kutta de 2a ordem
Exemplo:
▸ Dados do problema:
● y ′ (x) = f (x, y) = −2y
● y0 = 1
● h = 0, 2
● x ∈ [0, 1]

Iteração i xi yi K1 K2 sol. exata EA


0 0,0 1,00000 -0,20000 -0,12000 1,0000000000 0,0000000000
1 0,2 0,68000 -0,13600 -0,08160 0,6703200460 0,0096799540
2 0,4 0,46240 -0,09248 -0,05549 0,4493289641 0,0130710359
3 0,6 0,31443 -0,06289 -0,03773 0,3011942119 0,0132377881
4 0,8 0,21381 -0,04276 -0,02566 0,2018965180 0,0119172420
5 1,0 0,14539 -0,02908 -0,01745 0,1353352832 0,0100580736
Método de Runge-Kutta de 3a ordem

2 1 4
yi+1 = yi + K1 + K2 + K3
9 3 9
onde:
▸ K1 = hf (xi , yi )
▸ K2 = hf (xi + h2 , yi + K1
2
)
▸ K3 = hf (xi + 3h 3K2
4
, yi + 4 )
Método de Runge-Kutta de 3a ordem
Exemplo:
▸ Dados do problema:
● y ′ (x) = f (x, y) = −2y
● y0 = 1
● h = 0, 2
● x ∈ [0, 1]

Iteração i xi yi K1 K2 K3 sol. exata EA


0 0 1,00000 -0,40000 -0,32000 -0,30400 1,0000000000 0,0000000000
1 0,2 0,66933 -0,26773 -0,21419 -0,20348 0,6703200460 0,0009867127
2 0,4 0,44801 -0,17920 -0,14336 -0,13619 0,4493289641 0,0013218530
3 0,6 0,29987 -0,11995 -0,09596 -0,09116 0,3011942119 0,0013281189
4 0,8 0,20071 -0,08028 -0,06423 -0,06102 0,2018965180 0,0011861464
5 1 0,13434 -0,05374 -0,04299 -0,04084 0,1353352832 0,0009931412
Método de Runge-Kutta de 4a ordem

h
yi+1 = yi + (K1 + 2K2 + 2K3 + K4 )
6
onde:
▸ K1 = f (xi , yi )
▸ K2 = f (xi + h2 , yi + hK1
2
)
▸ K3 = f (xi + h2 , yi + hK2
2
)
▸ K4 = f (xi + h, yi + hK3 )
Método de Runge-Kutta de 4a ordem
Exemplo:
▸ Dados do problema:
● y ′ (x) = f (x, y) = −2y
● y0 = 1
● h = 0, 2
● x ∈ [0, 1]

Iteração i xi yi K1 K2 K3 K4 sol. exata EA


0 0,0 1,00000 -2,00000 -1,60000 -1,68000 -1,32800 1,0000000000 0,0000000000
1 0,2 0,67040 -1,34080 -1,07264 -1,12627 -0,89029 0,6703200460 0,0000799540
2 0,4 0,44944 -0,89887 -0,71910 -0,75505 -0,59685 0,4493289641 0,0001071959
3 0,6 0,30130 -0,60260 -0,48208 -0,50619 -0,40013 0,3011942119 0,0001077898
4 0,8 0,20199 -0,40399 -0,32319 -0,33935 -0,26825 0,2018965180 0,0000963439
5 1,0 0,13542 -0,27083 -0,21667 -0,22750 -0,17983 0,1353352832 0,0000807314
Comparativo dos erros absolutos
Exemplo:
▸ Dados do problema:
● y ′ (x) = f (x, y) = −2y
● y0 = 1
● h = 0, 2
● x ∈ [0, 1]

M. Euler RK 2a RK 3a RK 4a
0,0575752832 0,0100580736 0,0009931412 0,0000807314

Você também pode gostar