Capítulo VII: Soluções Numéricas de Equações Diferenciais

Propaganda
Capítulo VII: Soluções Numéricas de Equações Diferenciais Ordinárias
0. Introdução
Muitos fenómenos nas áreas das ciências, engenharias, economia, etc., são
modelados por equações diferenciais. Suponha-se que se quer determinar a posição
de um corpo em movimento, e que apenas se conhece a sua velocidade ou a sua
aceleração. No fundo, quer determinar-se uma função desconhecida, utilizando certos
dados, relacionados por uma equação que contém, pelo menos, uma das derivadas
dessa função. Estas equações chamam-se equações às derivadas ou equações
diferenciais.
Tal como acontece com o cálculo do integral de uma função, os métodos analíticos
para a resolução de equações diferenciais aplicam-se apenas a certos tipos de
problemas. Por isso recorre-se com frequência ao uso de métodos numéricos para
obter a solução de uma equação diferencial sujeita a uma dada condição.
1. Definição e conceitos básicos de equações diferenciais
Uma equação diferencial é uma equação que envolve uma função desconhecida
(incógnita) e suas derivadas.
Definição: Seja y uma função de x e n um número inteiro positivo, então uma
relação de igualdade que envolva x, y, y’, y’’,...,y(n) é chamada uma equação
diferencial ordinária (EDO).
Exemplo:
2
2
⎛ dy ⎞
yd y
e
+ 2⎜ ⎟ = 1
⎝ dx ⎠
dx 2
Página 1 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
Se a função desconhecida depende de mais do que uma variável, as derivadas que
aparecem na equação diferencial são derivadas parciais, e a equação chama-se
equação diferencial parcial (EDP).
Exemplo:
2
⎛d2y⎞
⎟ =0
− 4⎜
2
2 ⎟
⎜
dt
⎝ dx ⎠
d2y
A ordem de uma equação diferencial é a ordem da derivada mais elevada da função
incógnita presente na equação.
Exemplos:
Equação Diferencial
Ordinária
Ordem
y’=x2+y2
1
3
⎛ d2y ⎞
⎛ dy ⎞
⎛ dy ⎞
⎜⎜ 2 ⎟⎟ + 3y⎜ ⎟ + y 3 ⎜ ⎟ = 5x
⎝ dx ⎠
⎝ dx ⎠
⎝ dx ⎠
2
(y’’’)4-x2(y’’)5+4xy=xex
3
x3 y’=( y(4) )3 –1
4
M
M
7
São do tipo
y’=f(x,y)
5
y’’=f(x,y, y’)
y(3)=f(x,y,y’,y’’)
y(4)=f(x,y,y’,y’’,y(3))
M
Uma solução de uma equação diferencial na função incógnita y e na variável
independente x é uma função y(x) que verifica a equação para todo o x.
Exemplo:
y( x ) = c1sen( 2 x ) + c2 cos( 2 x ) (com c1 ,c2 constantes arbitrárias) é
solução da equação diferencial y' ' + 4 y = 0 .
Sendo,
y( x ) = c1sen( 2 x ) + c2 cos( 2 x )
Página 2 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
⇒ y' ( x ) = 2c1 cos( 2 x ) − 2c2 sen( 2 x )
⇒ y' ' ( x ) = −4c1sen( 2 x ) − 4c2 cos( 2 x )
substituindo na equação diferencial, vem que
(− 4c1sen( 2 x ) − 4c2 cos( 2 x )) + 4(c1sen( 2 x ) + c2 cos( 2 x )) = 0 , isto é,
verificam a equação.
Uma solução particular (ou integral particular) de uma equação diferencial é
qualquer solução da mesma. A solução geral (ou integral geral) de uma
equação
diferencial é o conjunto de todas as soluções.
Exemplo:
y( x ) = c1sen( 2 x ) + c2 cos( 2 x )
diferencial
com c1 ,c2 ∈ IR ,
y' ' + 4 y = 0 ; enquanto
é a solução geral da equação
y( x ) = sen( 2 x ) + cos( 2 x ) é uma solução
particular com c1 = c2 = 1.
Um problema de valor inicial (PVI) consiste numa equação diferencial, juntamente
com condições relativas à função incógnita e suas derivadas dadas para o mesmo
valor da variável independente.
Exemplo:
⎧ y '' + 4 y = 0
⎪
⎨ y ( 0) = 0
⎪ '
⎩ y ( 0) = 2
PVI de 2ª ordem.
Página 3 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
Uma solução de um PVI é uma função y=f(x) que satisfaz a equação diferencial e
todas as condições relativas à função incógnita.
Vamos, a seguir, ver métodos numéricos para a resolução de EDO’s.
2. Métodos Numéricos para a resolução de Equações Diferenciais Ordinárias
Definição do problema
Neste capítulo consideraremos o problema de determinar a função y=y(x) que
satisfaz simultaneamente a equação diferencial (1ª ordem) e a condição inicial:
⎧ y'(x) = f(x, y(x)),
⎪
⎨
⎪ y(x ) = y ,
0
⎩ 0
x ∈ [a, b]
x 0 ∈ [a, b]
(7.1)
Este é chamado um problema de valor inicial (PVI) de 1ª ordem.
Existência e unicidade de solução
Teorema:
Seja f definida e contínua em D={(x,y): a ≤ x ≤ b, y ∈ IR } com a e b
finitos. Seja
df
contínua e limitada em D. Então ∀x 0 ∈ [a, b] e y 0 ∈ IR , o
dy
problema (7.1) tem solução única continuamente diferenciável para x ∈ [a, b] . ■
Estudaremos métodos, chamados métodos de variável discreta, para resolver
problemas de valor inicial da forma (7.1).
Página 4 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
Assim, estes métodos determinam aproximações para a solução y(x) num conjunto
discreto de pontos x0, x1, x2, ..., da variável independente. Isto é, a solução
aproximada obtida é apresentada por uma tabela de valores
( xn, yn ),
n=1,2, ...,
onde
yn ≅ y(xn).
Para obter a solução y(x) em pontos x ∈ [a,b] diferentes de xn (n = 0, 1, ...) pode usarse interpolação.
Vamos considerar apenas o caso em que o passo h é constante, tendo-se
xn+1 = xn + h = x0 + (n+1)h,
n = 0, 1,....
Apresentaremos apenas métodos da classe de métodos de passo único, isto é, o valor
de yn+1 pode ser calculado se apenas yn é conhecido.
Suponhamos que o PVI (7.1) satisfaz as condições de existência e unicidade de
solução, vai tentar-se encontrar uma solução numérica para o problema.
Considerem-se m subintervalos de [a, b], (m≥1), e seja xj = x0 + jh onde h =
b−a
,
m
j=0,...,m e xj∈[a,b]. Ao conjunto Ih={x0,x1,...,xm} obtido da forma anterior chama-se
rede ou malha de [a,b].
O objectivo dos métodos numéricos é o cálculo das aproximações y1, y2, ..., ym para
as soluções exactas y(x1), y(x2),..., y(xm).
Notação: y(xj), j=0,...,m ⎯ solução exacta do PVI nos pontos xj∈Ih
y(xj) ≅ yj ⎯ significa que yj é aproximação para y(xj), xj∈Ih.
Página 5 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
2.1. Método de série de Taylor
2.1.1. Método de Taylor de 1ª ordem ( método de Euler )
O método de Euler é um método de passo único e o mais simples de todos os
métodos numéricos para problemas de valor inicial.
Consideremos então o problema definido por (7.1).
Se y é continuamente diferenciável até à segunda ordem em [a,b] e xn, xn+1∈[a,b],
então, pela fórmula de Taylor,
h 2 ''
y(x n +1 ) = y(x n ) + h.y (x n ) +
y (ξ n ), onde x n < ξ n < x n +1 .
2
'
(7.2)
Donde, da equação diferencial de (7.1) e de (7.2) concluimos que
h 2 ''
y(x n +1 ) = y(x n ) + h.f(x n , y(x n )) +
y (ξ n ).
2
Se h é “pequeno” o termo
h 2 ''
y (ξ n ) será também “pequeno” e podemos escrever
2
y(x n +1 ) ≅ y(x n ) + h.f(x n , y(x n )).
O método de Euler consiste, então, em calcular recursivamente a sucessão {yj}
através das fórmulas:
⎧y 0 = y(x 0 )
⎪
⎨
⎪y
⎩ j+1 = y j + h.f(x j , y j ), j = 0,..., m − 1
(7.3) .
Página 6 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
Exemplo
Achar aproximações para a solução do PVI
⎧ y' = x − y + 2
⎨
⎩ y( 0 ) = 2
na malha [0,1] com h=0.2, usando o método de Euler.
Resolução:
Tem-se que x0=0 e y0=2.
Além disso, m =
b − a 1− 0
=
= 5 ⇒ m -1 = 4 .
h
0.2
A fórmula de recorrência será:
⎧y 0 = 2
⎪
⎨
⎪y
⎩ j+1 = y j + h.f(x j , y j ), j = 0,1,2,3,4.
⎧y 0 = 2
⎪
⇔ ⎨
⎪y
⎩ j+1 = y j + 0.2 * x j - y j + 2 , j = 0,1,2,3,4.
(
)
1ª iteração
y1 = y0 + 0.2*(x0 - y0 + 2) ⇔ y1 = 2 + 0.2*(0 – 2 + 2) ⇔ y1 = 2
x1 = 0 + 0.2 = 0.2
2ª iteração
y2 = y1 + 0.2*(x1 - y1 + 2) ⇔ y2 = 2 + 0.2*(0.2 – 2 + 2) ⇔ y2 = 2.04
x2 = 0.2 + 0.2 = 0.4
Página 7 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
3ª iteração
y3 = y2 + 0.2*(x2 - y2 + 2) ⇔ y3 = 2.04 + 0.2*(0.4 - 2.04 + 2) ⇔ y3 = 2.112
x3=0.4+0.2=0.6
4ª iteração
y4 = y3 + 0.2*(x3 - y3 + 2) ⇔ y4 = 2.112+0.2(0.6-2.112+2) ⇔ y4 = 2.2096
x4 = 0.6 + 0.2 = 0.8
5ª iteração
y5 = y4 + 0.2*(x4 - y4 +2) ⇔ y5 = 2.2096+0.2*(0.8-2.2096+2) ⇔ y5=2.3277
x5 = 0.8 + 0.2 = 1
As soluções aproximadas para o PVI na malha [0, 1] com passo h=0.2 são
{ 2 , 2.04 , 2.112 , 2.2096 , 2.3277 }.
Erros de discretização
Supondo que se conhece exactamente o valor de y(xn), ao aproximar
y(x n +1 ) ≅ y(x n ) + h.f(x n , y(x n ))
introduz-se um erro, chamado erro de truncatura (ou discretização) local.
Este erro é igual a
h 2 ''
y (ξ n ),
2
ξ ∈ ]x n , x n +1[ , e é o erro de truncatura
introduzido no passo de xn para xn+1.
Contudo, ao calcular uma aproximação para y(xn+1) pelo método de Euler (7.3), o
valor yn usado é uma aproximação para y(xn). O valor yn foi calculado usando uma
Página 8 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
aproximação
yn-1 para
aproximação
yn+1 para
y(xn-1)
e assim sucessivamente. Assim, no cálculo da
y(xn+1)
tem-se não só o erro de discretização local
introduzido nesse passo mas também o erro resultante da acumulação de erros de
discretização local introduzido nos passos anteriores.
A en = y(x n ) − y n chama-se erro de truncatura (ou discretização) global.
Convergência do método de Euler
A aproximação da solução num ponto xn converge para a solução exacta nesse
ponto, y(xn), quando o passo h tende para zero, isto é,
lim
h→0
x −x0
h= n
n
y n = y (x n ) .
Comentários
™
O método de Euler não é muito usado uma vez que os resultados obtidos têm,
em geral, pouca precisão, a não ser que se seleccione uma valor para o passo
demasiado pequeno o que torna o processo demasiado lento.
™
O método foi deduzido truncando o desenvolvimento dado pela fórmula
de
Taylor de segunda ordem antes do termo em h2.
2.1.2. Método de Taylor de 2ª ordem
Consideremos o problema de valor inicial (7.1) e sejam x n , x n +1 ∈ [a, b].
Então, se y tem derivadas contínuas até à terceira ordem em [a,b], pela fórmula de
Taylor,
Página 9 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
h 3 '''
h 2 ''
y (ξ n ),
y(x n + 1 ) = y(x n ) + h.y (x n ) +
y (x n ) +
2
6
'
x n < ξ n < x n +1 .
Tem-se então, se h = xn+1 - xn é pequeno,
y(x n +1 ) ≅ y(x n ) + h.y ' (x n ) +
h 2 ''
y (x n ).
2
Define-se o método de Taylor de 2ª ordem pela fórmula
⎧ y 0 = y(x 0 )
⎪
⎨
h2 '
f (x j , y j ),
⎪ y j+1 = y j + h.f(x j , y j ) +
⎩
2
onde:
(
)
f ' x j, y j =
(
)
(
)(
j = 0,1,..., m - 1.
)
∂f
∂f
x j , y j .f x j , y j .
x j, y j +
∂x
∂y
Exemplo
Achar aproximações para a solução do PVI
⎧ y' = x − y + 2
⎨
⎩ y( 0 ) = 2
na malha [0,1] com h=0.2, usando o método de Taylor de 2ª ordem.
Página 10 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
Resolução
Tem-se que x0=0 e y0=2.
Além disso, m =
b − a 1− 0
=
= 5 ⇒ m -1 = 4 .
h
0.2
método de Taylor de 2ª ordem
A fórmula de recorrência será:
⎧y 0 = 2
⎪
⎨
⎪y
⎩ j+1 = y j + 0.2 * x j - y j + 2 + 0.02 * - x j + y j − 1) , j = 0,1,2,3,4.
(
)
(
)
⎧y 0 = 2
⎪
⇔ ⎨
⎪y
⎩ j+1 = 0.82y j + 0.18x j + 0.38, j = 0,1,2,3,4.
1ª iteração
y1 = 0.82*y0 + 0.18*x0 + 0.38 ⇔ y1 = 0.82*2 + 0.18*0 + 0.38 ⇔ y1 = 2.02
x1 = 0 + 0.2 = 0.2
2ª iteração
y2 = 0.82*y1 + 0.18*x1 + 0.38 ⇔ y2 = 0.82*2.02 + 0.18*0.2 + 0.38 = 2.0724
x2 = 0.2 + 0.2 = 0.4
Página 11 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
3ª iteração
y3 = 0.82*y2 + 0.18*x2 + 0.38 ⇔ y3 = 0.82*2.0724 + 0.18*0.4 + 0.38 = 2.151368
x3= 0.4 + 0.2 = 0.6
4ª iteração
y4 = 0.82*y3 + 0.18*x3 + 0.38 ⇔ y4 = 0.82*2.151368 + 0.18*0.6 + 0.38
⇔ y4 = 2.25212176
x4 = 0.6 + 0.2 = 0.8
5ª iteração
y5 = 0.82*y4 + 0.18*x4 + 0.38 ⇔ y5 = 0.82*2.25212176 + 0.18*0.8 + 0.38
⇔ y5 = 2.370739843
x5 = 0.8 + 0.2 = 1
As soluções aproximadas para o PVI na malha [0, 1] com passo h=0.2 são
{ 2.02 ,
2.0724 , 2.151368 , 2.25212176 , 2.370739843 }.
De modo similar se define o método de Taylor de 4ª ordem:
⎧y 0 = y(x 0 )
⎪
h2 '
h 3 ''
h 4 '''
⎪⎪y
f (x j , y j ) +
f (x j , y j ) +
f (x j , y j ),
= y j + h.f(x j , y j ) +
⎨ j+1
2
6
24
⎪
⎪
⎪⎩
j = 0,1,..., m - 1.
Página 12 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
2.2. Métodos de Runge-Kutta
Os métodos de Runge-kutta foram desenvolvidos com o objectivo de produzirem
resultados com a mesma precisão que os obtidos pelo método de Taylor, mas
evitando o cálculo das derivadas.
Limitar-nos-emos a apresentar as fórmulas.
2.2.1.
Métodos de Runge-Kutta de 2ª ordem
As fórmulas têm a forma geral
⎧ y 0 = y (x 0 )
⎪
⎨
⎪y
⎩ j+1 = y j + h a .f x j , y j + b.f x j + α .h, y j + β .h.f x j , y j , j = 0,1,..., m - 1 .
[ (
)
(
(
))]
sendo as constantes a , b ,α e β escolhidas de modo a que o erro de truncatura local
do método seja proporcional a h3 tal como no método de Taylor de
2ª ordem.
⎧a = 1 - b ,
⎪
Tal condição implica ⎨
1 ,
α
β
=
=
⎪⎩
2b
sendo b arbitrário.
Substituindo na fórmula anterior a , α e β , obtemos
1
1
⎡
⎛
⎞⎤
y j+1 = y j + h ⎢(1 − b )f x j , y j + b.f ⎜ x j + .h, y j + .h.f x j , y j ⎟⎥ ,
2b
2b
⎝
⎠⎦
⎣
j = 0,1,..., m - 1 .
(
)
(
)
Página 13 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
Apresentaremos aqui os dois métodos mais conhecidos de Runge-Kutta de
2ª ordem.
2.2.1.1. Método de Euler melhorado ( ou método de Heun )
1
Corresponde à escolha b = ,
2
⎧ y 0 = y (x 0 )
⎪
⎪ y j+1 = y j + h (k1 + k 2 )
2
⎪
⎪
⎨
⎪k = f x , y
j j
⎪ 1
⎪k 2 = f x j + h , y j + h.k1
⎪⎩
(
(
)
,
j = 0,1, ..., m − 1.
)
Exemplo:
⎧ y' = x − y + 2
Achar aproximações para o PVI ⎨
na malha [0,1] com h=0.2, usando
⎩ y( 0 ) = 2
o método de Euler melhorado.
Resolução:
Tem-se que x0=0 e y0=2.
Além disso, m =
b − a 1− 0
=
= 5 ⇒ m -1 = 4 .
h
0.2
Página 14 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
A fórmula de recorrência será:
⎧y 0 = 2
⎪
⎪ y j+1 = y j + 0.1 * (k1 + k 2 ) ,
⎪
⎨
⎪k = f x , y = x - y + 2
j j
j
j
⎪ 1
⎪k 2 = f x j + 0.2 , y j + 0.2 * k1 = 0.8 * x j − 0.8 * y j + 1.8
⎩
(
(
)
j = 0,1,2,3,4.
)
1º iteração:
y1 = y0 + 0.1*(k1+ k2)
k1 = x0 - y0 + 2 ⇔ k1 = 0 – 2 + 2 ⇔ k1 = 0
k2 = 0.8x0 – 0.8y0 + 1.8 ⇔ k2 =0.8*0 – 0.8*2 + 1.8 ⇔ k2 = 0.2
donde y1 = 2 + 0.1*(0 + 0.2) = 2.02
e,
x1 = 0 + 0.2 = 0.2
2º iteração:
y2 = y1 + 0.1*(k1+ k2)
k1 = x1 - y1 + 2 ⇔ k1 = 0.2 – 2.02 + 2 ⇔ k1 = 0.18
k2 = 0.8x1 – 0.8y1 + 1.8 ⇔ k2 =0.8*0.2 – 0.8*2.02 + 1.8 ⇔ k2 = 0.344
donde y2 = 2.02 + 0.1*(0.18 + 0.344) = 2.0724
e,
x2 = 0.2 + 0.2 = 0.4
Página 15 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
3º iteração:
y3 = y2 + 0.1*(k1+ k2)
k1 = x2 – y2 + 2 ⇔ k1 = 0.4 – 2.0724 + 2 ⇔ k1 = 0.3276
k2 = 0.8x2 – 0.8y2 + 1.8 ⇔ k2 =0.8*0.4 – 0.8*2.0724 + 1.8 = 0.46208
donde y3 = 2.0724 + 0.1*(0.3276 + 0.46208) = 2.151368
e,
x3 = 0.4 + 0.2 = 0.6
4º iteração:
y4 = y3 + 0.1*(k1+ k2)
k1 = x3 – y3 + 2 ⇔ k1 = 0.6 – 2.151368 + 2 ⇔ k1 = 0.448632
k2 = 0.8x3 –0.8y3 +1.8 ⇔ k2 = 0.8*0.6 – 0.8*2.151368 + 1.8 = 0.5589056
donde y4 = 2.151368 + 0.1*(0.448632 + 0.5589056) = 2.25212176
e,
x4 = 0.6 + 0.2 = 0.8
5º iteração:
y5 = y4 + 0.1*(k1+ k2)
k1 = x4 – y4 + 2 ⇔ k1 = 0.8 – 2.25212176 + 2 ⇔ k1 = 0.54787824
k2 =0.8x4 –0.8y4 +1.8 ⇔ k2 = 0.8*(0.8 -2.25212176)+1.8 = 0.638302592
donde y5 = 2.25212176+ 0.1*(0.54787824 + 0.638302592)
⇔ y5 = 2.370739843
e,
x5 = 0.8 + 0.2 = 1
Página 16 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
As soluções aproximadas para o PVI na malha [0, 1] com passo h=0.2 são:
{ 2.02 , 2.0724 , 2.151368 , 2.25212176 , 2.370739843 }.
2.2.1.2. Método de Euler modificado
Corresponde à escolha b = 1,
⎧y 0 = y (x 0 )
⎪
⎪
⎪y j+1 = y j + h.k 2 ,
⎪
⎨
⎪k = f x , y
j j
⎪ 1
⎪
h
h ⎞
⎛
⎪k 2 = f ⎜ x j + , y j + .k1 ⎟
2
2 ⎠
⎝
⎩
(
)
j = 0,1, ..., m - 1.
Exemplo:
Achar aproximações para o PVI
⎧ y' = x − y + 2
, na malha [0,1] com h=0.2, usando
⎨
y
(
0
)
=
2
⎩
o método de Euler modificado.
Resolucão:
Tem-se que x0=0 e y0=2.
Além disso, m =
b − a 1− 0
=
= 5 ⇒ m -1 = 4 .
h
0.2
Página 17 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
A fórmula de recorrência será:
⎧y0 = 2
⎪
⎪ y j+1 = y j + 0.2 * k 2 ,
⎪
⎨
⎪k = x - y + 2
j
j
⎪ 1
⎪k 2 = f x j + 0.1, y j + 0.1* k1 = 0.9 * x j − 0.9 * y j + 1.9
⎩
(
j = 0,1,2,3,4.
)
1º iteração:
y1 = y0 + 0.2*k2
k2 = 0.9*(x0 - y0) + 1.9 ⇔ k2 =0.9*(0 – 2) + 1.9 ⇔ k2 = 0.1
donde y1 = 2 + 0.2*0.1 = 2.02
e,
x1 = 0 + 0.2 = 0.2
2º iteração:
y2 = y1 + 0.2*k2
k2 = 0.9*(x1 - y1) + 1.9 ⇔ k2 =0.9*(0.2 – 2.02) + 1.9 ⇔ k2 = 0.262
donde y2 = 2.02 + 0.2*0.262 = 2.0724
e,
x2 = 0.2 + 0.2 = 0.4
Página 18 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
3º iteração:
y3 = y2 + 0.2*k2
k2 = 0.9*(x2 - y2) + 1.9 ⇔ k2 =0.9*(0.4 - 2.0724) + 1.9 = 0.39484
donde y3 = 2.0724 + 0.2*0.39484 = 2.151368
e,
x3 = 0.4 + 0.2 = 0.6
4º iteração:
y4 = y3 + 0.2*k2
k2 = 0.9*(x3 - y3) + 1.9 ⇔ k2 =0.9*(0.6 –2.151368) + 1.9 = 0.5037688
donde y4 = 2.151368 + 0.2*0.5037688 = 2.25212176
e,
x4 = 0.6 + 0.2 = 0.8
5º iteração:
y5 = y4 + 0.2*k2
k2 = 0.9*(x4 - y4) + 1.9 ⇔ k2 = 0.9*(0.8 - 2.25212176) + 1.9
⇔ k2 = 0.593090416
donde y5 = 2.25212176+ 0.2*(0.593090416) = 2.370739843
e,
x5 = 0.8 + 0.2 = 1
Página 19 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
As soluções aproximadas para o PVI na malha [0, 1] com passo h=0.2 são:
{ 2.02 , 2.0724 , 2.151368 , 2.25212176 , 2.370739843 }.
2.2.1.3. Métodos de Runge-Kutta de 4ª ordem
Fórmulas de Runge-Kutta de ordem superior podem ser desenvolvidas com o mesmo
objectivo. A mais usada é a que corresponde ao método conhecido por método de
Runge-Kutta de 4ª ordem
⎧
⎪ y = y(x )
0
⎪ 0
⎪
h
⎪ y j+1 = y j + 6 (k1 + 2k 2 + 2k 3 + k 4 )
⎪
j = 0,..., m - 1.
⎪
⎪
⎨k1 = f(x j , y j )
⎪
⎪k 2 = f(x j + h , y j + h k1 ),
⎪
2
2
⎪
h
h
⎪k 3 = f(x j + , y j + k 2 )
2
2
⎪
⎪k 4 = f(x j + h, y j + hk 3 )
⎩
Exemplo:
Achar aproximações para o PVI
⎧ y' = x − y + 2
⎨
⎩ y( 0 ) = 2
na malha [0,1] com h=0.2, usando o método de Euler modificado.
Página 20 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
Resolucão:
Tem-se que x0=0 e y0=2.
Além disso, m =
b − a 1− 0
=
= 5 ⇒ m -1 = 4 .
h
0.2
A fórmula de recorrência será:
⎧y 0 = 2
⎪
0.2
⎪ y j+1 = y j +
* (k1 + 2k 2 + 2k 3 + k 4 ) ,
6
⎪
⎪
j = 0,1,2,3,4.
⎪
⎪k 1 = x j - y j + 2
⎪
⎨
⎪k 2 = f (x j + 0.1, y j + 0.1* k1 ) = 0.9 * x j − 0.9 * y j + 1.9
⎪
⎪
⎪k 3 = f (x j + 0.1, y j + 0.1* k 2 ) = 0.91* x j − 0.91 * y j + 1.91
⎪
⎪
⎪k = f (x + 0.2 , y + 0.2 * k ) = 0.818 * x − 0.818 * y + 1.818
j
j
3
j
j
⎩ 4
Cálculos auxiliares:
(
)
k1 = f x j , y j
= xj − yj + 2
(
)
(
(
))
= f (x j + 0.1 , y j + 0.1 * x j − 0.1 * y j + 0.2)
= f (x j + 0.1 , 0.9 * y j + 0.1 * x j + 0.2 )
= x j + 0.1 − (0.9 * y j + 0.1 * x j + 0.2 ) + 2
k 2 = f x j + 0.1 , y j + 0.1 * k1
= f x j + 0.1 , y j + 0.1 * x j − y j + 2
= 0.9 * x j − 0.9 * y j + 1.9
Página 21 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
(
)
= f (x j + 0.1 , y j + 0.1 * (0.9 * x j − 0.9 * y j + 1.9 ))
= f (x j + 0.1 , y j + 0.09 * x j − 0.09 * y j + 0.19 )
= f (x j + 0.1 , 0.91 * y j + 0.09 * x j + 0.19)
= x j + 0.1 − (0.91 * y j + 0.09 * x j + 0.19 ) + 2
k 3 = f x j + 0.1 , y j + 0.1 * k 2
= 0.91 * x j − 0.91 * y j + 1.91
(
)
(
(
))
= f (x j + 0.2 , y j + 0.182 * x j − 0.182 * y j + 0.382 )
= f (x j + 0.2 , 0.818 * y j + 0.182 * x j + 0.382 )
= x j + 0.2 − (0.818 * y j + 0.182 * x j + 0.382) + 2
k 4 = f x j + 0.2 , y j + 0.2 * k 3
= f x j + 0.2 , y j + 0.2 * 0.91 * x j − 0.91 * y j + 1.91
= 0.818 * x j − 0.818 * y j + 1.818
Então,
0.2
* (k 1 + 2 k 2 + 2 k 3 + k 4 )
6
0.2
= yj +
* ((x j - y j + 2 ) + 2 (0 .9 * x j − 0.9 * y j + 1 .9 )
6
+ 2 (0 .91 * x j − 0.91 * y j + 1 .91 ) + (0 .818 * x j − 0.818 * y j + 1 .818 ))
y j +1 = y j +
= yj +
0.2
* (5 .438 * x j − 5 .438 * y j + 11 .438 )
6
y j+1 = 0.81873333 4 * y j + 0.18126666 6 * x j + 0 .381266666 ,
j = 0, 1, 2, 3,4.
1º iteração:
y1 = 0.818733334*y0 + 0.181266666*x0+0.381266666
Página 22 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
= 0.818733334*2 + 0.181266666*0+0.381266666 = 2.018733335
x1 = 0 + 0.2 = 0.2
2º iteração:
y2 = 0.818733334*y1 + 0.181266666*x1+0.381266666
= 0.818733334*2.018733335 + 0.181266666*0.2+0.381266666
= 2.070324273
x2 = 0.2 + 0.2 = 0.4
3º iteração:
y3 = 0.818733334*y2 + 0.181266666*x2+0.381266666
= 0.818733334*2.070324273+ 0.181266666*0.4+0.381266666
= 2.148816828
x3 = 0.4 + 0.2 = 0.6
4º iteração:
y4 = 0.818733334*y3 + 0.181266666*x3 + 0.381266666
= 0.818733334*2.148816828+ 0.181266666*0.6+0.381266666
= 2.249334632
Página 23 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
x4 = 0.6 + 0.2 = 0.8
5º iteração:
y5 = 0.818733334*y4 + 0.181266666*x4 + 0.381266666
= 0.818733334*2.249334632+ 0.181266666*0.8+0.381266666
= 2.367885242
e,
x5 = 0.8 + 0.2 = 1
As soluções aproximadas para o PVI na malha [0, 1] com passo h=0.2 são:
{ 2.018733335, 2.070324273, 2.148816828, 2.249334632, 2.367885242 }.
Página 24 de 24 –Resolução Numérica de Equações Diferenciais Ordinárias
Download