92
EQ/UFRJ Carlos André Vaz Junior [email protected] http://www.eq.ufrj.br/links/h2cin/carlosandre

EQ/UFRJ Carlos André Vaz Junior [email protected]

Embed Size (px)

Citation preview

Page 1: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Carlos André Vaz Junior

[email protected]

http://www.eq.ufrj.br/links/h2cin/carlosandre

Page 2: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Mais de 1 milhão de resultados

O mundo MATLAB

Page 3: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

?

http://newsreader.mathworks.com

Ajuda

Page 4: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Livros

Page 5: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Ambiente de Trabalho

Page 6: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Ambiente de Trabalho

Page 7: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Command Window

Page 8: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Agora a = 2, faço tudo de novo?!

Command Window

Page 9: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Arquivo de Programação: m-file

Page 10: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Current Directory

Page 11: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Current Directory

Page 12: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Criando variáveis

Char ArrayMatriz

Tipos Básicos

Case Sensitive!

Estrutura

CaSe SeNsItIvE!

Page 13: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Criando uma matriz:

Tipo Matriz

Page 14: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Criando um “char array”:

Tipo Char Array

Page 15: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Estrutura:

turma.alunos.nomes=strvcat( 'carla',’joao','bruno', ... 'luis', 'marcela‘ );turma.professor.nome=(‘Marcelo‘)turma.horario=1300turma.sala=221

Banco de Dados da “Turma”: Alunos: Carla, João, Bruno, Luis, Marcela Professor: Marcelo Horário: 13h Sala: 221

Tipo Estrutura

Page 16: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Comando “who” e “whos”

Comando “who” e “whos”

Page 17: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Use A=0:0.5:10 para gerar matrizes com dados em seqüência.

Use “;” para evitar que o resultado apareça na tela.

Dicas!

Use “clear A” para apagar a variável A.

Dicas!

Use “size(A) ” para identificar as dimensões da matriz. A maior dimensão é dada pelo comando “length(A) ”

Use “clear all” para apagar todas as variáveis armazenadas.

Page 18: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

i) Soma e subtração: soma (ou subtrai) elemento por elemento da matriz. A+B A-B ii) Multiplicação e Divisão de matrizes: atenção às regras da álgebra, pois as dimensões das matrizes têm que ser coerentes! A * B A / B iii) Multiplicação e divisão elemento por elemento:A .* BA ./ B

Operações Matemáticas Simples

Page 19: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

iv) Matriz Transposta:A’ v) Cria Matriz Identidade:eye(número de linhas, número de colunas) vi) Cria Matriz Zeros:zeros(número de linhas, número de colunas)

vii) Cria Matriz Uns:ones(número de linhas, número de colunas) viii) Cria Matriz Randômica (composta de números aleatórios):rand(número de linhas, número de colunas)

 

Operações Matemáticas Simples

Page 20: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

ix) Determinante:det(matriz) x) Inversa:inv(matriz) xi) Dimensões da matriz:size(matriz)lenght(matriz)numel(matriz)

 

Operações Matemáticas Simples

Veja também: flipud e fliplr

Page 21: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

1 5 9 13

2 6 10 14

3 7 11 15

4 8 12 16

Elemento = Matriz(2,3) ou Matriz(10)

Referenciar um Elemento de uma Matriz

Page 22: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Arquivo Function

Page 23: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

A=1B=2global CC=100

Função Alfa

E=15F=55C=23

Função Beta

Escopo das Variáveis

Programa Principal / Workspace

global CC=100D=22

Page 24: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

x=[1 2 3 4 5 6; 2 1 3 3 2 1];

%Forma linear: xmin=min(x); xmin=min(xmin); [i,j]=find(x==xmin);

Exemplo Rápido

Achando a posição do menor valor de uma matriz:

%Forma condensada: [i,j]=find(x==(min(min(x))));

Page 25: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

X = fzero('sin',2)

Exemplo Rápido

Achando o menor valor de uma função:

função estimativa inicial

Veja também: fsolve e fmin

