Você está na página 1de 15

Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa.

Ana Maria Frattini Fileti


1

AULA PRTICA 01 - FUNDAMENTOS DO MATLAB


O MATLAB um pacote computacional para realizao de clculos em engenharia, cincias e
matemtica aplicada. Ele oferece uma poderosa linguagem de programao, uma interface grfica
excelente e uma grande variedade de ferramentas especialistas.
O MATLAB um sistema interativo cujo elemento bsico de informao uma matriz que no
requer dimensionamento. Esse sistema permite a resoluo de muitos problemas numricos em apenas
uma frao do tempo que se gastaria para escrever um programa semelhante em linguagem Fortran,
Basic ou C. Alm disso, as solues dos problemas so expressas no MATLAB quase exatamente como
elas so escritas matematicamente.

Se uma expresso vlida for digitada e aps pressionando o ENTER, o MATLAB imediatamente
executa e retorna o resultado:

Note algumas expresses especiais:
pi (p), Inf () e i (
1
)
NaN representa valores indefinidos. Por exemplo:

Pode-se atribuir valores a variveis:

As variveis devem ter valores antes de serem utilizadas.


UNICAMP - Universidade Estadual de Campinas
FEQ - Faculdade de Engenharia Qumica
DESQ - Departamento de Engenharia de Sistemas Qumicos
O QUE O MATLAB?

Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
2


A utilizao do comando save meuarquivo gravar todas as variveis presentes no workspace em
um arquivo meuarquivo.mat no diretrio corrente. Para recuperar as variveis usa -se o comando load
meuarquivo. Se for clicado o boto direito do mouse na janela Command History e for selecionado
Create M-File, pode-se salvar todos os comandos digitados em um arquivo texto.

O caminho mais simples para construir uma matriz simplesmente colocar seus elementos em um
conjunto entre colchetes:

Os elementos das colunas so separados por espaos ou
vrgulas. As linhas so separadas por ponto -e-vrgulas.
Uma importante construo o uso do operador dois pontos (:)



Os elementos das matrizes podem ser qualquer expresso do MATLAB, por exemplo:
>> x = [-1.3 sqrt(2) ((1+2+3)*4/5)^2]
resulta em
x =
-l.3000 1.41422 3.0400
Um elemento individual da matriz pode ser reverenciado com ndice entre parnteses.
Continuando o exemplo:
>> x(6) = abs(x(l))
Produz:
x =
-1.3000 1.4142 23.0400 0 0 1.3000
VETORES E MATRIZES
GRAVANDO AS VARIVEIS E OS COMANDOS
Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
3
Note que a dimenso do vetor x aumentada automaticamente para acomodar o novo elemento e
que os elementos do intervalo indefinido so estabelecidos como zero.
Grandes matrizes podem ser construdas a partir de pequenas matrizes. Por exemplo, pode-se
anexar outra linha na matriz A usando:
>> r= [l0 11 12];
>> A= [A;r]
que resulta em
A = 1 2 3
4 5 6
7 8 9
10 11 13
Note que o vetor r no foi listado porque ao seu final foi acrescentado ";".
Pequenas matrizes podem ser extradas de grandes matrizes usando ";". Por exemplo:
>> A = A(1:3,:);
Seleciona as trs primeiras linhas e todas as colunas da matriz A atual, modificando-a para sua
forma original.

As operaes com matrizes no MATLAB so as seguintes:
Adio,Subtrao,Multiplicao, Diviso,Exponenciao e Transposta.
A seguir cada uma dessas operaes mostrada com mais detalhe.
Transposta
O caracter apstrofo, " ' " , indica a transposta de uma matriz. A declarao
>> A = [1 2 3; 4 5 6; 7 8 0]
>> B = A'
A = 1 2 3
4 5 6
7 8 0
B = 1 4 7
2 5 8
3 6 0

e
>> x = [-1 O 2]'
produz
x =
-1
0
2

Se Z uma matriz complexa, Z ser o conjugado complexo composto. Para obter simplesmente a
transposta de Z deve-se usar Z., como mostra o exemplo
>> Z = [1 2; 3 4] + [5 6; 7 8]*i
>> Z1 = Z
OPERAES COM MATRIZES
Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
4
>> Z2 = Z.
Que resulta em
Z =
1.0000 + 5.0000i 2.0000 + 6.0000i
3.0000 + 7.0000i 4.0000 + 8.0000i

