Você está na página 1de 6

Lista B Aulas Prticas de Scilab

Equaes diferenciais
Introduo:
Considere um corpo de massa m e feito de um material cujo calor especfico presso constante seja cp. Este corpo est
inicialmente a uma temperatura T0, e imerso rapidamente em um meio a uma temperatura que est TF oC acima de T0
(TF constante). A rea de troca de calor A, e o coeficiente de troca de calor k. Seja ainda T a diferena entre a
temperatura do corpo e a temperatura inicial T0. Uma variao infinitesimal dT da diferena de temperatura T pode ser
calculada por:
mc p dT Ak T F T dt calor trocado no intervalo de tempo dt.
Reescrevendo a equao:

dT
Ak
TF T

dt
mc p
ou, chamando
T y

Ak
C
mc p

obtemos:

y C T F y

Foi estabelecida uma equao diferencial cuja soluo a diferena de temperatura T do corpo (diferena entre a
temperatura do corpo e a temperatura T0). Esta equao um modelo matemtico do aquecimento do corpo. Observe
que T = y aumenta at que o corpo entre em equilbrio trmico, ou seja, at que T = TF. A varivel T a varivel de
estado e est relacionada com a quantidade de calor acumulada no corpo de massa m.

Algoritmo de integrao numrica - Euler:


Considerando a seguinte equao diferencial:
f ( y (t ), u (t ))
y

A soluo numrica pelo mtodo de Euler (h o passo de integrao):


y(t+h)=y(t)+h.f (y(t),u(t))

No caso da equao y C T F y , obtemos:

y f ( y (t ), u (t )) C TF y , e como C constante e TF = u tambm constante:


y(t+h)=y(t)+h.f (y(t))

Algoritmo de integrao numrica - Runge Kutta:


Considerando a seguinte equao diferencial:
y f ( y (t ), u (t ))
A soluo numrica pelo mtodo de Runge Kutta :
k1=h.f ( y(t), u(t) )
k2=h.f ( y(t)+k1/2, u(t+h/2) )
k3=h.f ( y(t)+k2/2, u(t+h/2) )
k4=h.f ( y(t)+k3, u(t+h) )
y(t+h)=y(t)+(k1+2.k2+2.k3+k4)/6

No caso da equao y C T F y , obtemos:

y f ( y (t ), u (t )) C TF y , e como TF = u = constante:
k1 = h.f ( y(t))
k2 = h.f ( y(t)+k1/2)
k3 = h.f ( y(t)+k2/2)
k4 = h.f ( y(t)+k3)
y(t+h) = y(t)+(k1+2.k2+2.k3+k4)/6

Lista B Aulas Prticas de Scilab


Exemplo 1:

Arquivo numericoE.sce que calcula a soluo da equao diferencial abaixo, usando o mtodo de Euler, e que plota o
grfico de y (t ) em funo de t, e o grfico da soluo exata ye (t) em funo de t.

y (t ) 1 y (t ) / 2
Equao diferencial ordinria linear:
( o modelo desenvolvido na Introduo adotando-se C = 1/2 e TF = 1)
Instante inicial: t = 0

Instante final: tf = 10

Soluo analtica (exata) da equao diferencial:

Condio inicial: y (0) 0

ye (t ) 1 e t / 2

Implementao da funo funcao.sci (escrever no editor do Scilab, e salvar como funcao.sci):


function [ydot]=funcao(y)
ydot=(1-y)/2;
endfunction