Page 26: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Estruturas Lógicas

if:

Page 27: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Estruturas Lógicas

AND OR

Page 28: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Falso Verdadeiro

AND

a b resultado

1 1 1

0 1 0

1 0 0

0 0 0

OR

a b resultado

1 1 1

0 1 1

1 0 1

0 0 0

Estruturas Lógicas

Page 29: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Case:  switch I case 1, disp('I vale 1') case 2, disp('I vale 2') otherwise disp('I nao eh nem 1 nem 2') end

Estruturas Lógicas

Page 30: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

  While:  while I < 10, disp(‘oi’); I=I+1; end

Manipule o ponteiro I na rotina executadapelo “while”

Estruturas Lógicas

Page 31: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

     For:  for J = 1:100, A(1,J) = 1/(I+J-1); end

Incremento automático do ponteiro J a cada loop

Estruturas Lógicas

Page 32: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

     Try:  try

I = 15 J = ‘teste’

A= 1/(I+J-1); catch disp(‘Erro na divisão’)

end

Proteção Contra Erros

Page 33: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Break: 

i=0;

while i < 100,

i=i+1; disp(i)

if i>10, break end

end

Encerrando uma Rotina

Page 34: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

>> figure(1)

>> t=0:0.01:10;>> y=sin(t);>> plot(t,y)

>> figure(2)

>> z=cos(t);>> plot(t,z)

Gráficos

Page 35: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

>> figure(3)

>> subplot(1,2,1)

>> plot(t,y)

>> subplot(1,2,2)>> plot(t,z)

Gráficos

Page 36: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

>> t=0:0.25:10;>> y=sin(t);>> plot(t,y,'r+')>> xlabel('tempo')>> ylabel('seno')>> title('Seno vs. Tempo')>> Axis([0 10 -2 2])

Gráficos

Page 37: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

>> t=0:0.01:10;>> y=sin(t);>> z=cos(t);>> plot(t,y,'g-',t,z,'r-')>> legend('seno','cosseno')

Ou...