Z1 =
1.0000 - 5.0000i 3.0000 - 7.0000i
2.0000 - 6.0000i 4.0000 - 8.0000i

Z2 = 1.0000 + 5.0000i 3.0000 + 7.0000i
2.0000 + 6.0000i 4.0000 + 8.0000i
Adio e Subtrao
A adio e subtrao de matrizes so indicadas, respectivamente, por "+" e "-". As operaes so
definidas somente se as matrizes as mesmas dimenses. Por exemplo, a soma com as matrizes
mostradas acima, A + x, no correta porque A 3x3 e x 3x1. Porm,
>> C = A + B
aceitvel, e o resultado da soma
C =
2 6 10
6 10 14
10 14 0
A adio e subtrao tambm so definidas se um dos operadores um escalar, ou seja, uma
matriz l x l. Neste caso, o escalar adicionado ou subtrado de todos os elementos do outro operador.
Por exemplo:
>> y = x - 1
Resulta em
y =
-2
-1
1

Multiplicao
A multiplicao de matrizes indicada por "*". A multiplicao x*y definida somente se a
segunda dimenso de x for igual primeira dimenso de y. A multiplicao:
Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
5
>> x'* y
aceitvel, e resulta em
ans =
4
evidente que o resultado da multiplicao y'*x ser o mesmo.
Diviso
Existem dois smbolos para diviso de matrizes no MATLAB "\" e "/". Se A uma matriz
quadrada no singular, ento A\B e B/A correspondem respectivamente multiplicao esquerda e
direita da matriz B pela inversa da matriz A, ou inv(A)*B e B*inv(A)N, mas o resultado obtido
diretamente. Em geral,
X = A\B a soluo de A*X = B
X = B/A a soluo de X*A = B
Por exemplo, como o vetor b foi definido como A*x, a declarao:
>> z = A\b
resulta em
z =
-1
0
2


As funes matemticas so representadas no MATLAB por arquivos ".m". Por exemplo, a funo
est disponvel no MATLAB como um arquivo ".m" chamado humps.m:
function y = humps(x)
y = l ./ ((x-.3).^2 + .0l) + 1./((x-.9).^2 + .04) - 6;
O grfico da funo :
>> x = -l:0.0l:2; >> plot(x,humps(x))

FUNES
Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
6
Integrao Numrica
A rea abaixo da curva pode ser determinada atravs da integrao numrica da funo
humps(x), usando o processo chamado quadratura. Integrando a funo humps(x) de -1 a 2:
>> q = quad (humps,-1,2)
q =
26.3450
Os dois comandos do MATLAB para integrao usando quadratura so:
quad Calcular integral numericamente, mtodo para baixa ordem.
quad8 Calcular integral numericamente, mtodo para alta ordem.
Equaes No-Lineares e Otimizao
Os dois comandos para equaes no-lineares e otimizao incluem:
fminbnd Minimizar funo de uma varivel.
fminsearch Minimizar funo de vrias variveis
fzero Encontrar zero de funo de uma vari vel.
Continuando o exemplo, a localizao do mnimo da funo humps(x) no intervalo de 0.5 a 1
obtido da seguinte maneira:
>> xm = fminbnd(humps,0.5,1)
xm =
0.6370
>> ym = humps(xm)
ym =
11.2528
E o grfico deste intervalo com o ponto de mni mo pode ser construdo:
>> x = 0.5:0.01:1
>> plot(x, humps(x), xm, ym, o)

Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
7
Pode-se ver que a funo humps(x) apresenta dois "zeros" no intervalo de -1 a 2. A localizao do
primeiro "zero" prxima do ponto x = 0,
xzl = fzero('humps',0)
xzl =
-0.1316
e a localizao do segundo "zero" prxima do ponto x= 1,
>> xz2=fzero('humps',1)
xz2 =
1.2995
O grfico da funo com os dois "zeros" obtido atravs da expresso:
>> x = -1:0.01:2
>> plot(x, humps(x), xzl, humps(xzl),'*', xz2, humps(xz2), '+'), grid


