Você está na página 1de 9

Problemas de valor inicial e método de Euler

Bibliografia

Eteven C. Chapra
Applied Numerical Methods with Matlab for Engineers and Scientists – 3rd Edition
McGraw-Hill, 2012

Definições

O modelo do problema de queda livre de um bungee jumper é um exemplo de equação diferencial obtida
fenomenologicamente por meio da segunda lei de Newton

𝑑𝑑𝑑𝑑 𝑐𝑐𝑑𝑑
= 𝑔𝑔 − 𝑣𝑣 2
𝑑𝑑𝑑𝑑 𝑚𝑚

onde g é a constante gravitacional, m é a massa e 𝒄𝒄𝒅𝒅 é um coeficiente de arrasto. Tais equações, que são compostas
por uma função desconhecida e suas derivadas, são chamadas de equações diferenciais.
Na equação, a quantidade diferenciada v é chamada de variável dependente. A quantidade t em relação à qual
v é diferenciado é chamada de variável independente.
Quando a função envolve uma variável independente, a equação é chamada de equação diferencial ordinária
(ODE). Isso contrasta com uma equação diferencial parcial (PDE) que envolve duas ou mais variáveis independentes.
As equações diferenciais também são classificadas quanto à sua ordem. Por exemplo, a equação a anterior é
chamada de equação de primeira ordem porque a derivada mais elevada é a primeira derivada. Uma equação de
segunda ordem incluiria a segunda derivada. Por exemplo, a equação que descreve a posição x de um sistema
massa-mola-amortecedor é a equação de segunda ordem

𝑑𝑑 2 𝑥𝑥 𝑑𝑑𝑑𝑑
𝑚𝑚 2 + 𝑐𝑐 + 𝑘𝑘𝑘𝑘 = 0
𝑑𝑑𝑡𝑡 𝑑𝑑𝑑𝑑

onde m é massa, c é um coeficiente de amortecimento e k é uma constante de mola. Da mesma forma, uma equação
de enésima ordem incluiria uma derivada de enésima.
As equações diferenciais de ordem superior podem ser reduzidas a um sistema de equações de primeira
ordem, recaindo na representação no Espaço de Estados. A equação anterior poderia ser representada pelo seguinte
sistemas de equações diferenciais ordinárias de primeira ordem

𝑑𝑑𝑑𝑑
= 𝑣𝑣
𝑑𝑑𝑑𝑑
𝑑𝑑𝑑𝑑 𝑐𝑐 𝑘𝑘
= − 𝑣𝑣 − 𝑥𝑥
𝑑𝑑𝑑𝑑 𝑚𝑚 𝑚𝑚

A solução de uma equação diferencial ordinária é função da variável independente e dos parâmetros e deve
satisfazer a equação diferencial original. Para ilustrar esse conceito, considere o polinômio

𝑦𝑦 = −10𝑥𝑥 2 + 8.5𝑥𝑥 + 1
Diferenciando essa equação em relação a x, obtemos da seguinte EDO

𝑑𝑑𝑑𝑑
= −20𝑥𝑥 + 8.5
𝑑𝑑𝑑𝑑

Essa EDO também descreve o mesmo comportamento do polinômio, mas de uma maneira diferente. Em vez
de representar explicitamente os valores de y para cada valor de x, a EDO fornece a taxa de variação de y em relação
a x para todo valor de x.
O objetivo de fato é determinar a função original a partir da equação diferencial. Algumas EDO podem ser
resolvidas analiticamente por meio de uma integração indefinida. Por exemplo, esse caso resulta

𝑦𝑦 = �(−20𝑥𝑥 + 8.5)𝑑𝑑 𝑥𝑥 = −10𝑥𝑥 2 + 8.5𝑥𝑥 + 𝐶𝐶

