Capítulo 7: Equações Diferenciais Ordinárias 1. Problema de valor inicial 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. Exemplos Equação Diferencial y’=2x 3 d2y ⎛ dy ⎞ + x 2 ⎜ ⎟ − 15 y = 0 2 dx ⎝ dx ⎠ (y’’’)4-x2(y’’)5+4xy=xex x3 3 dy ⎛ d y ⎞ ⎟ −1 =⎜ dx ⎜⎝ dx 4 ⎟⎠ 4 Ordem 1 2 3 4 Uma função f é solução de uma equação diferencial se a substituição de y por f resulta em uma identidade para todo x em algum intervalo. Por exemplo, a equação diferencial y’=6x2-5 tem solução f(x)=2x3-5x+C para todo o real C, pois a substituição de y por f conduz à identidade 6x2-5=6x2-5 Denominamos f(x)=2x3-5x+C a solução geral de y’=6x2-5, pois toda a solução da equação é desta forma. Obtém-se uma solução particular atribuindo a C valores específicos. Para ilustrar, se C =0, temos a solução particular f(x)=2x3-5x Às vezes, impõem-se condições iniciais que determinam uma solução particular. 1 Associados a y(n)=f(x, y’, y’’,...,y(n-1)), podem existir condições cujo número coincide com a ordem da equação diferencial ordinária. Se tais condições se referem a um único x, tem-se um problema de valor inicial ⎯ PVI. Caso, contrário tem-se um problema de fronteira. Por exemplo, ⎧ y ' ' = 3 y '−2 y ⎪ ⎨ y (0) = −1 ⎪ y ' (0) = 0 ⎩ é um PVI de segunda ordem. Pretende-se valores de y(x) em pontos distintos daqueles das condições iniciais associadas aos PVI. Vai se estudar PVI de primeira ordem, i.e., ⎧ y ' = f ( x, y ) , ηum número dado. (7.1) ⎨ ⎩ y ( x0 ) = y 0 = η Os PVI de ordem superior a um podem ser reduzidos a sistemas de PVI de primeira ordem à custa de variáveis auxiliares. Exemplo Considere-se o seguinte PVI de ordem dois ⎧ y ' ' = 3 y '−2 y ⎪ ⎨ y (0) = −1 ⎪ y ' (0) = 0 ⎩ Seja z=y’ então y’’=z’ e z(0)=y’(0)=0. Ou seja obteve-se o seguinte sistema de PVI de ordem um: ⎧ z ' = 3z − 2 y ⎪ y' = z ⎪ ⎨ ⎪ y (0) = −1 ⎪⎩ z (0) = 0 Um PVI tem solução única se f é uma função real e satisfaz a: i) é definida e contínua na faixa a≤x≤b, -∞<y<∞, com a e b finitos; 2 ii) existe uma constante L tal que para qualquer x pertencente ao intervalo [a, b], e todo o par de números y e y* f ( x, y ) − f ( x, y * ) ≤ L y − y * , a condição anterior designa-se por condição de Lipschitz. Se f satisfaz as condições anteriores então existe exactamente uma função y(x) que satisfaz: i) y(x) é contínua e diferenciável em [a,b], ii) y’(x)=f(x, y(x)), x∈[a, b], iii) y(a)=η, com η um número dado. 2. Solução numérica de um PVI de primeira ordem: Métodos de passo simples 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. Considere-se m subintervalos de [a, b], (m≥1), e seja xj=x0+jh onde h = b−a , j=0,...,m e m xj∈[a,b]. Ao conjunto Ih={x0,x1,...,xm}obtido da forma anterior chama-se rede ou malha de [a,b]. A solução numérica ym(x) é a função linear por partes, cujo gráfico é uma poligonal com vértices nos pontos (xj,yj), onde yj foi calculado usando algum dos métodos numéricos que serão vistos a seguir. Se m=2n, então hm = b−a 2n , n=0,1,..., e a sucessão de funções poligonais {yn(x)} converge uniformemente para a solução y(x) do PVI. O objectivo dos métodos numéricos é o cálculo dos vértices {y0,y1,...,ym}. 3 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. 2.1. Métodos da série de Taylor: Método de Euler Considere-se o PVI ⎧ y ' = f ( x, y ) , η um número dado. ⎨ ⎩ y ( x0 ) = y 0 = η Desejam-se aproximações y1, y2,...,ym para as soluções exactas y(x1), y(x2),..., y(xm). Comecemos por determinar a aproximação y1 para y(x1). Seja T a tangente à curva y(x) no ponto (x0, y(x0)), a equação de T é: y(x)- y(x0)=(x-x0)y’(x0). Fazendo x=x1 e notando que y(x0)=y0 ⎯ condição inicial x1-x0=h y’(x0)=f(x0,y(x0)) y1≅y(x1) tem-se que y(x1)-y(x0)=(x1-x0)y’(x0) ⇔ y1-y0=hf(x0,y(x0)) ⇔ y1=y0+hf(x0,y(x0)). O erro cometido na aproximação de y(x1) por y1 é: e1=y1-y(x1), ou seja, a diferença entre a solução numérica e a solução exacta. y2 obtém-se de modo análogo ao de y1, tendo-se que: y2=y1+hf(x1,y(x1)) e2=y2-y(x2) Genericamente, yj+1=yj+hf(xj,y(xj)), j=0,1,...,m-1 cujo erro é ej+1=yj+1-y(xj+1), j=0,1,...,m-1 4 O método de Euler consiste, então, em calcular recursivamente a sucessão {yj} através das fórmulas: ⎧ y0 = y (a) = η ⎨ ⎩ y j +1 = y j + hf ( x j , y j ), j = 0,..., m − 1 Interpretação analítica do método de Euler Expandindo a solução y(x) em série de Taylor em torno do ponto xj, y ( x j + h) = y ( x j ) + hf ( x j , y ( x j )) + 1 2 1 h y ' ' ( x j ) + ... + h n y ( n) ( x j ) 2! n! Truncando a série após o termo em h e identificando y(xj) com yj obtém-se a igualdade pretendida, ou seja, o método de Euler. 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. Tem-se que x0=0 e y0=2. 1º iteração y1=y0+hf(x0,y0) ⇔ y1=2+0.2f(0, 2) ⇔ y1=2; x1=0+0.2=0.2 2º iteração y2=y1+hf(x1,y1) ⇔ y2=2+0.2f(0.2, 2) ⇔ y2=2.04; x2=0.2+0.2=0.4 3º iteração y3=y2+hf(x2,y2) ⇔ y3=2.04+0.2f(0.4, 2.04) ⇔ y3=2.112; x3=0.4+0.2=0.6 4º iteração y4=y3+hf(x3,y3) ⇔ y4=2.112+0.2f(0.6, 2.112) ⇔ y4=2.2096; x4=0.6+0.2=0.8 5º iteração y5=y4+hf(x4,y4) ⇔ y5=2.2096+0.2f(0.8, 2.2096) ⇔ y5=2.32768; x5=0.8+0.2=1 As soluções aproximadas na malha [0, 1] são: {2, 2.04, 2.112, 2.2096, 2.32768}. 5 Métodos de Passo Simples Um método para resolver um PVI é de passo simples se a aproximação yj+1 depende apenas dos resultados de yj da etapa anterior. Todos os métodos de passo simples são escritos na forma: (7.2) yj+1=yj+hΦ(xj,yj,h ), j=0,1,...,m-1, onde Φ é a função incremento e h o comprimento do passo. O método de Euler é um exemplo de um método de passo simples com função incremento Φ(xj,yj,h )=f(xj, yj). Diz-se que um método da forma (7.2) possui ordem r se r for o maior número inteiro para o qual y(x+h)-y(x)-hΦ(x, y(x), h)=o(hr+1), onde y(x) é a solução teórica do PVI. O método de Euler é de ordem um. Métodos com derivadas O método de Euler ou método de Taylor de 1ª ordem, foi obtido a partir da fórmula de Taylor, onde se tomaram termos até ao termo em h. Teoricamente, pode-se afirmar que a fórmula de Taylor fornece tantos métodos quantos se queiram, desde que se calculem as derivadas necessárias. O método de Taylor de 2ª ordem é, y j +1 = y j + hy ' ( x j ) + h y ' ' ( x j ) , j=0,..,m-1 2! Os métodos que usam a fórmula de Taylor apresentam alguns inconvenientes computacionais: deve-se operar simultaneamente com várias funções, i.e., as derivadas da função f, o que aumenta em muito o espaço ocupado na memória do computador. Além disso, a complexidade das expressões analíticas para as derivadas de f aumenta com a ordem de derivação de f, salvo casos triviais. Em geral, estes métodos não são usados. 6 Essa é a razão por que serão obtidos, a seguir, métodos de precisão equivalente aos métodos da fórmula de Taylor, porém sem o inconveniente de se calcularem derivadas; são os chamados métodos de Runge-Kutta ⎯ RK. 2.2. Métodos de Runge-Kutta 2.2.1. Métodos de Runge-Kutta de segunda ordem As fórmulas têm a forma geral [ ⎧ y j +1 = y j + h af ( x j , y j ) + bf ( x j + αh, y j + β hf ( x j , y j )) ⎨ ⎩ y 0 = y ( x0 ) ] j=0,...,m-1 sendo as constantes a,b,α e β escolhidas de modo que o erro de truncatura local do método seja proporcional a h3 tal como o método de Taylor de 2ª ordem. ⎧a = 1 − b Tal condição implica ⎪⎨ 1 ⎪⎩α = β = 2b , sendo b arbitrário. Apresentaremos aqui os dois métodos mais conhecidos de Runge-Kutta de 2ª ordem. 1 2 1 2 O método de Euler melhorado corresponde à escolha b = ,e tem-se a = , α = β = 1 : h ⎧ ⎪ y j +1 = y j + 2 (k1 + k 2 ) ⎪ ⎪ y 0 = y ( x0 ) ⎪ ⎨ ⎪k = f ( x , y ) j j ⎪ 1 ⎪k 2 = f ( x j + h, y j + hk1 ) ⎪⎩ 7 j = 0,..., m - 1 1 2 O método de Euler modificado corresponde à escolha b = 1 ,e tem-se a = 0 , α = β = : ⎧ ⎪ y j +1 = y j + hk 2 ⎪ ⎪ y 0 = y ( x0 ) ⎪ ⎨ ⎪k = f ( x , y ) j j ⎪ 1 ⎪ h h ⎪k 2 = f ( x j + , y j + k1 ) 2 2 ⎩ j = 0,..., m - 1 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 melhorado. Tem-se que x0=0 e y0=2. h 2 1º iteração: y1 = y 0 + (k1 + k 2 ) . Tem-se que k1= f(x0, y0)=f(0,2)=0 k2=f(x0+h, y0+hk1) ⇔ k2=f(0.2, 2+0.2*0) ⇔ k2=0.2 Donde y1=2+0.1(0+0.2)=2.02; x1=0+0.2=0.2 h 2 2º iteração: y 2 = y1 + (k1 + k 2 ) . Tem-se que k1= f(x1, y1)=f(0.2,2.02)=0.18 k2=f(x1+h, y1+h k1) ⇔k2=f(0.4, 2.02+0.2*0.18) ⇔ k2=0.344 Donde y2=2.02+0.1(0.18+0.344)=2.0724; x2=0.2+0.2=0.4 h 2 3º iteração: y3 = y 2 + (k1 + k 2 ) . Tem-se que k1= f(x2, y2)=f(0.4,2.0724)=0.3276 k2=f(x2+h, y2+h k1)⇔ k2=f(0.6, 2.0724+0.2*0.3276) ⇔ k2=0.46208 Donde y3=2.0724+0.1(0.3276+0.46208)=2.151368; x3=0.4+0.2=0.6 8 h 2 4º iteração: y 4 = y3 + (k1 + k 2 ) . Tem-se que k1= f(x3, y3)=f(0.6, 2.151368)=0.448632 k2=f(x3+h, y3+h k1)⇔k2=f(0.8, 2.151368+0.2*0.448632) ⇔k2=0.5589056 Donde y4=2.151368+0.1(0.448632+0.5589056)=2.25212176; x4=0.6+0.2=0.8 h 2 5º iteração: y5 = y 4 + (k1 + k 2 ) . Tem-se que k1= f(x4, y4)=f(0.8, 2.25212176)=0.54787824 k2=f(x4+h,y4+h k1)⇔k2=f(1, 2.25212176+0.2*0.54787824)⇔k2=0.638302592 Donde y5=2.25212176+0.1(0.54787824+0.638302592)=2.370739843; x5=0.8+0.2=1 9