A construo de grficos no MATLAB mais uma das facilidades do sistema. Atravs de
comandos simples pode-se obter grficos bidimensionais ou tridimensionais com qualquer tipo de escala
e coordenada. Existe no MATLAB uma vasta biblioteca de comandos grficos.
Grficos Bidimensionais
Estes so os comandos para plotar grficos bidimensionais:
plot Plotar linear. errorbar Plotar erro.
loglog Plotar em escala loglog. hist Plotar histograma.
semilogx Plotar em semilog. rose Plotar histograma em ngulo.
semilogy Plotar em semilog. compass Plotar em forma de bssola.
fill Desenhar polgono 2D. feather Plotar em forma de pena.
polar Plotar em coordenada polar. fplot Plotar funo.
bar Grfico de barras. comet Plotar com trajetria de cometa.
stem Seqncia discreta.
stairs Plotar em degrau.
GRFICOS
Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
8
Se Y um vetor, plot(Y) produz um grfico linear dos elementos de Y versos o ndice dos
elementos de Y. Por exemplo, para plotar os nmeros [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0,14], entre com o
vetor e execute o comando plot:


>> Y = [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0,14];
>> plot(Y)
e o resultado mostrado na Janela Grfica:


Se X e Y so vetores com dimenses iguais,
o comando plot(X,Y) produz um grfico
bidimensional dos elementos de X versos os
elementos de Y, por exemplo
>> t = 0:0.05:4*pi;
>> y = sin(t);
>> plot(t,y)
resulta em



O MATLAB pode tambm plotar mltiplas linhas e apenas um grfico. Existem duas maneiras, a
primeira usado apenas dois argumentos, como em plot(X,Y), onde X e/ou Y so matrizes. Ento:
Se Y uma matriz e X um vetor, plot(X,Y) plota sucessivamente as linhas ou colunas de Y versos
o vetor X.
Se X uma matriz e Y um vetor, plot(X,Y) plota sucessivamente as linhas ou colunas de X
versos o vetor Y.
Se X e Y so matrizes com mesma dimenso, plot(X,Y) plota sucessivamente as colunas de X
versos as colunas de Y.
Se Y uma matriz, plot(Y) plota sucessivamente as colunas de Y versos o ndice de cada elemento
da linha de Y.
A segunda, e mais fcil, maneira de plotar grficos com mltiplas linhas usando o comando plot
com mltiplos argumentos. Por exemplo:
>> plot(t, sin(t), t, cos(t), t, sin(t + pi), t, cos(t + pi))
Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
9

Estilos de Linha e Smbolo
Os tipos de linhas, smbolos e cores usados para plotar grficos podem ser controlados se os
padres no so satisfatrios. Por exemplo,
>> X = 0:0.05:1;
>> subplot(l2l), plot(X,X.^2,k*)
>> subplot(l22), plot(X,X.^2,k --)

Outros tipos de linhas, pontos e cores tambm podem ser usados:
TIPO DE LINHA TIPO DE PONTO CORES
_ _______________ . ....................... y amarelo
-- -------------------- * * * * * * * * * m lils
-. -.-.-.-.-.-.-.-.-.-.-.-. c azul claro
. .............................. + ++++++++++ r vermelho

x xx x x x x x x g verde

b azul escuro

w branco

k preto


Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
10
Plotando Grficos Tridimensionais e Contornos
Estes so alguns comandos para plotar grficos tridimensionais e contornos.
Plot3 Plotar em espao 3D. meshc Combinao mesh/contour.
fill3 Desenhar polgono 3D. surf Plotar superfcie 3D.
comet3
Plotar em 3D com trajetria
de cometa.
surfc Combinao surf/contour.
contour Plotar contorno 2D. surfil Plotar superfcie 3D com iluminao.
contour3 Plotar contorno 3D. slice Plot visualizao volumtrica.
clabel Plotar contorno com valores. cylinder Gerar cilindro.
quiver Plotar gradiente. sphere Gerar esfera.
mesh Plotar malha 3D.

O comando mesh(X,Y,Z) cria uma perspectiva tridimensional plotando os el ementos da matriz Z
em relao ao plano definindo pelas matrizes X e Y. Por exemplo,
>> [X,Y] = meshgrid(-2:.2:2, -2:.2:2);
>> Z = X.* exp(-X..^2 - Y.^2);
>> mesh(X,Y,Z)
Outro Exemplo:
[X,Y] = meshgrid(-8:.5:8);
R=sqrt(X.^2 + Y.^2)+eps;
Z = sin(R)./R;
mesh(Z)

e o comando contour(Z,10) mostra a projeo da superfcie acima no plano xy com 10 iso-linhas:

