Métodos numéricos para
uma EDO
resolver
Neste texto serão estudados métodos de passos simples e
passos múltiplos para resolver equação de primeira ordem.
Nos de passos simples necessitamos apenas dos resultados
de yk , do passo anterior, para determinarmos a aproximação
de yk+1. Enquanto que nos de passos múltiplos para
determinarmos a aproximação y k+1 dependemos dos valores
de y k, y k - 1 . . . .
Método de Euler
O método de Euler para resolver EDO com condições
iniciais é o método numérico mais simples. Ele consiste
em aproximar a solução y ( x ), no sentido de uma
linearização, por meio de suas tangentes, Figura 1.
Considere o problema
 dy
 f (x , y )

 dx
y ( x 0 )  y 0

ou seja, são dados um ponto de partida, (x 0 , y 0), e uma
direção a ser tomada, f ( x, y ) .
Desejamos determinar y ( z ).
A interpretação geométrica da
Figura 1 nos permite escrever a
equação:
y
y1
y(x)
y0
F ’(x 0 ) = y’ (x 0) = f (x 0 , y 0)


x
h
x0
z = x1
Interpretação geométrica do Método de Euler
Fazendo x1 – x0 = h, vamos
ter y1 = y0 + h f (x 0 , y 0) ou
F(x 1)  F(x 0) + F ’(x 0) (x1 – x0 ) (Taylor).
Diremos, portanto, que
y1  F(x 1) = F( z )
Em verdade, estamos substituindo a função desconhecida
y ( x ) por, simplesmente uma reta em todo intervalo [x 0 ; z ]
e calculando a imagem de z sobre ela o que pode ser uma
aproximação ruim para y ( z ).
Figura 1
Podemos, porém, melhorar esta
aproximação se subdividirmos o
intervalo [x 0 ; z ] em subintervalos de
amplitude constante, genericamente
chamada h, e como sabemos calcular
a direção da função incógnita y ( x )
em cada ponto, substituiremos tal
y
y(x)
y2
y1
y0
h
x0
x
h
x1
z = x2
Método de Euler considerando dois
subintervalos
Figura 2
função por um segmento de reta, em cada um destes
subintervalos. Estes segmentos terão a direção que ela
(função) tem no início de cada dos subintervalos, Figura 2.
Obtemos então:
y i + 1 = yi + h f (x i , y i ), i = 0, 1, ...
que vem a ser o método de Euler.
Exemplo : Considere o problema de valor inicial y ( 1 ) = 1 da equação
diferencial
y’ = f ( x, y ) = 2x + 3. Dividindo o intervalo [ 1; 2 ] em 1, 2 e 4 partes sucessivamente
e aplicando o método de Euler, determine o valor aproximado de y ( 2 ) para a equação
dada.
Solução:
Temos y’ = f ( x, y ) = 2x + 3, com y (1) = 1 ou seja, x 0 = 1 e y 0 = 1.
Com uma divisão do intervalo, isto é, h = 1, obtemos:
y 1 = y0 + h f (x 0 , y 0 ) = 1 + 1 [ 2 x 1 + 3 ] = 1 + 5 = 6.
Com duas divisões do intervalo, isto é, h = 0,5 , temos
y1 = y0 + h f (x 0 , y 0 ) = 1 + 0,5 [ 2 x 1 + 3 ] = 1 + 2,5 = 3,5
y2 = y1 + h f (x 1 , y 1) = 3,5 + 0,5 [ 2 x 1,5 + 3 ] = 3,5 + 3,0 = 6,5
Finalmente, considerando quatro divisões, isto é, h = 0,25, temos
y1 = y0 + h f (x 0 , y 0 ) = 1 + 0,25 [ 2 x 1 + 3 ] = 1 + 1,25 = 2,25
y2 = y1 + h f (x 1 , y 1 ) = 2,25 + 0,25 [ 2 x 1,25 + 3 ] = 2,25 + 1,375 = 3,625
y3 = y2 + h f (x 2 , y 2 ) = 3,625 + 0,25 [ 2 x 1,5 + 3 ] = 3,625+ 1,5 = 5,125
y4 = y3 + h f (x 3 , y 3 ) = 5,125 + 0,25 [ 2 x 1,75 + 3 ] = 5,125 + 1,625 = 6,75
Método Modificado de Euler
Um problema que ocorre no método “simples” de
Euler é que ele pressupõe que a função que está sendo
aproximada mantém, em todo intervalo, a direção que
ela tem no extremo “de partida” dele. O método
modificado de Euler irá considerar também uma única
direção para a função y ( x ), só que uma direção média
entre aquela do “início” do intervalo e uma estimativa
da direção no “final” dele.
Para tanto, em primeiro lugar, usando o método
“simples” de Euler, fazemos uma previsão de y i + 1,
chamada y i + 1 .
Logo,
Previsão :
y
i+1
= yi + h f (x i , y i ).
A partir desta previsão, podemos obter o valor
aproximado da direção da curva y ( x ) no ponto
( x i + 1 , y i + 1 ) através de f ( x i + 1 , y
) .
Determinamos então a chamada correção,
Correção :
i+1
__
y i + 1 = yi + h/2 [ f (x i , y i ) + f ( x i + 1 , y i + 1 )] .
Esta
expressão
é
conhecida como o método
modificado de Euler. Uma
interpretação
geométrica
deste método pode ser vista
na Figura 3.
y(x)
y
( x1 ; y1 )
Direção média
( x1 ; y1 )
x
h
x0
x1
Interpretação geométrica do
Método modificado de Euler
Figura 3
Exemplo - Encontrar a solução da
equação diferencial ordinária y’ = f ( x, y ) =
2x + 3 com a condição de valor inicial y ( 1)
= 1. Dividindo o intervalo [ 1; 2 ] em
apenas uma parte, ou seja, fazendo h =1 e,
aplicando o método de modificado de Euler,
determine o valor aproximado de y ( 2 )
para a equação dada.
Solução:
Sabendo que a cada aproximação é necessário fazer
um processo de previsão – correção e, considerando h
=1, temos
Previsão
y1
y i + 1 = yi + h f (x i , y i ) ,
no caso
= y0 + h f (x 0 , y 0 )
y = 1 + 1 f (1 ,1 ) = 1 + 1 ( 2 x 1 + 3 ) = 6
1
Correção :
y i + 1 = yi + h/2 [ f (x i , y i ) + f ( x i + 1 , y i + 1 ) ] .
y1 = 1 + 1/2 [ f (1 , 1 ) + f ( 2 , 6 ) ] =
1 + 1/2 [ 5 + 2 x 2+3 ] = 1 + 6 = 7.
Métodos de Runge-Kutta
Os métodos de Runge-Kutta são uma família de
métodos numéricos para solucionar equações
diferenciais ordinárias. São métodos que podem ser
obtidos pela série de Taylor sem a necessidade de
calcular qualquer derivada. Devido sua larga
utilização, será considerado neste texto apenas o
clássico método de Runge-Kutta de 4a ordem. Por ser
sua dedução bastante trabalhosa, limitamo-nos a
enunciar apenas sua expressão. Detalhes e provas
deste método podem ser vistas em Schwarz[25].
A expressão do método de Runge-Kutta de 4a
ordem é dada por:
y i + 1 = yi + 1/6 ( k 1 + 2 k 2 + 2 k 3 + k 4 )
,
onde
k 1 = h f ( xi , yi)
k 2 = h f ( xi + h/2 , y i + k 1 /2 )
h
k 3 = h f ( xi + /2 , y i + k 2 /2 )
k 4 = h f ( xi+ 1 , y i + k 3 )
Exemplo
- Dada a EDO a seguir,
determine o valor aproximado de y ( 1 ),
a
usando o método de Runge-Kutta de 4
ordem, considerando h=1.
dy
d x = f (x , y ) = y ;
y(0) = 1
Solução:
Usando o método de Runge-Kutta de 4a ordem, temos
1
y1 = y0 + /6 ( k 1 + 2 k 2 + 2 k 3 + k 4 ) ,
Logo,
k1= 1f(0 ,1 ) = 1
k 2 = 1 f ( 0 + 1/2 , 1 + 1/2 ) = 1 x 1,5 = 1,5
k 3 = 1 f ( 0 + 1/2 , 1 +
1,5
/2 ) = 1 x 1,75 = 1,75
k 4 = 1 f ( 1 , 1 + 1,75) = 1 x 2,75 = 2,75
1
y1 = 1 + /6 ( 1 + 2 x 1,5 + 2 x 1,75 + 2,75 )
1
= 1 + /6 ( 10,25 ) = 2,708333.
(Solução exata e = 2,7182818 )
Estendendo este problema para valores diferentes de h e
aplicando os métodos de Euler, Modificado de Euler e Runge–Kutta
a
de 4 ordem, obtemos os resultado apresentados na tabela a seguir.
No divisões
1
2
4
8
16
---
Euler
2,
2,25
2,441406
2,565784
2,637927
( 2048 div.) 2,717119
Modificado de Euler
2,5
2,640625
2,694856
2,711840
2,716590
( 128 div.) 2,718225
Runge-Kutta
2,708333
2,717346
2,718209
2,718276
2,718277
---
Métodos de passos Múltiplos
Um método de passos simples determina a aproximação yk+1
em xk+1 = xk + h usando apenas o ponto de aproximação
(xk , yk). Diferentemente deste, um método de passo múltiplo
usa as informações de valores anteriores xk-1, xk-2, . . . , xk-m
que são assumidos ser equidistantes para computar yk+1.
O Método de Adams-Bashforth / Adams-Moulton é um
método preditor - corretor como a fórmula modificada de
Euler.
A fórmula de Adams-Bashforth é dada por
yn+1 = yn + h / 24 (55yn’ - 59yn -1’ + 37yn -2’ - 9yn -3’),
onde yn’ = f(xn , yn)
Note que para calcular y4
yn -1’ = f(xn -1 , yn -1)
precisamos conhecer y0 , y1,
yn -2’ = f(xn -2 , yn -2)
y2 e y3 . O valor de y0 é a
yn-3’ = f(xn -3 , yn -3)
condição inicial e os valores
y1, y2 e y3 são calculados
por um método como a
fórmula de Runge-Kutta.
Para n  3, como preditor, podemos levar o valor de yn+1
no corretor de Adams - Moulton e assim, obtermos
yn+1 = yn + h / 24 (9yn +1’ + 19yn ’ - 5yn -1’ + yn -2’),
com yn+1’ = f (xn+1, yn+1*)
Exemplo: Aplique o método de Adams-Bashforth / AdamsMoulton com h = 0,2 para obter uma aproximação
de y(0,8) para a solução de y’ = x + y -1,
y(0) = 1.
Solução:
Com um passo h = 0,2, y(0,8) será aproximado por y4.
Inicialmente, aplicando o método de Runge-Kutta com
x0 = 0, . y0 = 1 e h = 0,2 para obtermos:
y1 = 1,0214; y2 = 1,0918
e
y3 = 1,2221.
Como f (x,y) = x + y -1, temos
y0’ = f (x0, y0) = f (0, 1) = ) + 1 - 1 = 0
y1’ = f (x1, y1) = 0,2 + 1,0214 - 1 = 0,2214
y2’ = f (x2, y2) = 0,4 + 1,0918 - 1 = 0,4918
y3’ = f (x3, y3) = 0,6 + 1,2221 - 1 = 0,8221
E assim, aplicando a fórmula de Adams-Bashforth, obtemos:
y4 = y3 + 0,2 / 24 (55y3’ - 59y2 ’ + 37y1’ - 9y0’) = 1,4254.
E para y4’ = f (x4, y4*) = 0,8 + 1,4254 -1 = 1,2254
Finalmente, y4 = y3 + 0,2 / 24 (9y4’ +19y3 ’ - 5y2’ + y1’)
= 1,4255.
(Valor exato é 1,4255)
Download

y 1