Implementao do arquivo numericoE.sce (escrever no editor do Scilab, salvar como numericoE.sce e executar no
Scilab):
// Conjunto de comandos para solucao numerica de equacao diferencial dada pela funcao funcao.sci
// Apagando dados anteriores:
clear
// Carregando a equacao diferencial:
// Carregue a funo usando o comando Load do Scilab
// Instante inicial:
t(1)=0;
// Instante final:
tf=10;
// Condicao inicial:
y(1)=0;
// Valor inicial da solucao exata:
ye(1)=0;
// Passo de integracao (experimente alterar o passo):
h=0.5;
// Calculo de numero de passos):
n=round(tf/h);
// Integracao numerica usando o metodo de Euler:
// Comando for:
for i=1:n
// Vetor de tempo:
t(i+1)=t(i)+h;
// Solucao numerica:
y(i+1)=y(i)+h* funcao(y(i));
// Solucao exata:
ye(i+1)=1-%e^(-t(i+1)/2);
// Termino do comando for:
end
// Plotando solucao numerica y versus vetor de tempo t e solucao exata ye versus vetor de tempo t:
plot2d([t,t],[y,ye],[-1 -2]);
// Colocando uma legenda na parte inferior direito da figura (parametro 4):
legends(["Solucao numerica","Solucao exata"],[-1,-2],4)
// Colocando um titulo na figura e nomeando os eixos:
xtitle("Comparacao entre solucao numerica e solucao exata","Tempo t","Solucao")
// Abrindo uma nova janela de graficos:
set("current_figure",1);
// Desenhando outro grafico com linhas diferentes:
plot2d([t,t],[y,ye],[1 2]);
// Usando a variavel do tipo 'lista':
T=list("Comparacao
entre
solucao
numerica
e
solucao
exata","Tempo
t","Solucao","Solucao
numerica","Solucao exata");
// Colocando uma legenda na parte superior esquerda da figura (parametro 2):
legends([T(4),T(5)],[1,2],2);
// Colocando um titulo na figura e nomeando os eixos:
xtitle(T(1),T(2),T(3));

Observe que a soluo exata dada por meio de uma expresso analtica nem sempre existe ou est disponvel.

Lista B Aulas Prticas de Scilab


Exemplo 2:

Arquivo numericoR.sce que calcula a soluo da equao diferencial abaixo, usando o mtodo de Runge Kutta, e que
plota o grfico de y (t ) em funo de t, e o grfico da soluo exata ye(t) em funo de t.

y (t ) 1 y (t ) / 2
Equao diferencial ordinria linear:
( o modelo desenvolvido na Introduo adotando-se C = 1/2 e TF = 1)
Instante inicial: t = 0

Condio inicial: y (0) 0

Instante final: tf = 10
t / 2

ye (t ) 1 e
Soluo analtica (exata) da equao diferencial:
Implementao do arquivo numericoR.sce (escrever no editor do Scilab, salvar como numericoR.sce e executar no
Scilab):
// Conjunto de comandos para solucao numerica de equacao diferencial [1-y(i)]/2
// Apagando dados anteriores:
clear
// Instante inicial:
t(1)=0;
// Instante final:
tf=10;
// Condicao inicial:
y(1)=0;
// Valor inicial da solucao exata:
ye(1)=0;
// Passo de integracao (experimente alterar o passo):
h=0.5;
// Calculo de numero de passos):
n=round((tf-t(1))/h);
// Integracao numerica usando o metodo de Runge Kutta:
// Comando for:
for i=1:n
// Vetor de tempo:
t(i+1)=t(i)+h;
// Solucao numerica:
k1=h*(1-(y(i)))/2;
k2=h*(1-(y(i)+k1/2))/2;
k3=h*(1-(y(i)+k2/2))/2;
k4=h*(1-(y(i)+k3))/2;
y(i+1)=y(i)+((k1+2*k2+2*k3+k4)/6);
// Solucao exata:
ye(i+1)=1-%e^(-t(i+1)/2);
// Termino do comando for:
end
// Plotando solucao numerica y versus vetor de tempo t e solucao exata ye versus vetor de tempo t:
plot2d([t,t],[y,ye],[-1 -2]);
// Colocando uma legenda na parte inferior direito da figura (parametro 4):
legends(["Solucao numerica","Solucao exata"],[-1,-2],4)
// Colocando um titulo na figura e nomeando os eixos:
xtitle("Comparacao entre solucao numerica e solucao exata","Tempo t","Solucao")
// Abrindo uma nova janela de graficos:
set("current_figure", 1);
// Aumentando a espessura das linhas:
xset(thickness,2)
// Aumentando o tamanho da fonte:
xset(font size,4)
// Desenhando outro grafico com linhas diferentes:
plot2d([t,t],[y,ye],[1 2]);
// Usando a variavel do tipo 'lista':
T=list("Comparacao
entre
solucao
numerica
e
solucao
exata","Tempo
t","Solucao","Solucao
numerica","Solucao exata");
// Diminuindo a espessura das linhas:
xset(thickness,1)
// Colocando uma legenda na parte superior esquerda da figura (parametro 2):
legends([T(4),T(5)],[1,2],2);
// Colocando um titulo na figura e nomeando os eixos:
xtitle(T(1),T(2),T(3));
// Colocando uma grade no grafico:
xgrid(1)

Lista B Aulas Prticas de Scilab

Observe que, neste segundo exemplo, no definimos a funo que expressa a equao diferencial ( funcao.sci). A
expresso foi colocada diretamente no algoritmo de integrao. No foi necessrio, portanto, carregar uma funo pelo
comando Load do Scilab.

Lista B Aulas Prticas de Scilab


Exerccio:

Implemente um programa no Scilab que resolva numericamente a equao diferencial que modela o sistema
abaixo, tanto pelo mtodo de Euler como Runge Kutta.
Reservatrio com gua
Parmetros:
S = 10 m2 - rea da seo transversal (constante)
R = 2108 Pa/(m3/s)2 - parmetro que relaciona vazo com queda
de presso (perda de carga)
= 1000 kg/m3 - massa especfica da gua
G = 10 m/s2 - acelerao da gravidade na superfcie da terra

Qe

V
S

Qs

Variveis:
Qe = 0,010247 m3/s - vazo de entrada
h: nvel do reservatrio [m]
V: volume de gua no reservatrio [m3]
P: presso relativa atmosfrica, no fundo do reservatrio [Pa]
Qs: vazo de sada [m3/s]
Admite-se que a gua seja incompressvel.

P
R
Pela equao da continuidade:

Volume de gua no reservatrio:

dV
Qe Q s
dt

V Sh

Qs

V Sh

Substituindo:

Vamos admitir que a perda de carga na sada modelada


pela expresso:

P RQs2

P
R

Sh Qe

gh
R

Resultando na seguinte equao difererencial ordinria


no linear (modelo de 1 reservatrio):

1
gh
h
Qe
R

Por outro lado, a presso no fundo do reservatrio :


P gh
Considere uma entrada Qe constante.

Desenvolva um programa em Scilab que resolva numericamente o sistema de


equaes diferencias que modela o sistema com dois reservatrios, usando tanto
Euler como Runge Kutta. Dica: raciocine com vetores.

Qe

S1

h1

S2

V1

V2
P1

h2

P2
R1

Qo
R2

Lista B Aulas Prticas de Scilab

Modelo do sistema de 2 reservatrios (considere a entrada constante e perdas de carga


no lineares como no caso do ex. de 1 tanque).

g
h1 h2 1
h1 Qe
Ra

S1

h 2

g
h1 h2 g h2 1
Ra
Rs
S2

3 Estude a lista C.

Você também pode gostar