Um polinmio em MATLAB escrito como um vetor onde seus elementos so os coeficientes em
ordem descrescente. Por exemplo o f(x) = x5 + 2x4 + 5x2 -7x + 14 pode ser descrito como o vetor:
POLINMIOS NO MATLAB
Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
11
p = [1 2 0 5 -7 14];
O valor do polinmio pode ser avaliado para x = 2 utilizando o comando polyval.
polyval(p,2)
ans = 84
polyval retornar uma matriz se uma matriz for usada como argumento. A funo pode ser
plotada para -3 < x < 1 usando
x = -3:0.1:1; plot(x,polyval(p,x))
Neste exemplo, o comando polyval usado dentro do comando plot. As razes do polinmio so
encontradas usando roots
roots(p)
ans =
-2.9934
-0.4179 + 1.6435i
-0.4179 - 1.6435i
0.9145 + 0.8888i
0.9145 - 0.8888i
Para adaptar um polinmio a um conjunto de dados. Assumindo que desejamos aproximar um
polinmio de 5a ordem a no intervalo de tempo -2 < t < 3, para a funo exponencial.
t = -2:3; y = exp(t);
Para um conjunto de pontos t, y pode-se ajustar um polinmio utilizando-se o comando polyfit.
c = polyfit(t,y,5)
c = 0.0169 0.0492 0.1283 0.4939 1.0300 1.0000
onde c so os coeficientes ( em ordem decrescente )
Um grfico do polinmio no intervalo -4 < t < 5.
tp = -4:0.1:5;
yp = polyval(c,tp);
plot(tp,yp, tp,exp(tp),':', t,y,'g*')


A transformada de Laplace realiza a operao


0
) ( ) ( dt e t x s X
st
para transformar x(t), no
domnio do tempo, em X(s), no domnio de s.
Exemplo Clculo da transformada de Laplace da funo coseno amortecida
wt e
at
cos


utilizando o MATLAB:
TRANSFORMADAS DE LAPLACE x(t) X(s)
Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
12

syms a s t w (criao de objetos simblicos)
xt = exp(-a*t)*cos(w*t) (cria uma expresso x(t))
xt = exp(-a*t)*cos(w*t)
Xs = laplace(xt,t,s) (Encontra a Transf. de Laplace, x(t) p X(s))
Xs = (s+a)/((s+a)^2+w^2)
>> pretty(Xs)

- Clculo da transformada inversa de Laplace, X(s) x(t) - Comando do Matlab: ilaplace.

Exemplo 1 - Calcular a transformada
inversa de Laplace do sinal
5
1
) (

s
s X .
syms s t
ilaplace(1/(s-5))
ans = exp(5*t)

Exemplo 2 - Calcular a
transformada inversa de Laplace do
sinal
4
1
) (
2
+
+

s
s
s X
syms s t
ilaplace( ( (s+1) / (s^2 + 4) ) )
ans =cos(2*t)+1/2*sin(2*t)


1) Calcular as Transformadas de Laplace das funes:
a) ) t 2 cos( 5 ) t 2 sen( 6 ) t ( x c) ) t 8 sen( 21 ) t ( x
b)
t 2
e 4 ) t ( x d) ) t 5 cos( 3 ) t ( x

2) Calcular as Transformadas de Laplace Inversas:
a)
1 s
1
) s ( X
+
c)
1
]
1

,
_

,
_