que é idêntico à função original com uma exceção. Durante a diferenciação e a integração, perdemos o valor 1 da
constante na equação original e obtivemos o valor C na integração. Esse C é chamada de constante de integração. O
fato de uma constante arbitrária aparecer indica que a solução não é única.
Portanto, para especificar a solução completamente, uma equação diferencial é geralmente acompanhada de
condições auxiliares chamada valor inicial. Por exemplo, a equação diferencial original pode ser acompanhada pela
condição inicial em x = 0, y(0) = 1. Esse valore podem ser substituídos na equação anterior e permite determinar C = 1.
Portanto, a solução que satisfaz tanto a equação diferencial como a condição inicial especificada é

𝑦𝑦 = −10𝑥𝑥 2 + 8.5𝑥𝑥 + 1

Condições iniciais geralmente têm interpretações muito tangíveis para equações diferenciais de modelos .
Por exemplo, no problema do bungee jumper, a condição inicial reflete a velocidade vertical inicial. Ao lidar com uma
equação diferencial de ordem-n, n condições iniciais são necessárias para obter uma solução única. Se todas as
condições forem especificadas para o mesmo valor da variável independente (por exemplo, em x = 0 ou t = 0), o
problema será chamado de problema de valor inicial. Isso contrasta com problemas de valor-de-fronteira, onde a
especificação de condições ocorre para diferentes valores da variável independente.
Soluções da EDO

Modelos lineares possuem solução analítica explícita para sua EDO ou sistemas de EDOs. Uma forma de obtê-
las é por meio da solução da equação de estado via transformada de Laplace. Para PME501 cabe uma revisão sobre a
solução da equação de estado e de saída via Laplace.
Alguns sistemas não lineares simples também possuem solução analítica explícita para suas EDOs
No caso do bungee jumper para uma velocidade inicial v(0) = 0, a solução analítica pode ser obtida com o
auxílio do processamento simbólico do MATLAB

syms v(t) g cd m
f(t) = ( diff(v,1) == g - cd*v(t)^2/m )
dsolve ( f(t) , v(0) == 0 )

𝑔𝑔 𝑚𝑚 𝑔𝑔 𝑐𝑐𝑑𝑑 𝑒𝑒 𝑥𝑥 −𝑒𝑒 −𝑥𝑥


𝑣𝑣(𝑡𝑡) = � tanh �� 𝑡𝑡� em que tanh 𝑥𝑥 =
𝑒𝑒 𝑥𝑥 +𝑒𝑒 −𝑥𝑥
𝑐𝑐𝑑𝑑 𝑚𝑚

Considere os seguintes valores numéricos dos parâmetros

m = 68.1; % kg
tf = 20; % s
cd = 0.25; % kg/m
g = 9.81; % m/s^2
vi = 0; % m/s

O gráfico da solução pode ser obtido explicitando-se os valores dos parâmetros e usando a função ezplot

syms v(t)

f(t) = ( diff(v,1) == g - cd*v(t)^2/m )


[y] = dsolve ( f(t) , v(0) == vi )
ezplot(y,[0 tf])

Ou vetorialmente pelo resultado y.

t = linspace(0,tf,1000);

y = (g^(1/2)*m^(1/2)*tanh((cd^(1/2)*g^(1/2)*t)/m^(1/2)))/cd^(1/2);
plot(t,y)

Para as EDO não lineares que não possuem solução na forma fechada, utilizam-se soluções aproximadas por
técnicas numéricas iterativas, tais com o Método de Euler.
Método numérico de Euler

Métodos numéricos são aqueles em que o problema matemático é reformulado para que possa ser resolvido
por operações aritméticas. Isso pode ser ilustrado com o problema do bungee jumper fazendo com que a derivada da
velocidade seja aproximada por
𝑑𝑑𝑑𝑑 Δ𝑣𝑣 𝑣𝑣(𝑡𝑡𝑖𝑖+1 ) − 𝑣𝑣(𝑡𝑡𝑖𝑖 )
≅ =
𝑑𝑑𝑑𝑑 Δ𝑡𝑡 𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖

onde o tempo é discretizado nos instantes 𝑡𝑡𝑖𝑖 . A derivada no instante 𝑡𝑡𝑖𝑖 (declividade da curva nesse instante) é
substituída por uma aproximação.

