Uploaded by UTA - Serviços Técnicos ISECMAR

Equacoes diferenciais ordinarias

advertisement
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
Download