1 s
s
1 s
1
) s ( X
2

b)
3
s
2
) s ( X d)
3 s
4
1 s
2
) s ( X
+

+


A representao no Matlab de uma funo de transferncia do
tipo:
0 1
2
2
0 1
) (
) (
) (
d s d s d
n s n
s den
s num
s G
+ +
+
efetuada da seguinte forma:
num=[n
1
n
0
];
den=[d
2
d
1
d
0
];
Para se visualizar a funo de transferncia, utiliza-se o seguinte comando:
printsys(num,den) ou sys=tf(num,den)
FUNES DE TRANFERNCIA
TAREFA 1
Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
13
As razes de um polinmio podem ser calculadas atravs do comando:
roots(den)
Outra forma de se calcular os plos de uma funo de transferncia :
sys=tf(num,den)
pole(sys)
Para se calcular os coeficientes do polinmio a partir das razes:
poly([r
1
;r
2
;r
3
])
O mapa de plos e zeros pode ser obtido por:
pzmap(num,den)
O sistema resultante da associao em srie de duas funes de transf. pode ser obtido por:
[num,den]=series(num1,den1,num2,den2)
O sistema resultante da associao em paralelo de duas funes de transf. pode ser obtido por:
[num,den]=parallel(num1,den1,num2,den2)
Para a representao de uma funo de transferncia em expanso de fraes parciais
desenvolve-se o procedimento da do como exemplo:
num=[3 10];
den=[1 3 2];
sys=tf(num,den)
[r,p,k]=residue(num,den)

Esta a representao em Matlab da seguinte expanso em fraes parciais da expresso
num/den, onde: 0
2
4
1
7
2 3
10 3
2
+
+

+
+

+ +
+
s s s s
s

A realimentao (malha fechada) representada pela figura abaixo possui a funo de
transferncia:
) ( ) ( 1
) (
2 1
1
s G s G
s G
G
mf
+
.
A sintaxe usada :
[nummf,denmf]=feedback(num1,den1,num2,den2,sign)
No caso em que a realimentao for unitria a funo de
transferncia fica sendo:
) ( 1
) (
1
1
s G
s G
G
mf
+

Assim
[nummfu,denmfu]=cloop(num,den,sign)
O parmetro sign 1 para realimentao negativa e +1 para positiva. O valor padro negativo.
Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
14
A trajetria dos plos em uma malha com realimentao negativa com diversos valores de K pode
ser obtida por: rlocus(num,den)

Dados os sistemas:
Sistema 1 -
1
1
) (
+

s
s G Sistema 2 -
5
5
) (
+

s
s G Sistema 3
1
1
) (

s
s G
Sistema 4 -
1 2
1
) (
2
+ +

s s
s G Sistema 5 -
10 2
10
) (
2
+ +

s s
s G Sistema 6 -
1
1
) (
2
+

s
s G
Sistema 7 -
2 2
1
) (
2

+

s s
s
s G
1) Encontre os zeros e os plos de cada um dos sistemas.
2) Multiplique os sistema 1 e 2 e apresente a funo de transferncia resultante, seus zeros e plos.
3) Adicione o sistema 1 ao 2 e apresente a funo de transferncia resultante, seus zeros e plos
4) Implemente uma malha de realimentao unitria negativa nos sistemas 2, 5 e 7, apresentando a
funo de transferncia em malha fechada, seus zeros e seus plos.


Comando para degrau unitrio: step(num,den)
Comando para rampa unitria:
t=0:0.1:100;
u=t;
[y,x]=lsim(num,den,u,t);
plot(t,y,t,u);

1) Considerando a funo de transferncia:
6 11 6
6 3 5 2
) (
2 3
2 3
+ + +
+ + +

s s s
s s s
s G . Apresent-la expandida
em fraes parciais.
2) Utilizando os mesmos sistemas da tarefa 2:
a. Apresente graficamente a resposta ao degrau de cada um dos sistemas, com realimentao
unitria negativa.
b. Faa uma tabela com os valores dos ganhos obtidos para cada um dos sistemas.
c. Apresente graficamente o erro estacionrio de cada um dos sistemas, com realimentao
unitria negativa, para uma entrada do tipo rampa.
RESPOSTA DINMICA PERTURBAO DEGRAU UNITRIO E RAMPA UNITRIA

TAREFA 2
TAREFA 3
Controle de Processos - Prof. Flvio Vasconcelos da Silva e Profa. Ana Maria Frattini Fileti
15

Aproximao de Pad: 1 Ordem:
s
t
s
t
e
d
d
s t
d
2
1
2
1
+

2 Ordem:
12 6
12 6
2 2
2 2
+ +
+

s t s t
s t s t
e
d d
d d
s t
d

Comandos:
num=[1];
den=[1 1];
y1=tf(num,den);
[num1,den1]=pade(2,1); obs: 2tempo morto e 1ordem de aproximao
y2=tf(num1,den1);
sistema=y1*y2;
step(sistema)

Apresentar a resposta ao sinal degrau de um processo com funo de transferncia
s
e
s s s s
s s
s G
5
2 3 4
2
811 . 12 18 3223 . 11 6
811 , 12 18 3223 , 6
) (

+ + + +
+ +
.Neste caso, realizar testes de aproximao de Pad
para o atraso de transporte de 1 ordem at 3 ordem apresentando um grfico comparativo.
TAREFA 4
TEMPO MORTO