Substituindo a aproximação da derivada na EDO do bungee jumper, resulta

𝑣𝑣(𝑡𝑡𝑖𝑖+1 ) − 𝑣𝑣(𝑡𝑡𝑖𝑖 ) 𝑐𝑐𝑑𝑑


= 𝑔𝑔 − 𝑣𝑣(𝑡𝑡𝑖𝑖 )2
𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 𝑚𝑚

que pode ser rearranjada como

𝑐𝑐𝑑𝑑
𝑣𝑣(𝑡𝑡𝑖𝑖+1 ) = 𝑣𝑣(𝑡𝑡𝑖𝑖 ) + �𝑔𝑔 − 𝑣𝑣(𝑡𝑡𝑖𝑖 )2 � (𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 )
𝑚𝑚

Note-se que dentro dos colchetes [ ] aparece a própria EDO do bungee jumper calculada no instante 𝑡𝑡𝑖𝑖 . Ou
seja,
𝑑𝑑𝑣𝑣𝑖𝑖
𝑣𝑣𝑖𝑖+1 = 𝑣𝑣𝑖𝑖 + Δ𝑡𝑡
𝑑𝑑𝑑𝑑

Sendo essa uma nomenclatura abreviada, onde 𝑣𝑣𝑖𝑖 = 𝑣𝑣(𝑡𝑡𝑖𝑖 ) e 𝑣𝑣𝑖𝑖+1 = 𝑣𝑣(𝑡𝑡𝑖𝑖+1 ) e Δ𝑡𝑡 = 𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 . Note que,
com essa equação recursiva, se você sabe o valor inicial da velocidade em algum momento 𝑡𝑡𝑖𝑖 , você pode calcular a
velocidade no tempo 𝑡𝑡𝑖𝑖+1 . Este novo valor de velocidade em 𝑡𝑡𝑖𝑖+1 pode, por sua vez, ser empregado para estender o
cálculo à velocidade em 𝑡𝑡𝑖𝑖+2 , e assim por diante.
Essa abordagem é formalmente chamada de método de Euler. Como exemplo, considere o caso do bungee
jumper e a solução recursiva pelo Excel para os seguintes parâmetros e Δ𝑡𝑡 = 2 𝑠𝑠.

m = 68.1; % kg
tf = 20; % s
cd = 0.25; % kg/m
g = 9.81; % m/s^2
vi = 0; % m/s
Valores numéricos Fórmulas
ti vi dvi g ti vi dvi g
0 0,0000 9,8100 9,81 0 0 =$F$3-$F$6*C3^2/$F$9 9,81
2 19,6200 8,3968 2 =C3 + D3*($B$4 - $B$3) =$F$3-$F$6*C4^2/$F$9
4 36,4137 4,9423 cd 4 =C4 + D4*($B$4 - $B$3) =$F$3-$F$6*C5^2/$F$9 cd
6 46,2983 1,9409 0,25 6 =C5 + D5*($B$4 - $B$3) =$F$3-$F$6*C6^2/$F$9 0,25
8 50,1802 0,5661 8 =C6 + D6*($B$4 - $B$3) =$F$3-$F$6*C7^2/$F$9
10 51,3123 0,1442 m 10 =C7 + D7*($B$4 - $B$3) =$F$3-$F$6*C8^2/$F$9 m
12 51,6008 0,0353 68,1 12 =C8 + D8*($B$4 - $B$3) =$F$3-$F$6*C9^2/$F$9 68,1
14 51,6713 0,0085 14 =C9 + D9*($B$4 - $B$3) =$F$3-$F$6*C10^2/$F$9
16 51,6883 0,0021 16 =C10 + D10*($B$4 - $B$3) =$F$3-$F$6*C11^2/$F$9
18 51,6924 0,0005 18 =C11 + D11*($B$4 - $B$3) =$F$3-$F$6*C12^2/$F$9
20 51,6934 0,0001 20 =C12 + D12*($B$4 - $B$3) =$F$3-$F$6*C13^2/$F$9
22 51,6937 0,0000 22 =C13 + D13*($B$4 - $B$3) =$F$3-$F$6*C14^2/$F$9
24 51,6937 0,0000 24 =C14 + D14*($B$4 - $B$3) =$F$3-$F$6*C15^2/$F$9
26 51,6937 0,0000 26 =C15 + D15*($B$4 - $B$3) =$F$3-$F$6*C16^2/$F$9
28 51,6938 0,0000 28 =C16 + D16*($B$4 - $B$3) =$F$3-$F$6*C17^2/$F$9
30 51,6938 0,0000 30 =C17 + D17*($B$4 - $B$3) =$F$3-$F$6*C18^2/$F$9

