Introdução a Resolução Numérica de Equações Diferenciais Ordinárias Equações Diferenciais Definição 6.1.1: Uma equação que envolve derivadas até ordem n, é chamada de equação diferencial ordinária (EDO) de ordem n e pode ser escrita na forma: y (n) ( x ) f ( x , y ( x ), y ( x ), , y a x b ( n 1) ( x )) (6.1.1) Definição 6.1.2: A solução da equação (6.1.1) é qualquer função y = F(x) que é definida em [a,b] e tem n derivadas neste intervalo e que satisfaz (6.1.1). A forma mais simples de uma EDO é y f ( x) (6.1.2) onde f é contínua para a < x < b. A solução geral desta equação é: y( x) f ( x ) dx c (6.1.3) com constante c determinada por y ( x 0 ) y 0 De um modo geral temos y n ( x ) f ( x , y , y , , y ( n 1 ) ) a x b y ( a ) , y ( a ) , , y n 1 ( a ) 1 2 n (6.1.4) como por exemplo: y ( x ) x y ( x ) e x y ( x ) x 2 1 f 0 x 1 y ( 0 ) 1, y ( 0 ) 0 , , y ( 0 ) 1 é conveniente reduzi-la a um sistema primeira ordem chamando : y 1 y ( x ) de EDO de y ( x ) x y ( x ) e x y ( x ) x 2 1 f 0 x 1 y ( 0 ) 1, y ( 0 ) 0 , , y ( 0 ) 1 Para reduzir a uma EDO de primeira ordem assumimos: y1 y ( x ) y 2 y ( x ) y 3 y ( x ) y 1 ( x ) y 2 y 2 ( x ) y 3 x 2 y 3 ( x ) xy 2 ( x ) e y 1 ( x ) x 1 f y 1 ( 0 ) 1, y 2 ( 0 ) 0 , y 3 ( 0 ) 1 0 x 1 isto é, se y1 ~y y 2 y 3 y 1 ~ y y 2 y 3 y1 (0) ~ y ( 0) y 2 ( 0) y 3 ( 0) y2 ~ ~ y y3 F (x, y) f ( x , y1 , y 2 , y 3 ) de um modo geral ~ ~ dy F (x, ~ y ( x )) dt ~ ~ y ( 0 ) y0 (6.1.6) Equações de Diferenças Definição 6.2.1: Uma equação de diferenças de ordem n é uma sequência de equações da forma: g ( y k n , y k n 1 , , y k ) 0 yi i k 0 ,1,... i 0 ,1,..., n 1 (6.2.1) Os g k são funções de (n+1) variáveis e os valores i são específicos. Definição 6.2.2: Uma solução de (6.2.1) é uma sequência y 0 , y 1 , y 2 , ... , y n 1 , y n , y n 1 , ... que satisfaz (6.2.1). Uma forma especial de (6.2.1) é: n y k n n 1 y k n 1 ... 0 y k 0 yi i (6.2.2) k 0 ,1, . . . i 0 ,1, . . . , n 1 Estas fórmulas nos lembram as fórmulas recursivas e pode ser mostrado que toda fórmula recursiva pode ser escrita como uma equação de diferença. Suponha, por exemplo, que a equação (6.2.2) tenha uma solução da forma: yk l k k=0,1,... (6.2.5) onde k é constante a ser determinada, então de (6.2.2) temos: nl k n n 1 l k n 1 ... 0 l l ( n l n 1 l k k n n 1 ... 0 ) 0 Como l 0 então p(l) = 0 p ( l ) n l n 1 l n Logo se l é uma raiz de equação (6.2.2). n 1 ... 0 p(l) = 0 então (6.2.6) satisfaz a Exemplo : y k 2 8 .5 y k 1 4 y k (6.2.7) p( l ) 2 l 17 l 8 0 2 l 1 0 .5 l2 8 y k a 1l a 2 l k 1 k 2 (6.2.8) satisfaz (6.2.7). Note que, se y 0 2 e y 1 1 a1 a 2 2 0 .5 a 1 8 a 2 1 e a solução será então a1 2 a 2 0 y k 2 ( 0.5) k (6.2.9) Se em vez dos valores iniciais anteriores tivermos, por exemplo: y 0 2 .000001 y 1 1.000008 então teríamos a 1 2 .0 6 a 10 2 , de modo que a solução perturbada seria : 6 y k 2 ( 0.5) 10 8 k k (6.2.9-a) Mesmo para valores moderados de k, a mudança é grande. Teorema 6.2.1: A solução da equação de diferenças que envolve somente as raízes l 1 , l 2 , ... , l m do polinômio característico p(l) = 0 é estável (bem condicionada numéricamente) se todas as outras raízes l m 1 , l m 2, ... , l n satisfazem para k m 1, ..., n . l k <1 Estudaremos, agora, os métodos que aproximam uma EDO por uma equação de diferença. Para facilitar, seja inicialmente y f ( x , y ( x )) y (x0 ) y0 (6.2.10) y k 1 • Em alguns métodos para determinar , uma aproximação de y ( x k ) levamos em consideração apenas o valor de f no ponto y k , isto é, temos métodos de um só passo. • Quando estamos calculando y k 1 podemos levar em conta, não só y k , mas também os passos anteriores y k 1 , ... , y k l , etc. Tais métodos são chamados de métodos de passos múltiplos. A forma geral dos métodos de k passos é dada por: k y i 1 j 1 k j y i j 1 h j f i j 1 (6.2.11) j0 Se 0 0 Método Explícito. Se 0 0 Método Implícito. Métodos de um Passo Método de Runge Kutta (RK) Os métodos de RK são obtidos pela série de Taylor em que se omitem os termos de mais alta ordem na expansão. Assim, expandindo a solução em série de Taylor obtemos: y ( x X ) y ( x ) X y ( x ) X 2 2! y( x ) X 3 3! y( x ) ... Sabendo que dy df y dt dt 2 dy f 2 y f f 2 dt x f x f x x f f t 2 f x f 2 2f xt f t f f x t f 2 t 2 obtemos a base para todos os métodos RK f f y ( x X ) y ( x ) Xf f 2! x t X X f 3! 3 f 2 2 x 2 f f x 2 2 (6.2.14) 2 f 2f ... 2 xt x t t f 2 f f y(x) y(xk ) y(k ) y ( x X ) y ( x k 1 ) y ( k 1) f ( y ( x ), x ) f ( y ( x ), x ) f ( k ) k k Discretizando, temos: logo f y ( k 1) y ( k ) Xf ( k ) f (k ) 2! x X 2 (6.2.17) 2 2 X 2 f (k ) f ( k ) f ( k ) ... f (k ) 2 x 3! x 3 levando-se em conta f t 0 Método de Euler A menor aproximação é da forma : y ( k 1) y ( k ) X f ( k ) k = 0,1,... (6.2.18) e é conhecido como MÉTODO DE EULER. Runge Kutta de segunda ordem Para desenvolvermos o método de segunda ordem RK2, assumiremos que a solução assume uma aproximação tendo a expressão: y ( k 1) y ( k ) c1 g 1 c 2 g 2 k = 0,1,... (6.2.19) onde c 1 e c 2 são constantes e g1 Xf (k ) g 2 Xf ( y( k ) 2 g1 ) com 2 constante. (6.2.20) (6.2.21) Desenvolvendo em série de Taylor a expressão (6.2.21), obtem-se: y ( k 1) y ( k ) ( c 1 c 2 ) X f ( k ) c 2 2 X Logo c1 c 2 1 1 c 2 2 2 c1 c 2 1 2 1 y ( k 1) y ( k ) 1 2 g1 Xf (k ) 2 f (k ) f ( k ) x (6.2.23) 2 então ( g1 g 2 ) g 2 Xf ( y(k ) g1 ) ... Runge Kutta de quarta ordem Normalmente X = h, por universalidade : g 1 K 1 e g 2 K 2 , e seguindo o mesmo procedimento obteremos RK4 (o mais importante): y ( k 1) y ( k ) 1 6 ( g1 2 g 2 2 g 3 g 4 ) g1 Xf (k ) g 2 X f ( y ( k ) 0 .5 g 1 ) g 3 X f ( y ( k ) 0 .5 g 2 ) g 4 Xf ( y(k ) g 3 ) k = 0,1,... (6.2.25) Nos métodos RK temos as seguintes características: São auto-inicializáveis, isto é, a partir da condição inicial temos condições de calcular os demais pontos; Não precisam do cálculo manual de derivadas; Permitem fácil troca de X=h; São facilmente codificáveis; Utilizam p avaliações de função, se a ordem da fórmula for p. Método de Passos Múltiplos Conforme vimos, os métodos de passo simples precisam de informação sobre a solução apenas em x = x n para achar uma aproximação para y( x n + h ). A característica dos métodos de passo múltiplos é que eles usam informações sobre a solução em mais de um ponto. Inicialmente vamos supor que conhecemos x 0 , x 1 , ... , x n aproximações para y(x) em e , i = 0,1,... . x i 1 x i h A seguir exporemos aqui uma classe de métodos de passo múltiplo que é baseado no principio de integração numérica (Métodos Adams-Bash Forth). Métodos Explícitos São obtidos quando trabalhamos com x n , x n 1 , ... , x n m para aproximar a integral : xn 1 y ( x n 1 ) y ( x n ) f ( x , y ( x )) dx xn Aproximamos f ( x , y ( x )) pelo polinômio de grau m, Pm ( x ) que interpola f ( x , y ) em x n , x n 1 , ... , x n m e então: xn 1 y ( x n 1 ) y ( x n ) xn Pm ( x ) dx Escolhendo m = 3 então vamos usar ( x n , y n ) ; ( x n 1 , y n 1 ) ; ( x n 2 , y n 2 ) ; ( x n 3 , y n 3 ) aproximando f ( x , y ( x )) pelo polinômio de grau 3 ( ) P3 ( x ) que interpola f ( x , y ( x )) nos pontos acima, fazendo as contas: y n 1 y n h 24 [ 55 f n 59 f n 1 37 f n 2 9 f n 3 ] Se o polinômio fosse do quarto grau y n 1 y n h 720 [1901 f n 2774 f n 1 2616 f n 2 1274 f n 3 251 f n 4 ] Métodos Implícitos São obtidos quando trabalhamos com x n , x n 1 , ... , x n m (Adams-Moulton). Se m = 2 vamos usar ( x n 1 , y n 1 ), ( x n , y n ), ( x n 1 , y n 1 ), ( x n 2 , y n 2 ) Da mesma forma que fizemos anteriormente x n 1 y ( x n 1 ) y ( x n ) P3 ( x ) dx xn y n 1 y n h 24 9 f n 1 19 f n 5 f n 1 f n 2 Notamos para métodos de mesma ordem : eles usam menos informações que os métodos explícitos; os coeficientes de f i são menores e portanto são fórmulas menos sensíveis ao arredondamento; os limites do erro de truncamento são menores; o problema de cálculo de y i 1 , pois precisamos de f i 1 , o que torna o método inaplicável numéricamente. Métodos Previsores Corretores Para contornar o último quesito podemos adotar um esquema: 1. Calculamos o valor de y i 1 por um método explícito e o chamamos de valor previsto. 2. Com o valor previsto, calculamos f i 1 . 3. Recalculamos y i 1 , isto é, corrigimos o valor de y i 1 já previsto usando uma fórmula implícita. Matlab A biblioteca do Matlab de EDOs os seguintes métodos de valor inicial: ode23 método explícito de um passo, RK de ordem baixa. ode45 método explícito de um passo, RK de ordem média. Este é geralmente, o primeiro método a se tentar em um novo problema. ode113método de passo múltiplo, de AdamsBashforth-Moulton de ordens variadas. ODE 23 Adequado para problemas que apresentam bruscas variações na solução, para os quais é aceitável uma baixa precisão, ou problemas em que f(t, y) não é suave, ou seja, descontínua. Equação da Mola sujeita a uma força asin (t ) w1 w 2 w 2 c m w2 h m w1 a sin ( t ) m function wd=spring(t,w); a=2.0; m=2.0; c=1.4;h=0.1; wd = [w(2);-c/m*w(2)-h/m*w(1)+a/m*sin(t)]; >> tspan=[0 100]; >> wo=[0;0]; >> [t,w] = ode23(@mola,tspan,wo); >> plot(t,w(:,1)); >> grid >> xlabel('tempo, segundos'); >> ylabel('Elongamento da mola, metros'); >> plot(w(:,1),w(:,2)); >> xlabel('Velocidade das oscilacoes da mola'); >> ylabel('Amplitude das oscilacoes da mola'); ODE 45 Adequado para problemas não-stiff que exijam precisão moderada. Equação de Van der Pol x (1 x ) x x 0 2 onde é um parâmetro positivo. Escolhendo y 1 x e y 2 x a equação de Van der Pol se torna: y 1 y 2 y 2 (1 y ) y 2 y1 2 1 function yprime=vdpol(t,y) mu=2; yprime = [y(2);mu*(1-y(1)^2)*y(2)-y(1)]; >> tspan = [0 20]; >> yo = [2; 0]; >> [t,y] = ode45(@vdpol,tspan,yo); >> plot(t,y(:,1),t,y(:,2),'--'); >> xlabel('tempo'); >> title('Solucao de Van der Pol');