Você está na página 1de 7

Exercício Computacional #02:

Equações Diferenciais
Acopladas e Métodos de
Resolução
INF301 – Modelagem e Simulação de Sistemas
Prof. Luiz Henrique Bonani
Universidade Federal do ABC
Orientações para o Relatório
Use um notebook na plataforma Google Colaboratory para gerar um relatório
que contenha as explicações e comentários que julgar pertinentes, seus
códigos e suas figuras.

Em relação aos gráficos das figuras, estes devem ser autoexplicativos, com os
nomes dos eixos e as legendas dos dados. Estabeleça uma fonte com
tamanho adequado para apresentação em um documento.

Submeta um único arquivo notebook em formato ipynb, com o nome do


arquivo no padrão EC0N_NomeSobrenome.ipynb, em que N é o número do
EC, Nome é seu primeiro nome e Sobrenome é o seu último sobrenome.

Lembre-se que o plágio não será tolerado em hipótese alguma!

2
Problema 1
Considere o problema de valor inicial dado a seguir.

ẍ + 2ẋ + 5y = 3
ẋ + 2y = ẏ
x(0) = 0
ẋ(0) = 0
y(0) = 1

a) Reescreva o sistema como um sistema de equações diferenciais de


primeira ordem.

b) Mostre que a solução exata deste sistema é dada por


x(t) = 2 cos(t) + 6 sen(t) – 2 – 6t
y(t) = – 2 cos(t) + 2 sen(t) + 3

3
Problema 1 (continuação)
c) Aproxime a solução no intervalo [0, 10] usando um passo h = 0,1 e o Método
de Euler.

d) Aproxime a solução no intervalo [0, 10] usando um passo h = 0,1 e o Método


de Runge-Kutta de 4ª Ordem.

e) Compare e discuta os resultados obtidos.

4
Problema 2
O Python possui uma rotina chamada odeint (parecida com a ode45 do Matlab)
que pode ser importada da biblioteca scipy.integrate para resolver
equações diferenciais acopladas usando um algoritmo iterativo baseado nos
métodos de Runge-Kutta de 4ª e 5ª ordens. Aplique a função odeint para
resolver o sistema de equações diferenciais do Problema 1 e compare os
resultados obtidos. Para usar a função veja o exemplo do Anexo 2.

5
Anexo 1
Para usar o método de Runge-Kutta de 4ª Ordem para um sistema com três
equações diferenciais, deve-se lembrar que:

Kx1 = f(tk, x(k), y(k), z(k))


Ky1 = f(tk, x(k), y(k), z(k))
Kz1 = f(tk, x(k), y(k), z(k))
Kx2 = f(tk + ½ h, x(k) + ½ h Kx1, y(k) + ½ h Ky1, z(k) + ½ h Kz1)
Ky2 = f(tk + ½ h, x(k) + ½ h Kx1, y(k) + ½ h Ky1, z(k) + ½ h Kz1)
Kz2 = f(tk + ½ h, x(k) + ½ h Kx1, y(k) + ½ h Ky1, z(k) + ½ h Kz1)
Kx3 = f(tk + ½ h, x(k) + ½ h Kx2, y(k) + ½ h Ky2, z(k) + ½ h Kz2)
Ky3 = f(tk + ½ h, x(k) + ½ h Kx2, y(k) + ½ h Ky2, z(k) + ½ h Kz2)
Kz3 = f(tk + ½ h, x(k) + ½ h Kx2, y(k) + ½ h Ky2, z(k) + ½ h Kz2)
Kx4 = f(tk + h, x(k) + h Kx3, y(k) + h Ky3, z(k) + h Kz3)
Ky4 = f(tk + h, x(k) + h Kx3, y(k) + h Ky3, z(k) + h Kz3)
Kz4 = f(tk + h, x(k) + h Kx3, y(k) + h Ky3, z(k) + h Kz3)
x(k+1) = x(k) + 1/6 h (Kx1 + 2 Kx2 + 2 Kx3 + Kx4)
y(k+1) = y(k) + 1/6 h (Ky1 + 2 Ky2 + 2 Ky3 + Ky4)
z(k+1) = z(k) + 1/6 h (Kz1 + 2 Kz2 + 2 Kz3 + Kz4)
6
5
x(t)
y(t)

Anexo 2 0

valor
-5

Exemplo: resolver a equação diferencial


-10
ẋ=x–2
ẏ = x – 2y -15
0 0.5 1 1.5 2
x(0) = 0 tempo
y(0) = 1
Para tanto, cria-se a função chamada equ()para descrever a equação:

function xp = equ(t,x);
xp = zeros(2,1);
xp(1) = x(1) - 2;
xp(2) = x(1) - 2*x(2);

Para a obtenção da solução no intervalo [0,2] com as condições iniciais


acima, deve-se chamar a função ode45():
[t,x] = ode45('equ',[0 2],[0 1]);

Você também pode gostar