A comparação da solução pelo método de Euler com a solução analítica é mostrada no gráfico a seguir

m = 68.1; % kg
tf = 30; % s
cd = 0.25; % kg/m
g = 9.81; % m/s^2
vi = 0; % m/s
t = linspace(0,tf,100);

y = (g^(1/2)*m^(1/2)*tanh((cd^(1/2)*g^(1/2)*t)/m^(1/2)))/cd^(1/2);

data = [
0 0.0000 9.8100
2 19.6200 8.3968
4 36.4137 4.9423
6 46.2983 1.9409
8 50.1802 0.5661
10 51.3123 0.1442
12 51.6008 0.0353
14 51.6713 0.0085
16 51.6883 0.0021
18 51.6924 0.0005
20 51.6934 0.0001
22 51.6937 0.0000
24 51.6937 0.0000
26 51.6937 0.0000
28 51.6938 0.0000
30 51.6938 0.0000 ];

t1 = data( :, 1 );
y1 = data( :, 2 );

plot( t, y, t1, y1,'-*' ), grid


legend( 'analítica', 'Euler' )

Pode-se ver que o método numérico captura o comportamento geral da solução exata. No entanto, como
empregamos segmentos lineares para aproximar uma função de curva contínua, há discrepância entre os dois
resultados. Uma maneira de minimizar essas discrepâncias é usar um tamanho menor do passo. Por exemplo, para
um passo de 1 s resulta em um erro menor, fazendo com que os segmentos retos se aproximam da solução real.
facilmente. Assim, você pode determinar com precisão a velocidade do bungee jumper sem precisar resolver
analiticamente a equação diferencial.
Melhorias no modelo do bungee jumper

Ao desenvolver nosso modelo de jumper bungee, assumimos que o sentido descendente era positivo. Assim,
a EDO obtida é adequada para representar a dinâmica do movimento, pois o arrasto reduz a velocidade. Mas o que
acontece se o jumper tiver uma velocidade ascendente (ou seja, negativa)? Neste caso, a EDO continua a produzir
uma força de arrasto negativa porque não inclui o sentido da velocidade, implicando num resultado fisicamente
irrealista de que a resistência do ar atua para acelerar uma velocidade ascendente. Modifica-se então o modelo para
que ele funcione corretamente para as velocidades descendente e ascendente. Além disso, incluiremos no modelo a
posição instantânea do saltador.
O problema do sentido do arrasto é resolvido trocando 𝑣𝑣 2 por sgn(𝑣𝑣)𝑣𝑣 2 = 𝑣𝑣 |𝑣𝑣 |

𝑑𝑑𝑑𝑑 𝑐𝑐𝑑𝑑
= 𝑔𝑔 − 𝑣𝑣 |𝑣𝑣 |
𝑑𝑑𝑑𝑑 𝑚𝑚

Para se determinar a posição do saltador, basta acrescentar uma nova EDO, mas note que o sentido que
adotamos para posição positiva é para cima, logo

𝑑𝑑𝑑𝑑
= −𝑣𝑣
𝑑𝑑𝑑𝑑

Integrando esta equação pelo método de Euler, obtém-se