>> t=0:0.01:10;>> y=sin(t);>> z=cos(t);>> plot(t,y,'g-‘)>> hold on>> plot(t,z,'r-')>> legend('seno','cosseno')

Gráficos

Page 38: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

>> x = [1 3 0.5 2.5 2];

>> explode = [0 1 0 0 0];

>> pie(x,explode)

>> colormap jet

>> legend('EMB','IND','ACO','DIV','POT')

Gráficos - Tortas

Page 39: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

>> x = [1 3 0.5 2.5 2];

>> explode = [0 1 0 0 0];

>> pie3(x,explode)

>> colormap jet

>> legend('EMB','IND','ACO','DIV','POT')

Gráficos - Tortas

Page 40: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

>> x = -2.9:0.2:2.9;

>> bar(x,exp(-x.*x))

>> colormap hsv

Gráficos - Barras

Page 41: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Gráficos - Superfície

Page 42: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

xx=0:0.01:1;yy=0:0.01:1;[X,Y]=meshgrid(xx,yy);

Z=exp(-0.5*(X.^2+Y.^2));

colormap jetfigure(1);surf(X,Y,Z); rotate3d on; shading interp;

Gráficos - Superfície

Page 43: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Gráficos - Superfície

Page 44: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Gráficos - Superfície

Page 45: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

xx=0:0.01:1;yy=0:0.01:1;[X,Y]=meshgrid(xx,yy);

Z=X.*X.*Y;

colormap jetfigure(1);surf(X,Y,Z); rotate3d on; shading interp;

Gráficos - Superfície

Page 46: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Gráficos - Superfície

Page 47: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Gráficos - Superfície

Page 48: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

%Malha triangular da base %malha da base xx=0:0.01:1; yy=0:0.01:1; [X,Y]=meshgrid(xx,yy); Z=1-X-Y; %aplica a restrição para usar só a base do triangulo %onde existe consistência física (o que nao tem vira "Not a Number") iz=find(Z<0);Z(iz)=nan;

Gráficos - Superfície

Page 49: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

%Malha triangular da base %malha da base xx=0:0.01:1; yy=0:0.01:1; [X,Y]=meshgrid(xx,yy); Z=1-X-Y; %aplica a restrição para usar só a base do triangulo %onde existe consistência física (o que não tem vira "Not a Number") iz=find(Z<0);Z(iz)=nan;

Composição(3 componentes)

Gráficos - Superfície

Page 50: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

%Malha triangular da base %malha da base xx=0:0.01:1; yy=0:0.01:1; [X,Y]=meshgrid(xx,yy); Z=1-X-Y; %aplica a restrição para usar só a base do triangulo %onde existe consistência física (o que não tem vira "Not a Number") iz=find(Z<0);Z(iz)=nan;

Alguns Z sãonegativos! Não pode!

Gráficos - Superfície

Page 51: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

vv1=(X.*log(X))+(Y.*log(Y))+(Z.*log(Z));

%gráfico da superfíciecolormap jetfigure(1);surf(X,Y,vv1); rotate3d on; shading interp;xlabel('X1');ylabel('X2');zlabel('DeltaGi/RT');

Gráficos - Superfície

Page 52: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Gráficos - Superfície

Page 53: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Use “close all” para fechar todas as figuras

Dica!

Gráficos

Use “clf” para apagar a figura atual

Use “[x,y]=ginput(2)” para capturar dois pontos no gráfico

Page 54: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Exemplos

Page 55: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Exemplo1

Page 56: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

M o d e l a g e m & D i n â m i c a d e P r o c e s s o s

E x e m p l o 1 :M o d e l o s s i m p l e s - o t a n q u e d e n í v e l

1

h

F E

F

A

h

F E

F

A

h

F E

F

A

C o n s i d e r a n d o c o n s t a n t e s a v a z ã o d e a l i m e n t a ç ã o F E , a

d e n s i d a d e e a t e m p e r a t u r a T , e q u e o s i s t e m a e s t á s u j e i t o à

c o n d i ç ã o i n i c i a l :

00 hth ( 1 )

Modelagem simples de um tanque de nível

Page 57: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

M o d e l a g e m & D i n â m i c a d e P r o c e s s o s

M o d e l o s s i m p l e s - o t a n q u e d e n í v e l

p o d e - s e e s c r e v e r o b a l a n ç o d e m a s s a d o s i s t e m a

1

FFdt

tdmE

dt

tdhA

dttdm

FFAdt

tdhE

1

A i n d a ,

e , p o r t a n t o ,

( 2 )

( 3 )

( 4 )

Modelagem simples de um tanque de nível

Page 58: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

M o d e l a g e m & D i n â m i c a d e P r o c e s s o s

M o d e l o s s i m p l e s - o t a n q u e d e n í v e l

F r e q ü e n t e m e n t e , c o n s i d e r a - s e a v a z ã o d e s a í d a d o t a n q u e

p r o p o r c i o n a l à a l t u r a d a c o l u n a d e l í q u i d o é i n v e r s a m e n t e

p r o p o r c i o n a l a u m a r e s i s t ê n c i a a o e s c o a m e n t o ( R ) :

1

Rh

F

Rh

FAdt

tdhE

1

L o g o ,

( 5 )

( 6 )

Modelagem simples de um tanque de nível

Page 59: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

M o d e l a g e m & D i n â m i c a d e P r o c e s s o s

M o d e l o s s i m p l e s - o t a n q u e d e n í v e l

E s t e m o d e l o s i m p l e s d e u m t a n q u e d e n í v e l , s e m b a l a n ç o d e

e n e r g i a , p o s s u i u m a s o l u ç ã o a n a l í t i c a :

1

RA

t

E eRFth 1

P a r a s i m u l a r e s t e m o d e l o , b a s t a e s c o l h e r o s v a l o r e s d a s

c o n s t a n t e s R , A e F E , d a s c o n d i ç õ e s i n i c i a i s h 0 e t 0 .

A s i m u l a ç ã o d a s o l u ç ã o a n a l í t i c a d o m o d e l o d o t a n q u e d e

n í v e l é m o s t r a d a a s e g u i r .

( 7 )

Modelagem simples de um tanque de nível

Page 60: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

% Definição das constantes do modelo

R = 1; % h/m2

A = 2; % m2

Fe = 10; % m3/h

% Tempo de simulação

t = 0.0 : 0.01 : 10.0; % h

% Simulação da altura de líquido

h = R*Fe*(1 - exp(-t/(R*A))); % m

% Visualização da simulação

plot(t,h);

title('Simulação do tanque de nível');

xlabel('Tempo (h)');

ylabel('Altura (m)');

Modelagem simples de um tanque de nível

Page 61: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Verifique a consistência do calculo: a matriz “h” gerada também deve ser 1x1000, já que cada instante “t” gerou um valor “h”.

É sempre útil conferir a dimensão das variáveis, principalmente a medida que as

rotinas forem tornando-se complexas.

Dica!

Modelagem simples de um tanque de nível

Page 62: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Exemplo2

Page 63: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Muitas vezes é muito trabalhoso, ou mesmo impossível, encontrar a solução analítica para o conjunto de equações diferenciais. Nesse caso

temos que simular usando solução numérica das equações diferenciais. Vamos assumir que o

modelo do exemplo 1 não tivesse solução analítica, e então usar o Matlab para estudar o

comportamento da altura do nível com o tempo. A equação diferencial será:

M o d e l a g e m & D i n â m i c a d e P r o c e s s o s

M o d e l o s s i m p l e s - o t a n q u e d e n í v e l

F r e q ü e n t e m e n t e , c o n s i d e r a - s e a v a z ã o d e s a í d a d o t a n q u e

p r o p o r c i o n a l à a l t u r a d a c o l u n a d e l í q u i d o é i n v e r s a m e n t e

p r o p o r c i o n a l a u m a r e s i s t ê n c i a a o e s c o a m e n t o ( R ) :

1

Rh

F

Rh

FAdt

tdhE

1

L o g o ,

( 5 )

( 6 )

Modelagem de um tanque de nível via ED

Page 64: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

% Definição das constantes do modeloR = 1; % h/m2A = 2; % m2Fe = 10; % m3/h% Tempo de simulaçãot = 0.0 : 0.01 : 10.0; % h% Simulação da altura de líquido[t,h] = ode45('dhdt',t, 0,[],[R A Fe]);% Visualização da simulaçãoplot(t,h);title('Simulação do tanque de nível');xlabel('Tempo (h)');ylabel('Altura (m)');

function dh = dhdt(t,h,flag,par)R = par(1);A = par(2);Fe = par(3);dh = (Fe-(h/R))/A;

Modelagem de um tanque de nível via ED

Page 65: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Nesse caso temos uma equação diferencial, então deveremos usar uma função Matlab específica para a

resolução de eq. diferenciais. No caso temos a ODE45. A função ODE45 implementa um esquema de solução de

sistemas de EDO’s por método de Runge-Kutta de ordem média (consulte o help sobre ODE45 para

maiores detalhes).

[t,h] = ode45('dhdt',t, 0,[],[R A Fe]);

Modelagem de um tanque de nível via ED

Page 66: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Os parâmetros enviados entre parênteses são aqueles que devemos passar para a ODE45:

 -1º argumento de ode45 é uma string contendo o nome do

arquivo .m com as equações diferenciais. Neste caso, o arquivo chama-se dhdt.m.

-2º argumento é um vetor que pode conter (i) dois elementos:

os tempos inicial e final da integração, ou (ii) todos os valores de tempo para os quais deseja-se conhecer o valor da variável

integrada.

-3º argumento é o vetor contendo as condições iniciais das variáveis dependentes das EDO’s. Os valores dos elementos do vetor de condições iniciais precisam estar na mesma ordem em

que as variáveis correspondentes são calculadas na função passada como 1º argumento para ode45 (neste caso, dhdt.m). Nesse caso em particular só temos uma variável dependente,

assim temos uma única condição inicial.

Modelagem de um tanque de nível via ED

Page 67: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

-4º argumento é o vetor de opções de ode45. Há várias opções do método que podem ser ajustadas. Entretanto, não deseja-se alterar os valores-padrão. Neste caso, é passado um vetor vazio, apenas para marcar o lugar das opções.

 

-5º argumento é um vetor contendo parâmetros de entrada para a função dhdt.m. Observe que a função .m deve ler

esses parâmetros na ordem correta (recebe como variável local “par”).

 

Os resultados da simulação são obtidos nos dois parâmetros entre colchetes (t , h).

Modelagem de um tanque de nível via ED

Page 68: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

A codificação do arquivo .m segue o mesmo formato já explicado para funções porém com algumas particularidades.

No caso específico de um arquivo .m que deve ser chamado por uma função de solução EDO’s (todas as ODExx), a declaração

deste arquivo deve seguir a sintaxe:

function dy = nomefun(t, y, flag, arg1, ..., argN)

onde •dy é o valor da(s) derivada(s) retornadas•t e y são as variáveis independente e dependente, respectivamente.•Opcional: caso deseje-se receber outros parâmetros, a função deve receber um argumento marcador de lugar chamado flag. Após este, ela recebe quaisquer outros parâmetros.

Modelagem de um tanque de nível via ED

Page 69: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Exemplo3

Page 70: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

M o d e l a g e m & D i n â m i c a d e P r o c e s s o s

E x e m p l o 3 T a n q u e d e a q u e c i m e n t o

1

h

F E , T E

F , T

A

T h

T h

h

F E , T E

F , T

A

T h

T h

C o n s i d e r a n d o c o n s t a n t e s a v a z ã o d e a l i m e n t a ç ã o F E , a

t e m p e r a t u r a T h , o c o e fi c i e n t e g l o b a l d e t r a n s f e r ê n c i a d e c a l o r U e

a s p r o p r i e d a d e s d o fl u i d o e C p e q u e o s i s t e m a e s t á s u j e i t o à s

c o n d i ç õ e s i n i c i a i s :

00 hth 00 TtT

Modelagem de um tanque de aquecimento

Page 71: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

M o d e l a g e m & D i n â m i c a d e P r o c e s s o s

M o d e l o s s i m p l e s - t a n q u e d e a q u e c i m e n t o

C o m o n o c a s o a n t e r i o r , o b a l a n ç o d e m a s s a p o d e s e r e s c r i t o

c o m o :

1

Rh

FAdt

tdhE

1( 6 )

O b a l a n ç o d e e n e r g i a é e s c r i t o c o m o :

QFHHFdtVTd

C EEp ( 8 )

M o d e l a g e m & D i n â m i c a d e P r o c e s s o s

M o d e l o s s i m p l e s - t a n q u e d e a q u e c i m e n t o

1

dtdh

Tdt

dThA

dtdV

Tdt

dTV

dtVTd

( 9 )

QFHHFRh

FA

Tdt

dThAC EEEp

( 1 0 )

p

E

p

hEE

CU

AF

TC

UTA

TFhdt

dT

1( 1 1 )

Modelagem de um tanque de aquecimento

Page 72: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Matlab Real

dy(1) dh/dt

y(1) h

dy(2) dT/dt

y(2) T

Traduzindo as equações diferenciais para o Matlab:

Modelagem de um tanque de aquecimento

Page 73: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

% Definição das constantes do modeloR = 1; % h/m2A = 2; % m2Fe = 10; % m3/hCp = 0.75; % kJ/(kg . K)Ro = 1000; % kg/m3U = 150; % kJ/(m2 . s . K)Te = 530; % K Th = 540; % K % Tempo de simulaçãot = 0.0 : 0.01 : 10.0; % h % Simulação do modelo[t,y]=ode45('dydt',t,[(5/A) Th],[],[U A Ro Cp Fe R Te Th]); 

Modelagem de um tanque de aquecimento

Page 74: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

 % Visualização da simulaçãofigure(1);plot(t,y(:,1)); title('Tanque de aquecimento');xlabel('Tempo (h)'); ylabel('Altura (m)');figure(2);plot(t,y(:,2)); title('Tanque de aquecimento');xlabel('Tempo (h)'); ylabel('Temperatura (K)');

Modelagem de um tanque de aquecimento

Page 75: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

A única modificação em relação ao exemplo anterior é que estamos passando duas condições iniciais (pois

existem duas variáveis dependentes):

[t,y]=ode45('dydt',t,[(5/A) Th],[],[U A Ro Cp Fe R Te Th]);

Modelagem de um tanque de aquecimento

Page 76: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

A função .m tem o código apresentado a seguir: 

function dy = dydt(t,y,flag,par);U = par(1);A = par(2);Ro = par(3);Cp = par(4);Fe = par(5);R = par(6);Te = par(7);Th = par(8);dy(1) = (Fe-(y(1)/R))/A;dy(2) = (1/y(1))* ( ((Fe*Te/A)+(U*Th/(Ro*Cp)))... - ( y(2)*((Fe/A)+(U/(Ro*Cp)))) );dy = dy(:);

Modelagem de um tanque de aquecimento

Page 77: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

O vetor dy é criado como vetor linha (dy(1)) e (dy(2)). Porém temos que retornar como vetor coluna.

Use o comando:matriz coluna = matriz linha (:)

Dica!

Modelagem de um tanque de aquecimento

Page 78: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

figure(1);plot(t,y(:,1));title('Tanque de aquecimento');xlabel('Tempo (h)'); ylabel('Altura (m)');

Quando for fazer os gráficos no programa principal lembre-se que a primeira coluna de “dy”

refere-se a “h” e a segunda a “T”. Então para graficar h vs. tempo faça:

Dica!

Modelagem de um tanque de aquecimento

Page 79: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Exemplo4

Page 80: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Aplicando perturbações no CSTR

Page 81: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

As equações diferenciais que descrevem o processo são:

O modelo matemático do nosso reator CSTR tende ao estado estacionário. Ou seja, seus parâmetros tendem a ficar constantes no tempo infinito. Seria interessante introduzir perturbações em

algumas variáveis e observar como o reator se comporta.

Aplicando perturbações no CSTR

Page 82: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Uma perturbação degrau em uma entrada u do sistema é tal que:

 

u = u0 , t < tdegrauu = u0 + du, t > tdegrau

 

Ou seja: antes do degrau a entrada u vale u0. Após o tempo determinado para que o degrau ocorra (tdegrau) temos que u

passa a valer u0 + du.

Aplicando perturbações no CSTR

Page 83: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

% Definição das constantes do modeloU =50; % BTU/(h.ft2.R)A = 120; % ft2DH = -30000; % BTU/lbmRo = 50; % lb/ft3Cp = 0.75; % BTU/(lbm.R)E = 30000; % BTU/lbm R = 1.99; % BTU/(lbm.R)k0 = 7.08e10; % 1/h V =48; % ft3Te = 580; %R Th = 550; %RFe = 18; % ft3/h Cre = 0.48; % lbm/ft3 % Tempo de simulaçãot = 0.0 : 0.01 : 10.0; %h % Perturbação na vazão de entradatd = 5.0; %Tempo onde ocorre o degraufd = 2*Fe; %Valor assumido após o degrau

Programa principal:

continua...

Aplicando perturbações no CSTR

Page 84: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

% Condições iniciaisCr0 = 0.16; % lbm/ft3T0 = 603; %R % Simulação do modelo[t,y] = ode45('dcstrdeg',t,[Cr0 T0],[],[U A DH Ro Cp E R k0 V Te Th … Fe Cre],[td fd]);% Visualização da simulaçãofigure(1);plot(t,y(:,1)); title('CSTR com Reação Exotérmica');xlabel('Tempo (h)'); ylabel('Concentração de Reagente (lbm/ft3)');figure(2);plot(t,y(:,2)); title('CSTR com Reação Exotérmica');xlabel('Tempo (h)'); ylabel('Temperatura (R)');

Programa principal (continuação):

Aplicando perturbações no CSTR

Page 85: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

function dy = dcstrdeg(t,y,flag,par,deg); U = par(1); A = par(2);DH = par(3); Ro = par(4);Cp = par(5); E = par(6);R = par(7); k0 = par(8);V = par(9); Te = par(10);Th = par(11); 

Função “dcstrdeg”:

continua...

Aplicando perturbações no CSTR

Page 86: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

%Verifica a ocorrência de degrau:

if t >= deg(1)

Fe = deg(2);

else

Fe = par(12);

end;

 Cre = par(13);

 dy(1) = (Fe/V)*(Cre-y(1)) - k0*exp(-E/(R*y(2)))*y(1);

dy(2) = (Fe/V)*(Te-y(2)) + ((DH*k0*exp(-E/(R*y(2)))*y(1))/(Ro*Cp)) - ...

(U*A*(y(2)-Th)/(V*Ro*Cp));

dy = dy(:);

Função “dcstrdeg” (continuação):

Aplicando perturbações no CSTR

Page 87: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Exemplo5

Page 88: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Simulação em batelada

Uma das grandes vantagens no uso de ferramentas computacionais é reduzir o nosso esforço repetitivo, tarefa para a qual o computador é muito eficiente. Supomos que

temos um processo no qual gostaríamos de testar uma série de condições iniciais. Para cada nova condição inicial

teríamos de refazer todas as contas. Um esforço enorme! As linguagens de programação, e o Matlab em particular,

resolvem esse problema facilmente usando o já apresentado comando “for”.

Usaremos o mesmo reator CSTR do exemplo anterior.

Page 89: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

% Definição das constantes do modeloU =50; % BTU/(h.ft2.R)A = 120; % ft2DH = -30000; % BTU/lbmRo = 50; % lb/ft3Cp = 0.75; % BTU/(lbm.R)E = 30000; % BTU/lbm R = 1.99; % BTU/(lbm.R)k0 = 7.08e10; % 1/h V =48; % ft3Te = 580; %R Th = 550; %RFe = 18; % ft3/h Cre = 0.48; % lbm/ft3 % Tempo de simulaçãot = 0.0 : 0.01 : 10.0; %h % Condições iniciaisCr0 = [0.16 0.32 0.48 0.64]; % lbm/ft3T0 = 603; %R

Programa principal:

continua...

Simulação em batelada

Page 90: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

% Simulação e visualização do modelo em bateladacor = 'brmk';leg = ['Cr0=0.16'; 'Cr0=0.32'; 'Cr0=0.48'; 'Cr0=0.64'];

for aux = 1 : length(Cr0) [t,y] = ode45('dcstr',t,[Cr0(aux) T0],[], [U A DH Ro Cp E R k0 V… Te Th Fe Cre]); % Visualização da simulação figure(1); hold on; plot(t,y(:,1),cor(aux)); title('CSTR com Reação Exotérmica'); xlabel('Tempo (h)'); ylabel('Concentração de Reagente (lbm/ft3)'); figure(2); hold on; plot(t,y(:,2),cor(aux)); title('CSTR com Reação Exotérmica'); xlabel('Tempo (h)'); ylabel('Temperatura (R)');end; 

Programa principal (continuação):

continua...

Simulação em batelada

Page 91: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

figure(1); legend(leg);figure(2); legend(leg);hold off;

Programa principal (continuação):

A seqüência de cores usadas é dada pelo vetor “cor”, “letra a letra” através da flag. Consulte o comando “plot” para detalhes.

Dica!

Simulação em batelada

Page 92: EQ/UFRJ Carlos André Vaz Junior cavazjunior@gmail.com

EQ/UFRJ

Carlos André Vaz Junior

[email protected]

http://www.eq.ufrj.br/links/h2cin/carlosandre