Professional Documents
Culture Documents
cavj@bol.com.br
http://www.eq.ufrj.br/links/h2cin/carlosandre
Engenheiros e Qumicos
Engenheiro
Qumico
Qumico Industrial
Linguagens de Programa
Linguagens de Programao
Fortran
Visual Basic
Pascal
C++
Java
Matlab
Buscando Solues
Engenheiro Qumico
Qumico Industrial
Linguagens de Programao
Visual Basic
Pascal
C++
Java
Matlab
Engenheiro Qumico
Qumico Industrial
Linguagens de Programao
Visual Basic
Pascal
C++
Java
Matlab
O Mundo Matlab
Ajuda
?
http://newsreader.mathworks.com
Livros
Ambiente de Trabalho
Ambiente de Trabalho
Command Window
Command Window
Current Directory
Current Directory
Criando variveis
Tipos Bsicos
Matriz
Char Array
Case Sensitive!
Estrutura
CaSe SeNsItIvE!
Tipo Matriz
Criando uma matriz:
Tipo Estrutura
Estrutura:
turma.alunos.nomes=strvcat( 'carla',joao','bruno', ...
'luis', 'marcela );
turma.professor.nome=(Marcelo)
turma.horario=1300
turma.sala=221
Dicas!
Dicas
!
ix) Determinante:
det(matriz)
x) Inversa:
inv(matriz)
13
10
14
11
15
12
16
Arquivo Function
Funo Alfa
A=1
B=2
global C
C=100
Funo Beta
E=15
F=55
C=23
Exemplo Rpido
%Forma condensada:
[i,j]=find(x==(min(min(x))));
Exemplo Rpido
funo
estimativa inicial
Estruturas Lgicas
if:
if I == J
disp('so iguais!');
elseif (I-J) > 0
disp('I maior que J')
else
disp('I menor que J')
end
Estruturas Lgicas
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 Lgicas
While:
Estruturas Lgicas
For:
for J = 1:100,
A(1,J) = 1/(I+J-1);
end
Try:
try
I = 15
J = teste
A= 1/(I+J-1);
catch
disp(Erro na diviso)
end
Break:
i=0;
while i < 100,
i=i+1;
disp(i)
if i>10,
break
end
end
Grficos
>> figure(1)
>> figure(2)
>>
t=0:0.01:10;
>> y=sin(t);
>> plot(t,y)
>> z=cos(t);
>> plot(t,z)
Grficos
>> figure(3)
>> plot(t,y)
>> subplot(1,2,1)
>> subplot(1,2,2)
>> plot(t,z)
Grficos
>> 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])
Grficos
>>
>>
>>
>>
>>
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')
Grficos - Tortas
>> 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'
)
Grficos - Tortas
>> 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'
)
Grficos - Barras
>> x = -2.9:0.2:2.9;
>> bar(x,exp(-x.*x))
>> colormap hsv
Grficos - Superfcie
Grficos - Superfcie
Grficos - Superfcie
Composio
(3 componentes)
Grficos - Superfcie
Alguns Z so
negativos! No pode!
Grficos - Superfcie
v1=zeros(size(X));
for i=1:length(X)^2,
x1=X(i);
x2=Y(i);
x3=Z(i);
%calculo do v1 (vertical)
vv1=(x1*log(x1))+(x2*log(x2))+(x3*log(x3));
v1(i)=vv1;
end
%grfico da superfcie
colormap jet
figure(1);surf(X,Y,v1); rotate3d on; shading interp;
xlabel('X1');ylabel('X2');zlabel('DeltaGi/RT');
Grficos - Superfcie
v1=zeros(size(X));
Eixo Vertical
for i=1:length(X)^2,
x1=X(i);
x2=Y(i);
x3=Z(i);
%calculo do v1 (vertical)
vv1=(x1*log(x1))+(x2*log(x2))+(x3*log(x3));
v1(i)=vv1;
end
%grafico da superfice
colormap jet
figure(1);surf(X,Y,v1); rotate3d on; shading interp;
xlabel('X1');ylabel('X2');zlabel('DeltaGi/RT');
Grficos - Superfcie
v1=zeros(size(X));
for i=1:length(X)^2,
x1=X(i);
x2=Y(i);
x3=Z(i);
%calculo do v1 (vertical)
vv1=(x1*log(x1))+(x2*log(x2))+(x3*log(x3));Desenha a
v1(i)=vv1;
superfcie
end
%grafico da superfice
colormap jet
figure(1);surf(X,Y,v1); rotate3d on; shading interp;
xlabel('X1');ylabel('X2');zlabel('DeltaGi/RT');
Grficos - Superfcie
v1=zeros(size(X));
for i=1:length(X)^2,
x1=X(i);
x2=Y(i);
x3=Z(i);
%calculo do v1 (vertical)
vv1=(x1*log(x1))+(x2*log(x2))+(x3*log(x3));Aciona a
v1(i)=vv1;
rotao da
end
figura
%grafico da superfice
colormap jet
figure(1);surf(X,Y,v1); rotate3d on; shading interp;
xlabel('X1');ylabel('X2');zlabel('DeltaGi/RT');
Grficos - Superfcie
v1=zeros(size(X));
for i=1:length(X)^2,
x1=X(i);
x2=Y(i);
x3=Z(i);
%calculo do v1 (vertical)
vv1=(x1*log(x1))+(x2*log(x2))+(x3*log(x3));
v1(i)=vv1;
end
Superfcie
homogenia
%grafico da superfice
colormap jet
figure(1);surf(X,Y,v1); rotate3d on; shading interp;
xlabel('X1');ylabel('X2');zlabel('DeltaGi/RT');
Grficos - Superfcie
Grficos
Dica!
Exemplos
Exemplo
Otimizador
Otimizao de Parmetros
Otimizao de Parmetros
ycalc= a*exp((-(x-b).^2)./c );
Programa principal:
close all
clear all
global y tempo
%Dados Experimentais:
tempo=[0 1
y=
[0 1
2 3 4 5
3
6 7
9 10
5 9 11 9 5 3 1 0
11 ];
0 ];
(...)
Otimizao de Parmetros
Programa principal:
%Chama o otimizador:
Xotimo = fminsearch('objet',X0)
Otimizao de Parmetros
Funo Objetivo.m:
function [fobj,g] = objet(X,y,tempo)
global y tempo
g=[];
%Recebe os parametros a serem ajustados:
a
= X(1);
b = X(2);
c
= X(3);
x=tempo;
(...)
Otimizao de Parmetros
Funo Objetivo.m:
%Calcula o erro (diferenca entre o experimental
% e o modelo a cada instante de tempo)
e=y-ycalc;
e=e(:);
n=length(e);
w=eye(n);
fobj=e'*w*e;
% o erro eh um numero.
Otimizao de Parmetros
Exemplo
1
FE
h t 0 h0
(1)
1
dm t
FE F
dt
(2)
dm t
dh t
A
dt
dt
(3)
dh t
1
FE F
dt
A
(4)
Ainda,
e, portanto,
altura
da
coluna
de
lquido
inversamente
h
R
(5)
Logo,
dh t 1
h
FE
dt
A
R
(6)
h t RFE 1 e
t
RA
(7)
Dica!
Exemplo
2
dh t 1
h
FE
dt
A
R
(6)
function dh = dhdt(t,h,flag,par)
R = par(1);
A = par(2);
Fe = par(3);
dh = (Fe-(h/R))/A;
Exemplo
3
FE ,TE
Th
F,T
h t 0 h0
T t 0 T0
1
d :VT
como
dt
dT
dV
dh
dT
T
A h
T
dt
dt
dt
dt
h
dh t 1
dt
FE
dT T
h
C p A h
FE FE HE FH Q
dt de A
R como:
O balano
energia
escrito
VTT UT
FE
dT C1 d F
U
E E Fh H
FH
p
E
E
A
dt
h dtA
C p
C p
(9)
(6)
(10)
(8)
(11)
Real
dy(1)
dh/dt
y(1)
dy(2)
dT/dt
y(2)
% Tempo de simulao
t = 0.0 : 0.01 : 10.0; % h
% Simulao do modelo
[t,y]=ode45('dydt',t,[(5/A) Th],[],[U A Ro Cp Fe R Te Th]);
% Visualizao da simulao
figure(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)');
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(:);
Use o comando:
matriz coluna = matriz linha (:)
Dica!
Dica!
Exemplo
4
Aplicando perturbaes no
CSTR
Aplicando perturbaes no
CSTR
As equaes diferenciais que descrevem
o processo so:
Aplicando perturbaes no
CSTR
u = u0 ,
u = u0 + du,
t < tdegrau
t > tdegrau
Aplicando perturbaes no
CSTR
Programa principal:
% Definio das constantes do modelo
U =50; % BTU/(h.ft2.R)
A = 120; % ft2
DH = -30000; % BTU/lbm
Ro = 50; % lb/ft3
Cp = 0.75; % BTU/(lbm.R)
E = 30000; % BTU/lbm
R = 1.99; % BTU/
(lbm.R)
k0 = 7.08e10; % 1/h
V =48; % ft3
Te = 580; %R
Th = 550; %R
Fe = 18; % ft3/h
Cre = 0.48; %
lbm/ft3
% Tempo de simulao
t = 0.0 : 0.01 : 10.0; %h
continua...
Aplicando perturbaes no
CSTR
Programa principal (continuao):
% Condies iniciais
Cr0 = 0.16; % lbm/ft3
T0 = 603; %R
% Simulao do modelo
[t,y] = ode45('dcstrdeg',t,[Cr0 T0],[],[U A DH Ro Cp E R k0 V Te
Th
Fe Cre],[td fd]);
% Visualizao da simulao
figure(1);
plot(t,y(:,1)); title('CSTR com Reao Exotrmica');
xlabel('Tempo (h)'); ylabel('Concentrao de Reagente
(lbm/ft3)');
figure(2);
plot(t,y(:,2)); title('CSTR com Reao Exotrmica');
xlabel('Tempo (h)'); ylabel('Temperatura (R)');
Aplicando perturbaes no
CSTR
Funo dcstrdeg:
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);
continua...
Aplicando perturbaes no
CSTR
Funo dcstrdeg (continuao):
%Verifica a ocorrncia 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(:);
Exemplo
5
Simulao em
batelada
Simulao em
batelada
Programa principal:
% Definio das constantes do modelo
U =50; % BTU/(h.ft2.R)
A = 120; % ft2
DH = -30000; % BTU/lbm
Ro = 50; % lb/ft3
Cp = 0.75; % BTU/(lbm.R)
E = 30000; % BTU/lbm R = 1.99; % BTU/
(lbm.R)
k0 = 7.08e10; % 1/h V =48; % ft3
Te = 580; %R
Th = 550; %R
Fe = 18; % ft3/h
Cre = 0.48; % lbm/ft3
% Tempo de simulao
t = 0.0 : 0.01 : 10.0; %h
% Condies iniciais
Cr0 = [0.16 0.32 0.48 0.64]; % lbm/ft3
T0 = 603; %R
continua...
Simulao em
batelada
Programa principal (continuao):
% Simulao e visualizao do modelo em batelada
cor = 'brmk';
leg = ['Cr0=0.16'; 'Cr0=0.32'; 'Cr0=0.48'; 'Cr0=0.64'];
Simulao em
batelada
Programa principal (continuao):
figure(1); legend(leg);
figure(2); legend(leg);
hold off;
Dica!
Exemplo
6
Mundo Simulink
rea de programao:
Exemplo
Biblioteca
Sinks
Simulando...
D
I
C
A
Biblioteca
Sources
Biblioteca
Math
Nmero de termos
da multiplicao.
Multiplicao
de matrizes ou
termo a termo.
Tempo inicial
Tempo final
Tempo
inicial
Tempo
final
Sub-sistema
Sub-sistema
Biblioteca
Sinks
Cria a varivel
A no workspace
Cria a varivel
A no workspace
Formato da varivel
>> plot(tout,A)
Biblioteca
Source
Biblioteca
Math
Biblioteca
Math
Rodando um bloco:
CTRLR
Bloco MUX
Biblioteca Signals &