𝑑𝑑𝑥𝑥𝑖𝑖
𝑥𝑥𝑖𝑖+1 = 𝑥𝑥𝑖𝑖 + Δ𝑡𝑡 → 𝑥𝑥𝑖𝑖+1 = 𝑥𝑥𝑖𝑖 − 𝑣𝑣(𝑡𝑡𝑖𝑖 )Δ𝑡𝑡
𝑑𝑑𝑑𝑑

Nesta análise com modelo adequado para as velocidades descendente e ascendente, testaremos o modelo
modificado no Excel para o mesmo exemplo, mas com um valor inicial de 𝑣𝑣(0) = −40 m/s mantendo Δ𝑡𝑡 = 2 𝑠𝑠.

Valores numéricos
ti vi vdi xi dxi g
0 -40,0000 15,6837 0,0000 40,0000 9,81
2 -8,6326 10,0836 80,0000 8,6326
4 11,5346 9,3216 97,2651 -11,5346 cd
6 30,1777 6,4668 74,1960 -30,1777 0,25
8 43,1113 2,9870 13,8405 -43,1113
10 49,0853 0,9650 -72,3820 -49,0853 m
12 51,0154 0,2558 -170,5526 -51,0154 68,1

Fórmulas
ti vi vdi xi dxi g
0 -40 =$H$3-$H$6*ABS(C3)*C3/$H$9 0 =-C3 9,81
2 =C3 + D3*($B$4 - $B$3) =$H$3-$H$6*ABS(C4)*C4/$H$9 =E3 + F3*($B$4 - $B$3) =-C4
4 =C4 + D4*($B$4 - $B$3) =$H$3-$H$6*ABS(C5)*C5/$H$9 =E4 + F4*($B$4 - $B$3) =-C5 cd
6 =C5 + D5*($B$4 - $B$3) =$H$3-$H$6*ABS(C6)*C6/$H$9 =E5 + F5*($B$4 - $B$3) =-C6 0,25
8 =C6 + D6*($B$4 - $B$3) =$H$3-$H$6*ABS(C7)*C7/$H$9 =E6 + F6*($B$4 - $B$3) =-C7
10 =C7 + D7*($B$4 - $B$3) =$H$3-$H$6*ABS(C8)*C8/$H$9 =E7 + F7*($B$4 - $B$3) =-C8 m
12 =C8 + D8*($B$4 - $B$3) =$H$3-$H$6*ABS(C9)*C9/$H$9 =E8 + F8*($B$4 - $B$3) =-C9 68,1
A solução pelo método de Euler é mostrada no gráfico a seguir

data = [ 0 -40.0 15.6837 0.000 40.0000


2 -8.6326 10.0836 80.0000 8.6326
4 11.5346 9.3216 97.2651 -11.5346
6 30.1777 6.4668 74.1960 -30.1777
8 43.1113 2.9870 13.8405 -43.1113
10 49.0853 0.9650 -72.3820 -49.0853
12 51.0154 0.2558 -170.5526 -51.0154 ];

t1 = data(:,1);
y1 = data(:,2);
y2 = data(:,4);

subplot(2,1,1)

plot(t1,y1,'-*g'), grid
legend('velocidade')

subplot(2,1,2)

plot(t1,y2,'-*r'), grid
legend('posição')

Solução do modelo melhorado do bungee jumper por meio do Matlab

function vend = velocity1_fun(dt, ti, tf, vi)

% input:
% dt = passo (s)
% ti = instante inicial (s)
% tf = instante final (s)
% vi = velocidade inicial (m/s)
% output:
% vend = velocidade em tf (m/s)

t = ti; v = vi; n = (tf - ti) / dt;


for i = 1:n
dvdt = deriv(v);
v = v + dvdt * dt;
t = t + dt;
end
vend = v;
end

function dv = deriv(v)
dv = 9.81 - (0.25 / 68.1) * v*abs(v);
end
Veja a comparação das repostas para diferentes tamanhos do passo de integração Δ𝑡𝑡.

%% velocity1_fun(dt, ti, tf, vi)


clear, clc

