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