Métodos Numéricos para Equações Diferenciais Ordinárias Introdução Diversos problemas técnicos e científicos são descritos matematicamente por equações diferenciais que representam variações das quantidades físicas que os descrevem. Alguns exemplos de equações diferenciais são: dC A (1) Reação química de 1a ordem A → = − kC A , na qual CA é a ← B , descrita pela equação dt concentração do reagente A, k a constante da reação e t o tempo decorrido desde o início da reação. (2) Descarga de um circuito elétrico contendo uma resistor em série com um capacitor, descrito dQ C pela equação V0 = R + , para a qual V0 é a tensão contínua de alimentação do circuito, dt Q dQ R a resistência, C a capacitância, Q a carga elétrica acumulada no capacitor e i = a dt corrente do circuito. dT (3) Condução de calor num material sólido, descrito pela equação de Fourier q& = kA , na qual dx q& é o fluxo térmico, k a condutividade térmica, A a área de secção transversal ao fluxo térmico, T a temperatura e x a coordenada espacial na direção do fluxo de calor. (4) Pêndulo simples, descrito pela equação d 2θ 2 =− g sen θ , na qual θ é o ângulo formado pelo l dt pêndulo em relação ao eixo vertical, g a aceleração da gravidade, l o comprimento do pêndulo e t o tempo. Dos exemplos citados, vemos que o grau (ou ordem) de uma equação diferencial pode variar. O grau de uma equação diferencial é definido pelo termo da equação que contém a derivada de maior ordem. Por exemplo, a seguinte equação diferencial y´ +x − 2 = 0 é uma equação diferencial de 1o grau porque a derivada y´ é de 1a ordem. Já a equação diferencial y ′′′ − 2 xy ′′ + 5 y ′ + y − x + 8 = 0 é uma equação diferencial de 3o grau porque o termo de derivada de maior ordem é de 3a ordem. Se a solução de uma equação diferencial y for uma função de uma única variável x, isto é, se y = y(x), então a equação diferencial é chamada de equação diferencial ordinária. Definição Uma equação diferencial ordinária de grau n é uma equação que pode ser descrita na forma geral como: y ( n ) = f ( x , y , y ′, y ′′,K , y ( n−1 ) ) sendo que y ( n ) ≡ dny dx n (1) empregando a notação de Leibniz. Equações Diferenciais Ordinárias 1 Uma equação diferencial ordinária (E.D.O.) de 1a ordem para duas variáveis x e y é definida como uma equação da forma espacial: y′ = dy = f ( x, y) dx (2) ou para duas variáveis y e t, na forma temporal como: y& = dy = f ( y, t ) dt (3) No caso particular, f(x,y) = f(x), podemos obter a solução geral para E.D.O. de 1a ordem (2) por separação de variáveis: y′ = dy = f(x) ⇒ dx dy = f ( x ) ⋅ dx (4) que pode ser integrada diretamente como: y= ∫ f ( x ) ⋅ dx + C (5) onde C é a constante de integração. Para obtermos uma solução particular (ou seja, um valor específico para a constante C), é necessário fornecer a condição de contorno para a equação (2): f ( x 0 , y 0 ) = C0 (6) Se y = y(x) é uma solução, então dy/dx = f(x,y) e y0 = y(x0) é a condição de contorno da equação (2). Se considerarmos a E.D.O. (3) na qual a variável t representa o tempo, então a condição para obtenção de uma solução particular de (3) é chamada condição inicial (análoga à condição de contorno, somente que esta se aplica a problemas envolvendo apenas coordenadas espaciais). Exemplo 1 Seja a E.D.O. de 1a ordem: y ′ = y , cuja solução analítica geral é expressa por y = Ce x . Se impusermos como condição de contorno y(0) = 1, isto é, em x = 0, y = 1 e substituirmos na solução geral, vem que, 1 = Ce 0 = C . Portanto, a solução particular da E.D.O. y’ = y é obtida substituindo-se o valor da constante de integração C calculada da condição de contorno y(0) = 1, resultando: y = ex Exemplo 2 Seja a E.D.O. de 1o grau, y' = x + y, cuja solução analítica, obtida pelo Método dos Fatores Integrantes1, é expressa por: y(x) = Cex - x - 1. Se adotarmos a condição de contorno y(0) 1 Matemática Superior, E. Kreyszig, Livros Técnicos e Científicos, Rio de Janeiro,1969, p.69. Equações Diferenciais Ordinárias 2 = 1, vem que y(0) = C - 1 = 1. Portanto, C = 2, que substituindo na solução geral, resulta a solução particular: y(x) = 2ex - x - 1. É importante salientar que a solução geral representa uma família de soluções (isto é, um conjunto infinito de soluções) e que a solução particular representa uma solução única. Como nos métodos numéricos pressupõe-se que a solução do problema seja única, isto irá requerer na descrição do problema a especificação da condição de contorno juntamente com a equação diferencial. Método de Euler O Método de Euler é um método aproximado de 1a ordem, isto é, ele aproxima a solução da E.D.O. de 1o grau y(x) = y(x) por uma função de 1o grau, isto é, por uma reta. A Fig. 1 ilustra a aproximação da solução exata y = y(x) por uma solução aproximada y , obtida pelo prolongamento da reta tangente à curva de y = y(x) em x = x0 até o valor de x para o qual desejase obter a solução da E.D.O. y Solução exata da E.D.O. y = y(x) Valor exato Aproximação de y(x) pelo método de Euler (aproximação linear) y 1 y 1 Valor aproximado pelo método de Euler Condição de contorno y 0 x0 x1 x Fig. 1 Solução gráfica da E.D.O. pelo método de Euler. A equação genérica para o cálculo da solução de uma E.D.O. de 1o grau pelo Método de Euler é expressa por: yi +1 = yi + hf ( xi , yi ) para a qual (7) h = xi +1 − xi Exemplo 1 Seja a E.D.O. y’ = x + y, com a condição de contorno y(0) = 1. A solução da E.D.O. empregando o método de Euler será calculada no intervalo [0; 5]. A equação do método de Euler para a E.D.O. deste exemplo tem a forma: yi +1 = yi + h.( xi + yi ) Equações Diferenciais Ordinárias 3 (a) h = 1 i=0 x1 = x0 + h = 0 + 1 = 1 y1 = y0 + h.(x0 + y0) = 1 + 1.(0 + 1) = 2 i=1 x2 = x1 + h = 1 + 1 = 2 y2 = y1 + h.(x1 + y1) = 2 + 1.(1 + 2) = 5 i=2 x3 = x2 + h = 2 + 1 = 3 y3 = y2 + h.(x2 + y2) = 5 + 1.(2 + 5) = 12 i=3 x4 = x3 + h = 3 + 1 = 4 y4 = y3 + h.(x3 + y3) = 12 + 1.(3 + 12) = 27 i=4 x5 = x4 + h = 4 + 1 = 5 y5 = y4 + h.(x4 + y4) = 27 + 1.(4 + 27) = 58 300 Exato Euler 250 y = y(x) 200 150 100 50 0 0 0.5 1 1.5 2 2.5 x 3 3.5 4 4.5 5 Fig. 2 Gráfico comparativo entre a solução exata e a solução pelo método de Euler (h = 1) Cálculo com h = 0,5. (b) h = 0,5 Os resultados estão apresentados na tabela seguinte. i xi yi f(xi,yi) xi+1 yi+1 0 0 1,0 1,0 0,5 1,5 1 0,5 1,5 2,0 1,0 2,5 2 1,0 2,5 3,5 1,5 4,25 3 1,5 4,25 5,75 2,0 7,125 Equações Diferenciais Ordinárias 4 4 2,0 7,125 9,125 2,5 11,6875 5 2,5 11,6875 14,1875 3,0 18,7813 6 3,0 18,7813 21,7813 3,5 29,6719 7 3,5 29,6719 33,1719 4,0 46,2578 8 4,0 46,2578 50,2578 4,5 71,3867 9 4,5 71,3867 75,8867 5,0 109,3301 10 5,0 109,3301 300 Exato Euler 250 y = y(x) 200 150 100 50 0 0 0.5 1 1.5 2 2.5 x 3 3.5 4 4.5 5 Fig. 3 Gráfico comparativo entre a solução exata e a solução pelo método de Euler (h = 0,5) Programa Matlab % euler1 % % Programa para o calculo da E.D.O. y' = x + y Metodo de Euler Condicao de contorno: y(0) = 1 clear; % Condicao de contorno x(1) = 0; y(1) = 1; n = input('Numero de intervalos: '); xf = input('Valor de x final: '); h = (xf - x(1))/n; for i = 1:n f(i) = x(i) + y(i); x(i+1) = x(i) + h; y(i+1) = y(i) + h*f(i); end % Calculo da solucao exata xe = 0:0.1:xf; ye = 2*exp(xe) - xe - 1; % Grafico comparativo: solucao pelo metodo de Euler e a solucao exata plot(xe,ye,'-r',x,y,'ob'); xlabel('x'); ylabel('y = y(x)'); legend('Exato','Euler'); shg Equações Diferenciais Ordinárias 5 Exemplo 2 Seja a E.D.O. y’ = -ky, com a condição de contorno y(1) = 1. Calcular a solução da E.D.O. empregando o método de Euler em x = 2, para h = 0,5 e h = 0,25. Neste exemplo, por questão de conveniência, vamos realizar os cálculos numa tabela que sumariza os resultados. A equação do método de Euler para a E.D.O. y’ = y é: yi +1 = yi + h. yi (a) h = 0,5 i xi yi yi+1 0 1 2 1,0 1,5 2,0 1,0 1,5 2,25 1,5 2,25 i xi yi yi+1 0 1 2 3 4 1,0 1,25 1,5 1,75 2,0 1,0 1,25 1,5625 1,9531 2,4414 1,25 1,5625 1,9531 2,4414 (b) h = 0,25 (c) A solução analítica é dada por: dy dy = y⇒∫ = dx ⇒ ln y = x + C ′ dx y ∫ Reescrevendo a solução analítica na forma y = f(x), resulta: y = Ce x A constante de integração C é calculada a partir da condição de contorno do problema: y (1) = 1 ⇒ 1 = Ce1 ⇒ C = e −1 que, substituindo na solução analítica geral, resultará na expressão: y = e x −1 como solução analítica particular do problema. Calculando-se a solução exata em x = 2, obtém-se y(2) = e2-1 = e1 = 2,7183. Comparando-se o resultado exato com os resultados aproximados de (a) e (b), resulta: h = 0,5 erro = 2,7183 – 2,25 = 0,47 h = 0,25 erro = 2,7183 – 2,4414 = 0,28 o que corresponde a uma redução de 1,7 vezes no erro quando o intervalo h é reduzido pela metade. Equações Diferenciais Ordinárias 6 Método de Euler Modificado Como o método de Euler baseia-se no cálculo da solução pela aproximação de uma reta tangente traçada em x0 para avaliar a solução em x1, o Método de Euler Modificado apresenta uma correção na estimativa da solução em x1 calculando o valor de y1 e fazendo a média com o valor y0. Generalizando para o cálculo do valor estimado yi+1 , toma-se a média entre as inclinações das retas tangentes em xi e xi+1: f medio ( xi , yi ) = 1 [ f (xi , yi ) + f (xi +1 , yi +1 )] 2 (8) na qual o argumento yi+1 = yi + h.f(xi,yi) do segundo termo de (8) é obtido a partir da solução do método de Euler. Substituindo o coeficiente angular médio fmedio(xi,yi) é substituído em (7): yi +1 = yi + h [ f ( xi , yi ) + f ( xi + h, yi +1 ] 2 y (9) Solução exata da E.D.O. Solução em x1 pelo método de Euler Modificado Inclinação de y(x) em x1: correção do método de Euler y = y(x) Inclinação de y(x) em x0 pelo método de Euler y 1 y 1 Condição de contorno y 0 Retas de coeficiente angular fmedio x0 x1 x Fig. 4 Solução gráfica da E.D.O. pelo método de Euler Modificado. Métodos de Runge-Kutta Os Métodos de Runge-Kutta consistem em métodos preditores-corretores de 2a e 4a ordem. No caso do Método de Runge-Kutta de 2a ordem, a expressão para o cálculo aproximado de yi+1 é equivalente à do Método de Euler Modificado, ou seja, yi +1 = yi + h [ f ( xi , yi ) + f ( xi + h, yi +1 ] 2 (9) que pode ser re-escrito na forma: Equações Diferenciais Ordinárias 7 h (k1 + k 2 ) 2 k1 = f ( xi , yi ) k 2 = f ( xi + h , yi + hk1 ) yi +1 = yi + (10) A fórmula do Método de Runge-Kutta de 4a ordem é dada por: h (k1 + 2k 2 + 2k 3 + k 4 ) 6 k1 = f ( x i , y i ) y i +1 = y i + k 2 = f ( xi + h / 2, yi + hk1 / 2) (11) k 3 = f ( xi + h / 2, y i + hk 2 / 2) k 4 = f ( xi + h, yi + hk 3 ) Exemplo Recalculando a solução da E.D.O. y’ = x + y, com a condição de contorno y(0) = 1 no intervalo [0; 5] utilizando os métodos de Runge-Kutta de 2ª e 4ª ordem com h = 1, obtém-se o gráfico mostrado na Fig. 5. 300 Exato RK 2a ordem RK 4a ordem 250 y = y(x) 200 150 100 50 0 0 0.5 1 1.5 2 2.5 x 3 3.5 4 4.5 5 Fig. 5 Gráfico comparativo entre a solução exata e as soluções pelos métodos de Runge-Kutta de 2ª e 4ª ordem (h = 1,0). Observar que a solução aproximada pelo método de 4ª ordem é uma solução bastante próxima à exata. Programa Matlab % rungekutta % % % Programa para o calculo da E.D.O. y' = x + y pelos metodos de Runge-Kutta de 2a e 4a ordem Condicao de contorno: y(0) = 1 Solucao analitica: y(x) = 2 exp(x) - x - 1 Equações Diferenciais Ordinárias 8 clear; x(1) = 0; % valor inicial y2(1) = 1; % condicao de contorno (Runge-Kutta de 2a ordem) y4(1) = 1; % condicao de contorno (Runge-Kutta de 4a ordem) h = input('Incremento h: '); xf = input('Valor final de x: '); n = floor((xf - x(1)) / h + 1); % Numero de intervalos for i = 1:n-1 x(i+1) = x(i) + h; % Metodo de Runge-Kutta de 2a ordem k12 = x(i) + y2(i); k22 = x(i) + h + (y2(i) + h*k12); y2(i+1) = y2(i) + h/2*(k12 + k22); % Metodo de Runghe-Kutta de 4a ordem k14 = x(i) + y4(i); k24 = x(i) + h/2 + (y4(i) + h*k14/2); k34 = x(i) + h/2 + (y4(i) + h*k24/2); k44 = x(i) + h + (y4(i) + h*k34); y4(i+1) = y4(i) + h/6*(k14 + 2*k24 + 2*k34 + k44); end % Solucao exata xe = 0:0.1:xf; ye = 2*exp(xe) - xe - 1; % Grafico: solucoes pelos metodos de Runge-Kutta e solucao exata plot(x,y2,'sr',x,y4,'ob',xe,ye,'-k'); xlabel('x'); ylabel('y = y(x)'); legend('Exato','RK 2a ordem','RK 4a ordem'); shg Equações Diferenciais Ordinárias de 2ª Ordem Os métodos numéricos vistos até aqui se aplicam somente à solução de E.D.O. de 1ª ordem. Entretanto, uma E.D.O. de 2ª ordem pode ser escrita como um sistema de duas E.D.O. de 1ª ordem. Assim, pode-se utilizar os métodos de Runge-Kutta na solução de E.D.O. de 2ª ordem e ordem superior. Considerando a E.D.O. genérica de 2ª ordem, y” = f (x,y,y’) (12) y′ = z z ′ = f (x , y , z ) (13) que pode ser escrita como o sistema: Para a qual definiu-se uma variável auxiliar z. Para o sistema de E.D.O. de 1ª ordem (13), devese aplicar as condições de contorno para cada E.D.O. de 1ª ordem: y(z0) = y0 e z(x0) = z0. Observar que esta segunda condição de contorno se refere à condição de contorno da derivada da variável y = y(x). Exemplo aplicado: Pêndulo simples. Considere o pêndulo simples mostrado na Fig. 6. Equações Diferenciais Ordinárias 9 l θ m mg Fig. 6 Pêndulo simples. A equação diferencial ordinária que descreve o movimento angular θ do pêndulo é obtida a partir das leis de Newton: r r F = ma (14) d 2θ ml 2 = − mg sen θ dt (15) g l θ&& = − sen θ (16) A condição inicial (condição de contorno) do problema é θ (0) = θ 0 (ângulo inicial do pêndulo). Vamos calcular agora a solução da E.D.O. de 2ª ordem (16) através do Método de Runge-Kutta de 2ª ordem. Como a equação (16) é uma E.D.O. de 2a ordem, precisamos convertêla em um sistema de E.D.O. de 1a ordem, aplicando as seguintes transformações: dθ g θ& = ≡ p ⇒ p& = − senθ dt l de modo a obter o sistema de E.D.O. de 1a ordem: dp g = − sen θ dt l (17) dθ =p dt (18) com as condições iniciais: θ (0) = θ 0 e p(0) = p0 . Para resolver este sistema de equações, calculamos a solução da equação (17) para obter o valor da variável p, e a equação (18) para obter a solução θ em cada intervalo de tempo t. Aplicando o Método de Runge-Kutta nas equações (17) e (18), resulta, respectivamente, em: Equações Diferenciais Ordinárias 10 pi +1 = pi + h (k1 + k 2 ) 2 (19) g g k1 = − senθi , k 2 = − senθi l l h (k1 + k 2 ) 2 k1 = pi , k 2 = pi (20) h = ∆t (21) θi +1 = θi + onde: Consideremos os seguintes valores numéricos: g = 9,8 m/s2, l = 0,5 m, θ(0) = 60º e p(0) = dθ/dt = 0 (velocidade inicial). p(t) = dq/dt (rad/s) 10 5 0 -5 -10 0 1 2 3 4 5 t 6 7 8 9 10 0 1 2 3 4 5 t 6 7 8 9 10 3 q(t) (radianos) 2 1 0 -1 -2 -3 Fig. 7. Gráfico da velocidade angular p = dθ/dt e do deslocamento angular θ versus tempo usando o Método de Runge-Kutta de 2ª ordem (h = ∆t = 0,01 s). Observe a instabilidade da solução para valores crescentes de tempo. Equações Diferenciais Ordinárias 11 p(t) = dq/dt (rad/s) 5 0 -5 0 1 2 3 4 5 t 6 7 8 9 10 0 1 2 3 4 5 t 6 7 8 9 10 1.5 q(t) (radianos) 1 0.5 0 -0.5 -1 -1.5 Fig. 8. Gráfico da velocidade angular p = dθ/dt e do deslocamento angular θ versus tempo usando o Método de Runge-Kutta de 2ª ordem (h = ∆t = 0,001 s). Observe que esta solução é estável e não apresenta instabilidade na resposta para tempos crescentes. Programa Matlab % PENDULO % % Calculo da E.D.O. de 2a. ordem do pendulo simples Metodo de Runge-Kutta de 2a ordem Condicoes de contorno: p(0) = 0, q(0) = 60 clear; t(1) = 0; p(1) = 0; q(1) = 60; q(1) = q(1)*pi/180; % Conversao de angulo de graus para radianos g = 9.81; % Aceleracao da gravidade L = 0.5; % Comprimento do pendulo h = input('Incremento h: '); tf = input('Valor final de t: '); n = floor((tf - t(1)) / h + 1); % Numero de intervalos for i = 1:n-1 t(i+1) = t(i) + h; % Metodo de Runghe-Kutta de 2a ordem % Calculo de p(t) k11 = -g/L*sin(q(i)); k21 = -g/L*sin(q(i)); p(i+1) = p(i) + h/2*(k11 + k21); % Calculo de q(t) k12 = p(i); k22 = p(i); q(i+1) = q(i) + h/2*(k12 + k22); end % Graficos das solucoes de p(t) e q(t) figure(2); clf; subplot(2,1,1) plot(t,p); xlabel('t'); ylabel('p(t) = dq/dt (rad/s)') subplot(2,1,2) plot(t,q); xlabel('t'); ylabel('q(t) (radianos)') Equações Diferenciais Ordinárias 12 Exercícios 1. Calcular a solução das seguintes E.D.O. de 1o grau nos valores indicados, utilizando o método de Euler e compare com a solução exata à partir da solução analítica: (a) y’ + 2y = x2, y(0) = 0,25, y(2) h = 0,5 e h = 0,25 x2 x Solução analítica: y = − +C 2 2 (b) y’ + y = sen x, y(0) = -0,5, y(2) h = 1,0 e h = 0,5 Solução analítica: y = C (sen x − cos x) (c) y’ + 2y = x, y(0) = 1, y(3) h = 1 e h = 0,5 x 1 Solução analítica: y = − + Ce − 2 x 2 4 Equações Diferenciais Ordinárias 13