%% soluções aproximadas pelo método de Euler


ti = 0;
tf = 12;
vi = 0;

dt = 2;
vfinal_1 = velocity1_fun(dt, ti, tf, vi);

dt = 0.0001;
vfinal_2 = velocity1_fun(dt, ti, tf, vi);

%% solução exata para vi = 0


m = 68.1; % kg
cd = 0.25; % kg/m
g = 9.81; % m/s^2

exata = (g^(1/2)*m^(1/2)*tanh((cd^(1/2)*g^(1/2)*tf)/m^(1/2)))/cd^(1/2);

%% Comparação
[ vfinal_1 vfinal_2 exata]

ans = 51.6008 50.6175 50.6175

Gerando uma animação com o Matlab

%% velocity1_movie.m
clear, clc, close all

ti = 0;
tf = 12;
vi = 0;
dt = 0.001;
plot(ti,vi), grid, hold on
axis([0 tf 0 60]);
i = 1;
M(i)=getframe;

for ta = 0:0.5:tf
vtf = velocity1_fun(dt, ti, ta, vi);
plot(ta,vtf,'*r');
vi = vtf; % vel atual = vel anterior
i = i+1;
M(i)=getframe;
end
close all

%% video
axis([0 tf 0 60]);
grid
n = 1;
fps = 4;
movie(M,n,fps)
Exercícios

1. Em vez da relação não linear para o arrasto no problema do bungee jumper, utilize uma relação linear -cv em que
c é um coeficiente de arrasto de primeira ordem (kg s). (a) Obtenha a solução explícita para o caso em que o jumper
esteja inicialmente em repouso (v = 0 em t = 0). (b) Obtenha a solução numérica pelo método de Euler. Use
c = 11,5 kg/s

2. Para o caso do bungee jumper com arrasto linear -cv, assuma que um primeiro jumper tenha massa de 70 kg e um
coeficiente de arrasto de 12 kg/s. Se um segundo jumper tiver um coeficiente de arrasto de 15 kg/s e uma massa de
80 kg, quanto tempo levará para o segundo jumper atingir a mesma velocidade que o primeiro jumper demora para
atingir em 9 s?

3. A quantidade de contaminante radioativo uniformemente distribuído contida em um reator fechado é medida por
sua concentração c (becquerel/litro ou Bq/L). O contaminante diminui a uma taxa de decaimento proporcional à sua
concentração; essa é a taxa de decaimento é -kc, onde k é uma constante e unidades dia-1. Portanto, um balanço de
massa para o reator pode ser escrito como

𝑑𝑑𝑑𝑑
= −𝑘𝑘𝑘𝑘
𝑑𝑑𝑑𝑑

(a) Use o método de Euler para resolver essa equação desde t = 0 até 1 d com k = 0,175 d-1. Use um passo de integração
de 0,1 d. A concentração em t = 0 é de 100 Bq/L. (b) Plote a solução em um gráfico de semilog (isto é, ln(c) versus t) e
determine sua inclinação. Interprete seus resultados.

4. Um tanque de armazenamento de grandes dimensões contém um líquido na profundidade y, onde y = 0 quando o


tanque está cheio pela metade. O líquido é retirado a uma taxa de fluxo constante Q para atender às demandas. O
conteúdo é reabastecido a uma taxa senoidal 3𝑄𝑄 sin2 (𝑡𝑡). A o modelo do sistema pode ser representado por

𝑑𝑑𝑑𝑑 𝑄𝑄 𝑄𝑄
= 3 sin2 (𝑡𝑡) −
𝑑𝑑𝑑𝑑 𝐴𝐴 𝐴𝐴

problema pode ser resolvido por Laplace? Discuta


Use o método de Euler para determinar a profundidade y desde
t = 0 até 10 d com um passo de 0,5 d. Os valores dos parâmetros
são A = 1250 m2 e Q = 450 m3/d. Suponha que a condição inicial
seja y = 0.

O resultado gráfico é mostrado na figura ao lado.

Você também pode gostar