You are on page 1of 31

MATLAB Ferramenta matemtica para Engenharia

Luciano Andr Farina Maurcio Simes Posser


Laboratrio de Controle e Integrao de Processos

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Qumica Semana Acadmica de Engenharia Qumica

AULA 1 - CONCEITOS BSICOS 1. 2. 3. 4. 5. 6. O QUE O MATLAB - ESTRUTURA DOS DIRETRIOS COMANDOS DE LINHAS COMANDOS BSICOS SMBOLOS E CONSTANTES TRABALHANDO COM MATRIZES GRFICOS

3 3 3 3 3 3 4 7 7 7 8 9 9 10 11 11 13 13 15 16 18 21 21 25 28

AULA 2 PROGRAMAO 1. 2. 3. 4. 5. 6. ALGORITMOS NOES BSICAS DE PROGRAMAO M-FILES COMANDOS DE FLUXO E OPERADORES LGICOS VETORIZAO UTILIZAO DO DEBUGGER EXCELLINK

AULA 3 OUTRAS FORMAS DE MANIPULAR INFORMAES 1. OUTRAS FORMAS DE ARMAZENAR DADOS:

AULA 4 SIMULINK 1. 2. 3. 4. IDIA BSICA DO FUNCIONAMENTO DO SIMULINK MSCARAS S-FUNCTIONS TABELAS DE AUXLIO

AULA 5 TOOLBOXES & GUIDE 1. 2. TOOLBOXES GUIDE

LISTA DE EXERCCIOS

BIBLIOGRAFIA RECOMENDADA

31

Aula 1 - Conceitos Bsicos


1. O que o MATLAB - Estrutura dos diretrios
MATLAB uma abreviao para MATrix LABoratory, um ambiente de programao de alto nvel, possuindo caractersticas de aplicativo (facilidade para o usurio) e de linguagem de programao (flexibilidade). Ao contrrio de linguagens clssicas como C e Fortran, no ambiente MATLAB o usurio no se preocupa com itens como declarao de variveis, alocao de memria, utilizao de ponteiros e outras tarefas de rotina. O MATLAB apresenta uma srie de funes matemticas j implementadas que podem ser utilizadas em uma rotina construda pelo usurio. Estas funes so agrupadas de acordo com a rea de interesse em toolboxes e armazenadas em diretrios especficos. Qualquer funo a ser utilizada deve estar no diretrio de trabalho ou caminho (path) do MATLAB.

3. Comandos Bsicos
Alguns comandos bsicos que ajudam o usurio na utilizao do software so descritos a seguir:

help: ajuda on line sobre funes do MATLAB


help sin help ode23

who: informa as variveis presentes no workspace. O comando whos retorna as variveis e algumas informaes sobre as mesmas clc: limpa a tela which: informa o diretrio de execuo de uma determinada funo
which sin which ode23

diary: salva o texto de uma seo do MATLAB no diretrio corrente laod/save: carrega / salva em disco as variveis do workspace como arquivo de dados (extenso .mat) clear: limpa variveis do workspace
clear a; clear all;

2. Comandos de linhas
Todas as funes do MATLAB so executadas atravs de comandos digitados diretamente na rea de trabalho (workspace) aps o prompt.
5+7 2\3 5*2 2^3 2/3

what: retorna os arquivos relacionados ao MATLAB presentes no diretrio de trabalho dir / ls: retorna todos os arquivos do diretrio de trabalho cd: muda (ou apenas informa) o diretrio corrente
cd .. cd c:\temp cd

why: grande mistrio da humanidade

4. Smbolos e constantes
Diversos smbolos representam constantes ou limites da mquina. Os principais so:

A resposta destas operaes ser armazenada na varivel ans, cada operao atualizar o seu valor. Para inibir a exibio da resposta na tela, deve-se terminar a expresso com ponto e vrgula (;). Para armezenar valores em uma varivel especfica, deve-se atribuir o nome da varivel:
a=4+2; b=7*3; c=a+b

O MATLAB pode armazenar variveis, diferindo entre maisculas e minsculas, ou seja, case sensitive, deste modo as variveis x e X so diferentes. As funes matemticas mais utilizadas so listadas a seguir:

eps: preciso relativa da mquina realmin/realmax: menor/maior nmero representvel na mquina inf: representao do infinito positivo (-INF representa o infinito negativo) nan: representao de uma indeterminao matemtica (p.ex.: 0/0; Inf/Inf) pi: 3.1415926535897...

5. Trabalhando com matrizes


O MATLAB foi desenvolvido especialmente para trabalhar com representaes matriciais de elementos, tendo maior eficincia quando o usurio utiliza esta representao.

funes trigonomtricas: sin; cos; tan; asin; acos; atan logaritmo decimal: log10 logaritmo natural: log exponencial: exp valor absoluto: abs

Entrada de matrizes
Matrizes podem ser geradas de diferentes modos:

Listas contendo funes elementares e especiais podem ser visualizadas executando o comando help seguido das palavras elfun e specfunc.

Entrando os elementos explicitamente


a = [1 , 2 ; 3 , 4] a = [1 2] 3 4]

Para separar elementos de colunas diferentes pode-se usar a vrgula ou o ESPAO. Para separar linhas usase o ponto e vrgula ou o ENTER().

MATLAB Ferramenta matemtica para Engenharia

Cada elemento da matriz indexado, sendo possvel extrair-se um elemento indicando sua posio da forma linha-coluna ou da forma seqencial.
a (2) = 3

diag(A) diag([1 2])

extrai a diagonal da matriz A gera uma matriz diagonal com os elementos da diagonal iguais a 1 e 2. retorna um vetor com as dimenses da matriz A redimensiona a matriz A segundo o as novas dimenses mxn

a (2,1) = 3

Usando funes de construo Algumas funes do MATLAB auxiliam a montagem de matrizes com caractersticas especficas. Alguns exemplos so a matriz identidade e matrizes com uns ou zeros .
eye(3) ones(3) zeros(3)

size(A)

reshape(A,m,n)

Outras funes podem ser encontradas no help elmat.

Utilizando a forma : de gerao de seqncias.


a = [ 1:3 ; 4:6]

STRINGS
Entende-se por strings o conjunto de caracteres colocados entre aspas simples.
s = Este texto uma string

Operaes e Manipulaes de matrizes


Uma forma de manipular elementos de uma matriz utilizando a forma de indexao juntamente com comandos de lao, ou de forma mais eficiente, utilizando a forma de seqncias geradas pelo operador (:).
a (: , 1) a (1 , : ) a ([1 3], : )

Uma string entendida pelo MATLAB como um vetor de caracteres, portanto, no exemplo acima, para pegarmos apenas a palavra Este, basta fazer
s(1:4) ans = Este

todas as linhas da coluna 1 todas as colunas da linha 1 todas as colunas das linhas 1 e 3

Como encarada como um vetor, tambm existem formas de manipular-mos strings atravs de indexao de seus elementos ou ento utilizando funes especiais, como por exemplo: eval(S) avalia a string S como uma expresso do MATLAB

As operaes de adio, subtrao, multiplicao e diviso (+ - * / ) seguem as regras de operaes matriciais, enquanto que o operador ponto antecedendo as operaes de multiplicao e diviso, faz com que a mesma seja realizada elemento a elemento.
[2 3; 4 5] .* [1 2; 3 4] ans = [2 6 12 20]

str2num(7) converte a string 7 no nmero 7 num2str(7) strcat(S,T) strcmp(S,T) converte o nmero 7 em string concatena as strings S e T compara as strings S e T

Alm destas operaes bsicas, ainda pode-se aplicar funes trigonomtricas, exponenciais e logartmicas a matrizes, as quais retornaro uma matriz com os elementos da matriz original avaliados pela funo aplicada ponto a ponto. No caso da operao potncia (^), a soluo segue regra da multiplicao matricial, enquanto que a operao ponto antecedendo (.^), elevar elemento a elemento na potncia dada.
[2 3; 4 5] .^2 ans = [4 9 16 25]

Outras funes podem ser encontradas no help strfun.

6. Grficos
Os grficos so considerados pelo MATLAB como figuras, nas quais pode-se visualizar de vrias formas diferentes um conjunto de dados. Como so figuras, para manipul-los, pode-se utilizar comandos de linha (diretamente atravs da barra de ferramentas da janela criada para o grfico) ou ento utilizando o GUIDE, como ser visto mais adiante. O MATLAB apresenta uma srie de funes prontas para montar grficos 2D, 3D, de barras, de disperso, e outros. Para ver detalhadamente estas funes, basta dar um help graph2d, graph3d ou specgraph, enquanto que os comandos de linha para manipul-los podem ser encontrados no help graphics.

Outras operaes e funes geralmente utilizadas so: : transposta conjugada eig(A) : auto valores/vetores da matriz A norm(A): norma da matriz A det(A) : determinante da matriz A inv(A) : inversa de A

2D PLOTS
Existem vrias formas de fazer grficos 2D no MATLAB, a mais usual utilizando o comando plot. Para tanto, devese especificar os vetores das ordenadas e das abcissas.
x = [1:10] ; y = x; plot(x,y);

Outras funes podem ser encontradas no help matfun. Para manipular matrizes ainda pode-se utilizar funes especficas, como por exemplo:

MATLAB Ferramenta matemtica para Engenharia


title(Funo co-seno); xlabel(X); ylabel(Y=cos(X));

10 9 8 7 6 5 4 3 2 1

hold on; ezplot(sin(x) , [0,pi]); hold off;

Outros comandos muito utilizados so:


10

Este comando faz o grfico de uma reta y = x. No caso da entrada ser apenas um vetor coluna, o comando plot o considera como ordenada e gera a abcissa automaticamente. As cores da linha, bem como seu estilo, podem ser acrescentados como argumentos desta funo da seguinte forma:

axes: gera eixos axis: controla a escala dos eixos legend: adiciona legenda grid on/off: adiciona/retira as linhas de grade do grfico ginput: permite clicar no grfico para pegar pontos gtext: adiciona textos em qualquer posio especfica na figura.

plot(x, x, r, x, 2 * x, --b');
20 18 16 14 12 10 8 6 4 2

Ainda possvel fazer mais de um grfico na mesma figura com o comando subplot.

subplot(1,2,1);plot(1:10,'*b');subplot(1,2,2);plot(1:10,'--m');
10 9 8 7 6 5 4 10 9 8 7 6 5 4 3 2 1

10

3 2

Este comando gera um grfico com duas retas, y=x e y= 2x, a primeira em linha contnua vermelha e a segunda descontnua azul. As opes que podem ser utilizadas no comando plot so as seguintes:
y m c r g b w k cor amarelo magenta ciano vermelho verde azul branco preto . o x + * s d v marcador ponto crculo x-marca cruz estrela quadrado diamante tringulo : -. -tipo de linha slido ponto trao-ponto tracejada

10

10

Desta forma o grfico da reta com o marcador * ser o primeiro de uma figura que permite apresentar dois grficos, em uma linha e duas colunas: subplot(linha,coluna,posio)

3D PLOTS
Para gerar grficos 3D preciso montar uma malha com os vetores das trs dimenses envolvidas. O comando que gera esta malha com facilidade o mesgrid que toma dois vetores como argumento para gerar uma malha que ser utilizada para o clculo da uma terceira dimenso.

Para mais opes basta ver no help plot. Um outro comando que gera grficos de funes bidimensionais o ezplot, ele tem como argumento uma funo na forma de string e um intervalo de variao. Neste caso no preciso definir os vetores das ordenadas e abcissas.

x = [1:10] ; y = x; [X,Y] = meshgrid (x,y); Z = X.^2 + Y.^2; mesh (Z);

ezplot(cos(x) , [0,pi]);
Funo co-seno 1

200

150

100

50

0.5

0 10 10 5 8 6 4 2 0 0

Y=cos(X)

-0.5

-1 0 0.5 1 1.5 X 2 2.5 3

Para adicionar um ttulo ao grfico utiliza-se o comando title, enquanto que para nomear os eixos, utiliza-se o comando xlabel / ylabel. Para adicionar mais de um grfico na mesma figura, utiliza-se o comando hold. Este comando funciona como uma chave liga-desliga, adicionando outras funes no mesmo grfico enquanto no for executado o hold off.

O comando mesh cria um grfico 3D na forma de uma malha. Outros comandos, como o surf e o surfl criam um grfico com os elementos da malha preenchidos, permitindo ainda a possibilidade de uma representao contnua, atravs do comando shading interp. Para representar linhas e pontos no espao, o comando utilizado o plot3, que toma trs vetores como argumento.

MATLAB Ferramenta matemtica para Engenharia

x = [1:10] ; y = x; z = x.^2 + y.^2;


scatter(x,y(:,2));
15

plot3(x , y , z);

10 200

150

100

50

0 10 10 5 4 2 0 0 8 6

10

Para alterar as cores, pode-se utilizar o comando colormap, que toma como argumento um vetor RGB (red green blue), ou ento vetores pr definidos como na tabela a seguir:
hot vga gray jet bone prism copper autumn pink cool white hsv flag winter

Faz um grfico de disperso dos dados. Equivale ao plot(x,y,o). Outros comando de manipulao utilizados em grficos 2D e 3D esto na barra de ferramentas das prprias figuras.

Grficos especiais (line, barplot...)


Dentre os grficos especiais, os mais utilizados so:

abre uma figura nova abre uma figura salva a figura imprime a figura

seleciona objetos insere texto insere seta insere reta

zom + / zoom gira o objeto

x=[1:10];y = [x 1.5*x];

bar(x,y);
15

10

10

Faz um grfico de barras da matriz y mxn com m grupos de n barras verticais enquanto que o vetor x deve ser monotonicamente crescente ou decrescente.

area(x,y);
25

20

15

10

10

Neste caso, as colunas da matriz y so apresentadas como reas preenchidas.

pie(x);
4% 2% 5% 7% 18%

9% 16%

11%

13%

15%

Faz um grfico pizza dos valores do vetor x, que normalizado e apresentados como propores. 6

MATLAB Ferramenta matemtica para Engenharia

Aula 2 Programao
1. Algoritmos Noes Bsicas de Programao
Um programa nada mais do que uma seqncia de comandos (rotina) estabelecida de acordo com um objetivo pr-estabelecido, ou seja, imprescindvel que, antes de iniciar-se um programa, o usurio esteja completamente ciente do que ele deseja que a rotina realiza. O primeiro passo para o desenvolvimento de uma rotina a construo de um algoritmo para o programa, onde todos os comandos devem ser explicitados. Uma boa maneira para a construo do algoritmo a utilizao de um fluxograma. A partir do fluxograma, o nico trabalho do usurio traduzir o esquema para a linguagem de programao, qualquer que seja esta. Uma simbologia para o desenho do fluxograma apresentada a seguir: Entrada de dados Deciso Exibir valor Processo critrio de convergncia do bloco de deciso interrompa o ciclo. Para implementar esta rotina em qualquer linguagem de programao, basta atribuir os comandos devidos, de forma que o programa execute o algoritmo passo a passo.

2. M-FILES
A linguagem de programao do MATLAB utiliza exatamente os mesmos comandos descritos na aula anterior, do mesmo modo que eles seriam utilizados se digitados no workspace, porm os comandos ficam agrupados e a execuo de todos eles, em seqncia, pode ser realizada digitando-se apenas o nome atribudo seqncia, que pode ser salva em um arquivo de texto com a extenso .m. Os arquivos contendo rotinas de execuo para o MATLAB so denominados m-files. Para inserir comentrios no texto, usa-se o smbolo %. O uso de comentrios permite um melhor entendimento da rotina por qualquer usurio. A ajuda (explicao sobre o funcionamento da rotina) de cada m-file tambm definida utilizando linhas de comentrio. As primeiras linhas do programa, se marcadas com o marcador % so exibidas na tela quando o usurio digira help nomearq, onde 'nomearq' o nome do arquivo de texto. H duas opes de utilizao dos m-files pelo MATLAB: usando os chamados script-files ou usando as functions. Ambas consistem da utilizao das funes bsicas do aplicativo na seqncia desejada, sendo que o que as diferencia so o local onde as variveis so armazenadas durante os clculos e a forma de entrada e sada de dados.

A seguir, utilizando esta notao, mostrado um fluxograma com o algoritmo para clculo da presso de vapor de um lquido para uma dada temperatura utilizando a equao de estado de Peng Robinson.
Tc , Pc e , T, P0
a= 0 ,46 R Tc 1 + m 1 Tr Pc 0 ,078 RTc b= Pc m = 0 ,37 + 1,54 0 ,27 2 A= aP R 2T 2 B= bP RT
2 2

[ (

)]

Resolver A e B

Script-files
)
A utilizao de um script-file funciona exatamente da mesma forma que a execuo direta de comandos no prompt do MATLAB. Quando um script-file dodado, cada comando presente no arquivo de texto executado. Os script-files podem operar com variveis presentes no workspace ou com dados criados durante a execuo. Uma vez que este tipo de m-file no possui argumentos de entrada e sada, as variveis criadas so armazenadas no workspacedo MATLAB. Os script-files podem, inclusive, retornar elementos grficos, usando comandos como plot. A seguir proposto um exemplo de script-file para determinar a frmula molecular de um composto orgnico a partir da sua frmula centesimal e do peso molecular do composto. O m-file pode ser escrito em qualquer editor de texto, sendo armazenado com a extenso .m. Para ser executado, deve-se digitar no prompt do MATLAB o nome do arquivo (sem a extenso), sendo que o arquivo deve estar situado no diretrio de trabalho ou ento estar no caminho (path) do MATLAB. 7

Resolver equao de estado, obtendo zL e zV

Z 3 + Z 2 ( B 1 ) + Z A 3B 2 2 B + B 3 + B 2 AB = 0 bP ln = ( z 1 ) ln z RT bP z + 1 + 2 RT a ln 2bRT 2 z + 1 2 bP RT f = P

Calcular f V e fL

( (

) )

P=P

f f

f
V

No

fV

1 < tol ?

Sim

Escrever P=Psat

No exemplo, as equaes utilizadas so mostradas ao lado de cada bloco de processo, o que tambm ajuda na implementao. As entradas do processo so constantes do componente (temperatura e presso crtica e fator acntrico), a temperatura desejada e uma estimativa inicial para a presso de vapor. A partir destes dados, utilizando a equao de estado de PengRobinson a rotina resolvida iterativamente at que o

MATLAB Ferramenta matemtica para Engenharia

% Programa: % Frmula centesimal --> Frmula molecular % Inicializao clc, clear all , clear global % Pesos moleculares dos elementos pm=[ 12.01 1.01 16 14.01 ]; % Entrada de dados comp=input('Entre com o vetor de composies percentuais (C,H,O,N) '); pmc=input('Entre com o peso molecular do composto ); ' % Execuo prorp=pmc*comp/100; formula=round(prorp./pm)

Variveis globais versus variveis locais


A definio de variveis locais vem exatamente da possibilidade de utilizao de variveis que esto presentes apenas no workspace de trabalho. So variveis locais todas aquelas que podem ser utilizadas quando se trabalha em um workspace. Por exemplo, na execuo de uma function podem ser utilizadas as variveis utilizadas como argumentos de entrada e as variveis criadas pela rotina, ento estas so as variveis locais do f-workspace em questo. Existem variveis que podem ser declaradas como sendo globais e, deste modo, podem ser utilizadas como variveis locais em diferentes workspaces. Para declarar uma varivel como global deve-se utilizar o comando
global variavel

Alguns comandos utilizados comentados a seguir:

!              " # $ " !  %   ! & 

no
 

script-file
  !

so

'

)  

Para utilizar esta varivel em um f-workspace o mesmo comando deve ser dado na function que o utiliza.

"

"

3. Comandos de Fluxo e Operadores Lgicos


Determinadas rotinas utilizam uma seqncia de comandos repetidas vezes para a resoluo do algoritmo, como o caso do primeiro exemplo mostrado nesta aula, o clculo da presso de vapor de um lquido utilizando uma equao de estado. Neste exemplo, de acordo com a resposta do bloco de deciso, a rotina deve ser encerrada ou os clculos devem ser reiniciados, com um valor atualizado de um dos parmetros (no caso a prpria presso de vapor). Para realizar este loop se utilizam os chamados comandos de fluxo, que realizam esta funo. A deciso de qual caminho seguir executada pelos denominados operadores lgicos, que indicam rotina qual seqncias de comandos deve ser seguida de acordo com a avaliao de algum parmetro. O comando de fluxo mais geralmente utilizado nas rotinas do MATLAB o lao for e os operadores lgicos mais comuns so o if e o switch. A seguir apresentamos uma breve descrio destes e do comando while, que opera ao mesmo tempo como comando de fluxo e operador lgico.

Functions
As rotinas escritas como functions so tambm executadas a partir do prompt do MATLAB, e ento criam um workspace (a partir de agora denominado f-workspace) prprio, onde apenas algumas (ou mesmo nenhuma) variveis do workspace do MATLAB entram, onde todas as variveis geradas so armazenadas e de onde apenas as variveis desejadas retornam. A forma de execuo das functions segue a seguinte sintaxe:
[sadas] = funcao(entradas)

Deste modo, apenas as variveis descritas no grupo entradas entram no f-workspace e apenas as descritas em sadas retornam ao workspace do MATLAB. funcao o nome do m-file que contm a rotina que determina sadas a partir de entradas. Tanto um grupo quanto o outro podem ser qualquer tipo de varivel do MATLAB (escalares, vetores, matrizes, estruturas, strings, cell arrays, ...). A utilizao de functions bastante til por permitir a execuo da mesma rotina para vrios conjuntos de entrada sem a necessidade de alterar o arquivo de texto e por no poluir o workspace do MATLAB com as variveis utilizadas em clculos intermedirios da rotina. A seguiu um exemplo de function, utilizando o mesmo algoritmo do exemplo anterior:
function [formula] = analise_f(comp,pmc) % [formula] = analise_f(comp,pmc) % Frmula centesimal --> Frmula molecular % Esta function determina a formula centesimal % de um composto orgnico a partir do vetor de % composies percentuais comp=[C,H,O,N] e do % peso molecular do composto (pmc) % Pesos moleculares dos elementos pm=[ 12.01 1.01 16 14.01 ]; % Execuo prorp=pmc*comp/100; formula=round(prorp./pm);

Lao FOR
O lao for executa uma seqncia de operaes por um determinado nmero de vezes. O comando for define o incio do lao, determinando o intervalo em que uma varivel vai ser avaliada. Esta varivel pode ser usada em uma seqncia de operaes, definidas pelas linhas de comando do m-file que ficam entre os comandos inicial e final do lao (end). Para quebrar o lao em determinado ponto pode-se utilizar o comando break (normalmente utilizado aps um operador lgico). A seguir um exemplo que demostra a utilizao do comando for:
for i=1:4; A(i,1)=i; A(i,2)=i^2; end

MATLAB Ferramenta matemtica para Engenharia


A A= 1 2 3 4

1 4 9 16

determina-se qual seqncia de comandos deve ser seguida, sendo esta terminada com um novo case, com um otherwise (equivalente ao comando else do operador if) ou ainda com o terminador da operao de avaliao lgica end. A seguir um exemplo, utilizando o resultado do anterior.
for i=1:3; for j=1:3; switch B(i,j) case 0 C{i,j}='zero'; case {1,-1} C(i,j)={'nonzero'}; end end end C C= 'zero' 'nonzero' 'nonzero'

Operador lgico IF
O operador if funciona como um condicional, avaliando uma operao relacional* e determinando uma seqncia de comandos a ser seguida, definida a partir do ponto onde a expresso avaliada pela operao relacional se torna verdadeira. Vrias expresses podem ser avaliadas para a definio da seqncia de comandos a ser seguida, para isso se utilizam os operadores elseif ou else. O comando elseif determina uma nova condio a ser avaliada, enquanto o comando else determina a seqncia de operaes caso nenhuma das condies anteriores tenha sido satisfeita. Para indicar o trmino de uma operao lgica if devese inserir o comando end rotina. A seguir um exemplo ilustrativo da utilizao dos comandos if, elseif, else.
for i=1:3; for j=1:3; if i == j B(i,j)=0; elseif i>j B(i,j)=-1; else B(i,j)=1; end end end B B= 0 1 1 -1 0 1 -1 -1 0

'nonzero' 'zero' 'nonzero'

'nonzero' 'nonzero' 'zero'

4. Vetorizao
O MATLAB um software desenvolvido para trabalhar com matrizes. Quando se est construindo uma rotina de clculo e se deseja utilizar uma ferramenta de loop, onde o objetivo calcular uma expresso diversas vezes, muito mais eficiente trabalhar utilizando o conceito de operaes matriciais ou vetoriais. Para demonstrar o que queremos dizer, vamos apresentar uma rotina simples, implementada de dois modos, onde se evidencia a diferena de eficincia entre uma implementao utilizando loops sua verso vetorial.
8 9 @ 8 9 @ A B C D A B C P W C I P I C D

H T

Operador while
8

O operador while combina as funes de operador lgico do if e de lao do for.


a

c C

Em suma, o operador define um lao de modo que a seqncia de operaes compreendida entre o incio e o final do intervalo (determinada pelo end) seja realizada at que uma determinada condio seja satisfeita.
e

Utilizando a forma vetorizada, para este exemplo, tem-se uma reduo de 70 % no tempo computacional.

5. Utilizao do DEBUGGER
O MATLAB possui um editor de textos que est configurado para trabalhar com sua linguagem de programao, o DEBUGGER. Para rodar o editor, digite edit na linha de comando, um documento em branco ser aberto. Case se deseje rodar o editor e abrir um documento de texto, basta digitar edit seguido do nome do arquivo. As principais vantagens da utilizao deste editor so a visualizao grfica dos textos digitados e a possibilidade de se trabalhar simultaneamente com o MATLAB e o editor.

Operador lgico SWITCH


O operador switch trabalha de maneira muito parecida ao if, porm a sintaxe e o modo de implementao so diferentes. Com este comando pode-se avaliar apenas uma expresso por vez, porm ela mais eficientemente avaliada para diferentes condies. O comando switch inicia o operador, indicando a expresso a ser avaliada. Com o comando case
*

As possveis operaes relacionais so mostradas digitando-se help relop na linha de comando do MATLAB 9

MATLAB Ferramenta matemtica para Engenharia

Os recursos de visualizao identificam cada tipo de funo do MATLAB com uma cor diferente, alm de possuir recursos (fracos) de auto-tabulao. O estilo dos textos gerados o mesmo mostrado nos exemplos deste captulo. A possibilidade de utilizao simultnea do editor com o MATLAB auxilia na procura de eventuais erros de sintaxe no programa, uma vez que permite a execuo de rotinas linha a linha, colocao de pontos de quebra e execuo de intervalos do programa entre outros. So disponveis ainda uma srie de comandos de edio comuns, como localizar, voltar, copiar, ...

6. ExcelLink
Para facilitar o trabalho de fluxo de dados entre o MATLAB e programas do MS-Office, foi criado o ExcelLink, uma macro desenvolvida para o MS-Excel que permite o envio e recebimento de dados do MATLAB. Executando o arquivo excllink.xla* o MS-Excel executado, surgindo um conjunto de botes aparece na barra de ferramentas. O MATLAB deve ser executado a partir do Excel para ativar o link. Pode-se enviar dados para o MATLAB selecionando uma ou vrias clulas e usando o boto putmatrix, ento aparecer uma janela pedindo o nome da varivel a ser armazenada com estes dados. Para receber dados deve-se utilizar o boto getmatrix e informar a varivel onde esto armazenados os dados que quer-se buscar. possvel ainda utilizar funes do MATLAB no Excel. Para tanto, usa-se o boto evalstring. As variveis de sada devem ser armazenadas no workspace do MATLAB, ento deve-se atribuir um nome varivel para depois import-la para o Excel.

As macros desenvolvidas utilizam o MS Windows 95 ou MS Windows NT 4.0; MS Excel 97; e MATLAB 5.1 superior. 10

MATLAB Ferramenta matemtica para Engenharia

Aula 3 Outras formas de manipular informaes


1. Outras formas de armazenar dados:
Alm das formas de armazenar dados j abordadas, existem outras maneiras de guardar informaes e acess-las proporcionando ao programador uma grande versatilidade em termos de construo do rotinas. A seguir sero apresentados trs destas maneiras, Multidimensional Arrays, Structures e Cell Arrays, ou seja, Matrizes Multidimensionais, Estruturas e Listas. Cada uma destas formas possui uma sintaxe especfica para sua construo e manipulao, permitindo assim a escolha da maneira mais adequada ao programa de guardar e manipular informaes.

CELL ARRAYS
As listas (ou disposio em clulas) so uma classe especial de matrizes, cujos elementos, ou clulas, contm matrizes do MATLAB, permitindo que matrizes de diferentes dimenses possam ser armazenadas em uma nica varivel. A sintaxe para criar uma lista (Cell Array) a seguinte: z = { A B C ... } onde A, B,C,etc., podem ser matrizes, outras listas, uma estrutura ou um string, por exemplo.
a=1:3; b=[5 6;7 8]; c={a b}; d.a=a; d.b=b; z={a b c d}; a a= 1 2 3 b b= 5 6 7 8 c c= [1x3 double] [2x2 double] d d= a: [1 2 3] b: [2x2 double] z z= [1x3 double] [2x2 double] {1x2 cell} [1x1 struct]

MULTIDIMENSIONAL ARRAYS
Matrizes multidimensionais so uma extenso do conceito de matrizes bidimensionais, que so acessadas utilizando apenas dois ndices (linha, coluna); para o caso de uma matriz tridimensional, o nmero de ndices necessrios para localizar um elemento especfico na matriz passa a ser igual a trs. Desta forma, para uma matriz com dimenso igual a n, um elemento especfico estar definido por n ndices. A figura a seguir apresenta uma forma visual de interpretar matrizes multidimensionais.

Neste caso que foi apresentado, a e b so matrizes, c uma lista com duas matrizes, d uma estrutura com dois campos, um contendo a matriz a e outro a matriz b; enquanto que z tambm ser uma lista, porm contendo duas matrizes, uma lista e uma estrutura. Este tipo de matriz pode ser construda com os mesmos comando utilizados para matrizes bidimensionais, como ones, rand, e outros, porm agora com mais de dois argumentos que especificam as dimenses.
rand(2,2,3) ans(:,:,1) = 0.5466 0.6946 0.4449 0.6213 ans(:,:,2) = 0.7948 0.5226 0.9568 0.8801 ans(:,:,3) = 0.1730 0.2714 0.9797 0.2523

Para manipulao dos elementos de uma lista tambm se utiliza as chaves, que serve para indicar em que clula se encontra determinado objeto.
z{2} ans = 5 6 7 8

Desta forma, pode-se capturar a matriz b que est armazenada na lista z, mas se queremos capturar um elemento da matriz (p.ex.: o nmero 6), uma das possibilidades a seguinte:
z{2}(1,2) ans = 6

Uma matriz tridimensional, por exemplo, pode representar a temperatura em pontos de uma malha retangular em um espao tridimensional. A maneira pela qual as matrizes multidimensionais so manipuladas equivalente s matrizes bidimensionais, porm agora deve-se utilizar um nmero de ndices compatvel com o nmero de dimenses para referenciar as posies desejadas na matriz.

Ou seja, vai especificando cada vez mais para poder capturar o elemento desejado, sempre seguindo a sintaxe referente objeto que se est trabalhando, por exemplo:
z{3}{2}(1,2) ans = 6

Este comando tambm retorna o nmero 6 da matriz b porm neste caso a matriz b est dentro da lista c na 11

MATLAB Ferramenta matemtica para Engenharia


e = struct('Disciplina','controle','Nota',9.5) e= Disciplina: 'controle' Nota: 9.5000

posio dois, que por sua vez ocupa a posio trs da lista z. Para criar uma lista de matrizes vazias pode-se utilizar o comando cell, que tem como argumento as dimenses desejadas para a lista.

STRUCTURES
As estruturas so uma classe de matrizes do MATLAB que permitem armazenar dados de naturezas diferentes em um mesmo lugar. As estruturas diferem das Listas por possurem nomes que identificam seus campos. Uma forma de criar uma estrutura a seguinte:
dados.nome='fulano'; dados.idade=25; dados.fones={[316 33 33] [316 44 44]}; dados dados = nome: 'fulano' idade: 25 fones: {[316 33 33] [316 44 44]}

Como as estruturas so uma classe de matrizes, ainda pode-se adicionar elementos a uma mesma estrutura. Para tanto, deve-se proceder da seguinte maneira:
dados(2).nome='ciclano'; dados(2).idade=23; dados(2).fones={[999 88 88] [777 66 55]}; dados dados = 1x2 struct array with fields: nome idade fones dados(1) ans = nome: 'fulano' idade: 25 fones: {[316 33 33] [316 44 44]} dados(2) ans = nome: 'ciclano' idade: 23 fones: {[999 88 88] [777 66 55]}

Ou ainda,
b(1,1).a=[35 36]; b(1,2).a=[37 38]; b(2,1).a=[39 40]; b(2,2).a=[41 42]; b b= 2x2 struct array with fields: a b(1:2,1).a ans = 35 36 ans = 39 40

Uma outra forma de criar uma estrutura utilizando o comando struct, que toma como argumentos os nomes dos campos seguidos dos seus respectivos valores.

12

MATLAB Ferramenta matemtica para Engenharia

Aula 4 Simulink
1. Idia Bsica do funcionamento do Simulink


O subsistema
i   ! #      !  &  

4 

&

&

'

SIMULINK uma ferramenta interativa, baseada em estrutura de diagrama de blocos, voltada para a modelagem, anlise e controle de sistemas. A interface grfica do aplicativo permite que sejam criados modelos a patir de um conjunto de blocos j existente (blocklibrary) ou ento criar blocos que executam funes editadas pelo usurio.
  

'

'

'

"

'

"

'

&

! 4

3 %

"

'

Para mostrar o potencial do aplicativo, vamos utilizar um exemplo.


&

Demonstrao do potencial do aplicativo




No MATLAB, em todos os pontos, existem exemplos demonstrativos (demos) que mostram exemplos de utilizao de cada tpico. Um destes demos, referente ao SIMULINK, a simulao de um modelo termodinmico de uma casa. O exemplo pode ser explorado digitando-se thermo no prompt do MATLAB. O diagrama de blocos do exemplo ser mostrado na tela.
f

'

&

g 

&

&

i 3

i 4

h &

"

"

h #

i 4

O exemplo modela a termodinmica de uma casa utilizando um equacionamento simples. Para rodar a simulao, clique em janela do SIMULINK.
h

'

'

na barra de ferramentas da

Construo de um modelo simples


Este exemplo demonstra como utilizar comandos e aes para construir modelos prprios. Vamos montar um modelo para simulao dinmica da funo x2, de sua primeira derivada e de sua integral, mostrando na tela os resultados. Antes de tudo deve-se iniciar o aplicativo, digitando simulink no prompt do MATLAB ou clicando no cone na barra de ferramentas. Deve surgir, ento, o library browser, onde esto armazenados os blocos bsicos do aplicativo.

O termostato controla o funcionamento do aquecedor, que procura manter a temperatura da casa em 70 F (setpoint). A temperatura externa mdia de 50 F, tendo variao modelada como um seno de amplitude 15 F e perodo de 24 horas. O exemplo utiliza subsistemas para simplificar o modelo. Um subsistema um bloco que representa um conjunto de blocos. Este exemplo contm cinco subsistemas, um representando o termostato (
4 v 4 ( 6   # ! # !  !     i p q r s t u % w 3 ( !  # x   " # !   # !   !  !  ! #   # 6 t u q  ! y # y ! " ! " ! #  % v 1 4 4 p r q p q t

! 3

4 (

O subsistema House utiliza as temperaturas externa e interna com ao do aquecedor para atualizar a temperatura interna da casa. Um duplo clique no cone revela a modelagem, mostrando os bolcos que compem o subsistema.

13

MATLAB Ferramenta matemtica para Engenharia

quer. Na parte inferior da janela aparece o cone do bloco marcado e breves informaes sobre o mesmo (as mesmas informaes so mostradas com um duplo clique no bloco quando este est na janela de trabalho). Depois de encontrado o bloco, pode-se arrast-lo para a janela de trabalho ou ento utilizar o 'Ctrl+C / Ctrl+V'. Voltando ao nosso objetivo, a criao do modelo, devemos escolher os blocos a serem utilizados. Existem vrias maneiras de implementar um mesmo modelo, de forma que o roteiro aqui sugerido no nico. Queremos construir uma funo polinomial, sua primeira derivada e sua integral, simulando-as e imprimindo seu resultado. Um modo simples para isto utilizando o bloco MATLAB Fcn para a equao polinomial, os blocos Derivative e Integrative para calcular a derivada e a integral e o bloco Slope para plotar os grficos. Para controlar o incremento na funo pode-se usar o bloco Ramp. Todos os blocos podem ser encontrados com a ferramenta de procura, e ento devem ser arrastados para a janela de trabalho. Uma vez que quer-se plotar 3 grficos, pode-se copiar mais duas vezes o bloco Slope na janela de trabalho (usando 'Ctrl+C / Ctrl+V') ou ento alterando as propriedades do bloco. Para tanto clique duas vezes no bloco e ento selecione na barra de ferramentas. Uma janela, intitulada 'Scope' properties aparecer, e ento o nmero de eixos pode ser modificado em Number of axes. O bloco MATLAB Fcn deve ser editado colocando-se no campo MATLAB function a funo que se deseja utilizar. No caso quer-se calcular o quadrado do valor de entrada (u), ento pode-se colocar no campo a expresso u^2. Para conectar dois blocos, deve-se arrastar a sada do primeiro at a entrada do segundo. As entradas e sadas tm a forma de setas (>). Pode-se ainda utilizar uma mesma linha (que carrega consigo um vetor ou um escalar) como entrada para outros blocos, para tanto deve-se, pressionando Ctrl, clicar na linha e ento arrastar at o ponto desejado. Pode-se nomear linhas ou ento inserir comentrios na janela de trabalho, bastando para tanto um duplo clique sobre a linha ou em qualquer espao no ocupado. Com isso, acreditamos que o leitor ser capaz de montar o modelo desejado, como mostrado a seguir.

Para iniciar um novo modelo, deve-se clicar no cone do library browser. Ento deve surgir um documento em branco do SIMULINK, intitulado Untitled. Agora o usurio deve buscar no library browser os blocos que deseja utilizar em seu modelo. Os blocos so agrupados de acordo com o toolbox ao qual esto vinculados (Simulink, Comunications Blockset, ...) e ento divididos por tipos.

possvel procurar-se por um bloco informando o nome deste ao lado do cone de procura (binculo) e clicando nele. Outra forma expandir os grupos com um duplo clique no item desejado (Sources ou Simulink, por exemplo) at encontrar o bloco que se 14

MATLAB Ferramenta matemtica para Engenharia

Pode-se agora testar o modelo rodando a simulao e alterando parmetros como o polinmio, as funes de trabalho, o intervalo de simulao. Para salvar o modelo, clicar em Salvar como e escolher o diretrio. Os arquivos SIMULINK tm a extenso .mdl.

'menor que' no nome da corrente e ento pressionar Ctrl+D.

Blocos e operaes interessantes


Um grande nmero de blocos est disponvel na biblioteca do SIMULINK. Alguns destes, juntamente com algumas dicas de como melhor utilizar o aplicativo so colocadas a seguir: - Desenhar e/ou alterar malha grfica auxiliar para a criao do modelo: Para inserir uma malha auxiliar, digitar no path do MATLAB o comando
set_param('<model name>','showgrid','on')

onde <model name> o nome do modelo do SIMULINK. Para alterar a malha, digitar:
set_param('<model name>','gridspacing',<number of pixels>)

- Criando subsistemas A criao de subsistemas objetiva despoluir modelos que possuem um grande nmero de blocos. Em um subgrupo, como visto no exemplo da termodinmica de uma casa, pode possuir vrias entradas e sadas, de acordo com as entradas e sadas do subsistema. Pode-se adicionar um subsistema colocando-se o bloco Sub System na janela de trabalho ou selecionando-se um conjunto de blocos e, ento, agrupando-os usando o comando Create Subsystem no menu Edit ou usando o atalho Ctrl+G.

- Duplicando blocos em um modelo: Para duplicar um bloco, selecione o bloco com o mouse e, pressionando Ctrl, leve a cpia do bloco at o local desejado. - Mudando a orientao de blocos: Para rodar um bloco no SIMULINK pode-se usar os comandos do menu Format: Rotate block (roda 90 ) ou Flip block (roda 180 ). As teclas de atalho Ctrl+R e Ctrl+F tambm podem ser usadas. Para blocos com mais de uma entrada ou sada, a ordem destas segue o exemplo da figura a seguir.

2. Mscaras
O uso de mscaras permite a criao de caixas de dilogo e cones especficos para subsistemas. Algumas vantagens do uso de mscara so listados a seguir.

Simplificao na utilizao do modelo pela simplificao na entrada de parmetro, uma vez que em um subsistema mascarado o usurio pode inserir todos os parmetros de um conjunto de blocos em uma nica caixa de dilogo. Permite a construo de uma interface prpria para com o usurio, definindo-se a descrio, texto de ajuda e cone do bloco. Previne a modificao acidental de subsistemas, uma vez que estes ficam protegidos atrs de uma interface.

Exemplo: criao de uma mscara para um sistema simples


- Vetores versus escalares A maioria dos blocos do SIMULINK pode trabalhar tanto com vetores quanto com escalares. Quando, em blocos com mais de uma entrada, utilizam-se os dois tipos de expresso, o bloco faz uma combinao deles, como mostra o exemplo. Para mostrar a utilizao de mscaras em um modelo, vamos utilizar um exemplo simples: a criao de uma caixa de dilogo para um bloco que retorna a soluo de uma equao de reta do tipo y = m.x + b. Primeiramente necessrio montar o modelo, como j descrito. O modelo deve ser semelhante ao esquema a seguir:

- Propagao de um sinal e nomes de correntes Um sinal pode ser levado de um ponto a outro da janela de trabalho usando os blocos Goto e From. O nome de uma corrente tambm pode ser levada, evitando confuses, para tanto deve-se digitar o sinal 15

Posteriormente deve-se criar um subsistema para este modelo, selecionando todos os blocos e clicando em Create Subsystem no menu Edit (ou utilizando o atalho Ctrl+G). O modelo ser substitudo por um nico bloco. A

MATLAB Ferramenta matemtica para Engenharia

figura abaixo mostra o bloco gerado e o modelo, que pode ser visualizado com um duplo clique no primeiro.

Os blocos In1 e Out1 representam a entrada e a sada do modelo, que coincidem com a entrada e a sada do bloco Subsystem. Agora possvel mascarar o subsistema, para isso clique em Mask Subsystem no menu Edit (Ctrl+M). Abrir ento a janela de edio de mscaras, que permite a criao do cone e da caixa de dilogo para o subsistema, podendo ser aberta usando novamente o atalho Ctrl+M com o sistema selecionado. A primeira pasta do editor contm as opes de edio do cone. No campo Mask type pode-se entrar uma expresso referente ao subsistema, como o nome. No campo Drawing commands define-se a aparncia do bloco. Pode-se utilizar comandos grficos (line, plot, ...) ou ento texto (disp, text). Ainda se encontra nesta pasta opes de aparncia do bloco, que podem ser configuradas de acordo com a aplicao. A seguir mostrada uma sugesto de configurao para o subsistema estudado.

A ltima pasta contm informaes sobre o documento. No campo Block description deve ser inserido um texto comentrio que explica ao usurio o que o bloco faz e no campo Block help pode ser inserido um texto de ajuda, com informaes mais detalhadas, uma vez que estas s sero exibidas a pedido do usurio. A figura abaixo mostra o resultado obtido seguindo as instrues acima:

3. S-functions
As chamadas S-functions (System Functions) so descries de sistemas dinmicos, escritas em uma linguagem de programao prpria (ou em C e compiladas como MEX-files), que interage com os solvers do SIMULINK. Seu uso mais comum est vinculado ao seguintes pontos:

A segunda pasta contm os parmetros de inicializao da mscara, onde a caixa de dilogo definida. Para inserir um campo da caixa de dilogo, clicar em Add, ento um novo campo ser adicionado lista. Este campo deve ser definido, escolhendo-se o tipo (editvel, caixa de checagem ou lista de opes) em Control type, o nome e o smbolo da varivel associada ao campo (Prompt e Variable) e a ao a ser tomada para o valor do campo (Evaluate calcula a varivel e Literal a mantm como string). Para o exemplo y = m.x + b uma sugesto de janela, demonstrando o uso do menu popup mostrado a seguir.

Criao de novos blocos para o SIMULINK Incorporao de cdigos em C a uma simulao Descrio de um sistema como uma seqncia de equaes matemticas ao invs de utilizar a lgebra de blocos Utilizao de animaes grficas (ver penddemo). Todos blocos do SIMULINK trabalham com entradas (u), sadas (y) e elementos internos, ou estados (x). O esquema a seguir demonstra cada elemento do bloco:

A relao matemtica entre os elementos pode ser sintetizada por 16

MATLAB Ferramenta matemtica para Engenharia y = f (t , x , u )


n

= t

x = g( t, x, u )

ou seja, os estados nada mais so do que as variveis do modelo que so derivadas no tempo. Nos arquivos de S-functions os vetores de estado so divididos em duas partes, uma primeira que contm apenas estados contnuos e uma segunda que contm estados discretos. O SIMULINK faz vrias chamadas de cada bloco do modelo durante fases especficas de simulao, executando tarefas como clculo das sadas, atualizao de estados, ou determinao de derivadas. Chamadas adicionais so feitas no princpio e trmino de uma simulao para executar a inicializao e a terminao. A figura a seguir ilustra como o SIMULINK executa uma simulao. Primeiro, o realizada a inicializao de cada bloco, inclusive das Sfunctions. Ento o SIMULINK entra no loop de simulao, onde cada passagem pelo loop chamado um passo de simulao. Durante cada passo da simulao, o SIMULINK executa seu bloco S-function. Isto continua at o simulao esteja completa.
Determina condies iniciais Calcula tamanho do prximo passo (apenas para blocos com passo varivel) Passo de simulao Calcula sadas Atualiza estados discretos Recalcula sadas Calculata derivadas Terminao, executa qualquertarefa exigida Integrao

sys = ['n de estados contnuos, n de estados discretos', 'n de sadas', 'n de entradas', 'flag para utilizao da entrada para determinao do prximo passo', 'nmero de tempos de amostragem'] Normalmente, para sistemas contnuos, se utilizam apenas as posies 1, 3 e 4 da matriz. As demais posies so substitudas por zero. Quando flag vale um devem ser informadas as equaes diferenciais do modelo e quando flag vale 4 devem ser informadas as equaes de sada da S-function. Para melhor compreender o funcionamento das S-functions vamos utilizar dois exemplos simples.

Criao de uma S-function simples para integrao do sinal de entrada


Vamos criar uma S-function que realiza a integrao do sinal de entrada. Nesta simples implementao utilizamos o conceito de flags e a seqncia do fluxograma. O modelo a ser construdo, ento,
n

x = x

y = x = x

=u t dt = u dt

Para escrever a S-function, ento, devemos abrir o Debugger e digitar a rotina:


function [sys, x0] = sfint(t,x,u,flag) if flag == 0, x0 = 0; sys = [1 0 1 1 0 0]'; elseif abs(flag) == 1, sys = u; elseif flag == 3, sys = x; else sys = []; end

% Condies iniciais % Definio do % tamanho dos vetores % dx/dt = u % y = x % No utilizar % demais flags

O SIMULINK informa s S-functions o estgio atual da simulao, ou seja, qual parte da rotina deve ser executada, atravs das flags. Deste modo cada parte da rotina deve ser iniciada com um controlador de fluxo (if, case) A tabela a seguir mostra cada estgio da
simulao, a respectiva rotina na S-function e o valor da flag. Estgio da simulao Inicializao Rotina da S-Function Flag mdlInitializeSizes flag = 0 flag = 4 flag = 3 flag = 2 flag = 1 flag = 9

Para testar a rotina implementada, montar o seguinte modelo no SIMULINK. No campo S-function name, do bloco S-function, entre o nome do arquivo .m (sfint). O resultado obtido tambm mostrado abaixo:

Clculo do prximo passo mdlGetTimeOfNext (opcional) VarHit Clculo das sadas Atualizao dos estados discretos Clculo das derivadas Trmino da simulao mdlOutputs mdlUpdate mdlDerivatives mdlTerminate

Deste modo, quando a flag vale zero vai ser realizada a inicializao das variveis. Neste ponto, a S-function deve retornar o tamanho dos vetores de entrada, sada e estados. Para isso deve conter a expresso 17

MATLAB Ferramenta matemtica para Engenharia

if ~exist('par') par = [1 1 .2 100]; % Valores default end K = par(1); ro = par(2); A = par(3); h0 = par(4); %kg m^-0,5 s^-1 %kg/m^3 %m^2 %m

switch flag case 0 x0 = h0; % Condies iniciais sys = [1 0 2 1 0 0]'; % Tamanho dos vetores case 1 sys = (u-K*sqrt(x))/(ro*A); % EDO do sist. case 3 sys(1) = x; % h (nvel do tanque) sys(2) = K*sqrt(x); % Fo (vazo de sada) case {1, 2, 4, 9} sys = []; % No utilizar flags end

A implementao sugerida utiliza os parmetros (constantes) informados no prprio bloco da S-function ou ento os valores padro. Diferena entre este exemplo e o anterior a utilizao do controlador de fluxo switch/case para a atualizao das flags.

Criao de uma S-function simples para a modelagem no linear de um tanque


Deseja-se fazer a modelagem no linear de um tanque onde a entrada e sada de lquido so controladas pela ao da gravidade. Deseja-se analisar a variao do nvel e da vazo de sada do tanque (resposta do sistema) frente a variaes na alimentao (perturbao no sistema).
FI

Para testar a S-function criada, sugerimos a construo de um modelo do SIMULINK como o mostrado na figura a seguir, que possibilita a verificao do comportamento dinmico do sistema frente a perturbaes na alimentao.

V h

Ab

FO

Considerando que o lquido possui massa especfica constante, que o tanque isotrmico e de mistura perfeita, o balano mssico do tanque pode ser descrito por FO FI = dV dt

Com o modelo construdo pode-se simular o comportamento de um ou mais tanques com diferentes dimenses, condies iniciais e disposio (em srie ou em paralelo). Pode-se ainda criar uma mscara para o bloco, construindo um cone prprio e uma caixa de dilogo para a entrada dos parmetros.

Modelando a hidrulica do sistema por F O = K h e sabendo que V = A b h , e equao diferencial do sistema pode ser reescrita como dh FI K h = dt A b h (t 0 ) = h 0 Agora podemos implementar este modelo como S-function. Um modo de implementao apresentado a seguir:
function [sys, x0] = sftank(t,x,u,flag,par)

4. Tabelas de auxlio
Nesta seo so mostrados os nomes e funes de alguns blocos do SIMULINK. Table 1: Sources Library Blocks
Band Limited W hite Noise Chirp Signal Clock Constant Introduce white noise into a continuous system. Generate a sine wave with increasing frequency. Display and provide the simulation time. Generate a constant value.

h ( t , FI )

18

MATLAB Ferramenta matemtica para Engenharia

Digital Clock Digital Pulse Generator From File FromWorkspa ce Pulse Generator Ramp Random Number Repeating Sequence Signal Generator Sine Wave Step Uniform Random Number

Generate simulation time at the specified sampling interval. Generate pulses at regular intervals. Read data from a file. Read datafrom amatrixdefined in the workspace. Generate pulses at regular intervals. Generate a constantly increasing or decreasing signal. Generate normally distributed random numbers. Generate a repeatable arbitrary signal. Generate various waveforms. Generate a sine wave. Generate a step function. Generate uniformly distributed random numbers.

Abs Algebraic Constraint Combinatorial Logic Complex to MagnitudeAngle Complex to Real-Imag Derivative Dot Product Gain Logical Operator MagnitudeAngle to Complex Math Function Matrix Gain MinMax Product Real-Imag to Complex Relational Operator Rounding Function Sign Slider Gain Sum Trigonometric Function

Output the absolute value of the input. Constrain the input signal to zero. Implement a truth table. Output the phase and magnitude of a complex input signal. Output the real and imaginary parts of a complex input signal. Output the time derivative of the input. Generate the dot product. Multiply block input. Perform the specified logical operation on the input. Output a complex signal from magnitude and phase inputs. Perform a mathematical function. Multiply the input by a matrix. Output the minimum or maximum input value. Generate the product or quotient of block inputs. Output a complex signal from real and imaginary inputs. Perform the specified relational operation on the input. Perform a rounding function. Indicate the sign of the input. Vary a scalar gain using a slider. Generate the sum of inputs. Perform a trigonometric function.

Table 2: Sinks Library Blocks Display Show the value of the input. Scope Display signals generated during a simulation. Stop Stop the simulation when the input is Simulation nonzero. To File Write data to a file. To Workspace Write data to a matrix in the workspace. XY Graph Display an XY plot of signals using a MATLAB figure window. Table 3: Discrete Library Blocks Discrete Filter Implement IIR and FIR filters. Discrete Implement a discrete state-space State-Space system. Discrete-Time Perform discrete-time integration of Integrator asignal. Discrete Implement a discrete transfer function. Transfer Fcn Discrete Zero- Implement a discrete transfer Pole functionspecified in terms of poles and zeros. First-Order Implement a first-order sample-andHold hold. Unit Delay Delay a signal one sample period. Zero-Order Implement zero-order hold of one Hold sampleperiod. Table 4: Continuous Library Blocks Derivative Output the time derivative of the input. Integrator Integrate a signal. Memory Output the block input from the previous time step. State-Space Implement a linear state-space system. Transfer Fcn Implement a linear transfer function. Transport Delay the input by a given amount of Delay time. Variable Delay the input by a variable amount Transport of time. Delay Zero-Pole Implement a transfer function specified in terms of poles and zeros. Table 5: Math Library Blocks

Table 6: Functions & Tables Library Blocks Fcn Apply a specified expression to the input. Look-Up Perform piecewise linear mapping of Table the input. Look-Up Perform piecewise linear mapping of Table (2-D) two inputs. MATLAB Apply a MATLAB function or Fcn expression to the input. S-Function Access an S-function. Table 7: Nonlinear Library Blocks Backlash Model the behavior of a system with play. Coulomb & Model discontinuity at zero, with linear Viscous gain elsewhere. Friction Dead Zone Provide a region of zero output. Manual Switch between two inputs. Switch Multiport Choose between block inputs. Switch Quantizer Discretize input at a specified interval. Rate Limiter Limit the rate of change of a signal. Relay Switch output between two constants. Saturation Limit the range of a signal. Switch Switch between two inputs. Table 8: Signals & Systems Library Blocks Bus Selector Output selected input signals. Configurable Represent any block selected from a

19

MATLAB Ferramenta matemtica para Engenharia

Subsystem Data Store Memory Data Store Read Data Store Write Data Type Conversion Demux Enable From Goto Goto Tag Visibility Ground Hit Crossing IC Inport Merge Model Info Mux Outport Probe Subsystem Terminator Trigger Width

specified library. Define a shared data store. Read data from a shared data store. Write data to ashareddatastore. Convert a signal to another data type. Separate a vector signal into output signals. Add an enabling port to a subsystem. Accept input from a Goto block. Pass block input to From blocks. Define the scope of a Goto block tag. Ground an unconnected input port. Detect crossing point. Set the initial value of a signal. Create an input port for a subsystem or an external input. Combine several input lines into a scalar line. Display revision control information in a model. Combine several input lines into a vector line. Create an output port for a subsystem or na external output. Output an input signals width, sample time, and/or signal type. Represent a system within another system. Terminate an unconnected output port. Add a trigger port to a subsystem. Output the width of the input vector.

20

MATLAB Ferramenta matemtica para Engenharia

Aula 5 Toolboxes & GUIDE


1. Toolboxes
A idia desta seo apresentar sucintamente algumas das funes consideradas como as mais utilizadas pelo estudante de graduao e ps-graduao no decorrer do curso e tambm as potencialidades desta grande ferramenta: o MATLAB. Portanto no o objetivo desta seo entrar em maiores detalhes, os quais podem ser obtidos em manuais gigantescos que existem para cada um dos toolboxes que sero apresentados ou ento uma ajuda razovel que pode ser obtida no help on line. limit Calcula o limite de uma funo. A sintaxe a seguinte: limit (F, x, a, right ou left); Esta expresso calcula o limite da funo F (string) para x a pela direita ou pela esquerda. Antes de executar esta funo, deve-se transformar as variveis envolvidas no clculo em objetos simblicos atravs da funo syms.
syms x limit((x-2)/(x^2-4),x,2) ans = 1/4

Symbolic Math
Este toolbox permite trabalhar com funes na forma simblica, retornando uma soluo analtica para os problemas. De um modo geral, existem duas formas de se trabalhar com expresses simblicas; a primeira utilizando strings enquanto que a outra utilizando objetos simblicos. Os objetos simblicos so uma classe definida pelo MATLAB que permite sua manipulao atravs de funes especficas do symbolic toolbox. A seguir so apresentadas algumas das funes mais utilizadas neste toolbox. Para mais detalhes sobre estas funes ou para procurar outras funes existentes, pode-se utilizar o help on line do MATLAB procurando por symbolic. diff Esta funo calcula a derivada simblica de uma funo que est na forma de string.
diff('sin(a)','a') ans = cos(a)

solve Resolve simbolicamente equaes algbricas. As equaes e as variveis desconhecidas devero ser expresses simblicas ou strings. solve('p * sin(x) = r','x') ans = asin(r/p)
[x,y] = solve('x^2 + x * y + y = 3','x^2 - 4*x + 3 = 0') x= [ 1] [ 3] y= [ 1] [ -3/2]

dsolve Calcula a soluo simblica de equaes diferenciais ordinrias. As equaes devem estar na forma de strings e a varivel a ser diferenciada em relao a varivel independente antecedida pela letra D. No caso da ordem ser maior que um, utiliza-se a notao: D2, D3, etc. Por definio, a varivel independente t, mas pode ser alterada na chamada da funo colocando a nova varivel na ltima posio da chamada da funo. As condies iniciais so especificados por equaes do tipo: y(a)=b ou Dy(a)=b , onde y uma das variveis dependentes enquanto a e b so constantes. Se o nmero de condies iniciais for menor que o de variveis dependentes, sero colocadas constantes arbitrrias (C1, C2,...) na soluo final.
dsolve('Dx = - a * x') ans = C1*exp(- a * t) x = dsolve('Dx = - a * x', 'x(0) = 1','s') x= exp(- a * s) y = dsolve('(Dy)^2 + y^2 = 1','y(0) = 0') y= [ sin(t)] [ - sin(t)]
o

No caso do argumento desta funo ser um vetor, ela retornar a diferena entre os elementos i+1 e i. E no caso de matrizes, pode-se definir a ordem (o) da diferena em se ela ser aplicada sobre as linhas (1) ou colunas(2). A sintaxe neste caso a seguinte:
diff (X, o, 1 ou 2);

int Calcula a integral de uma funo. Esta funo pode fazer diferentes tipos de clculos de acordo com os argumentos de entrada: int(S) calcula a integral definida de S em relao varivel definida pela funo findsym. S uma string ou uma varivel sym. int (S,v) calcula a integral indefinida de S e, relao a string v. int (S,a,b) calcula a integral definida de S em relao a sua varivel simblica para o intervalo [a b]. int (S,v,a,b) calcula a integral definida de S em relao v para o intervalo [a b]. 21

MATLAB Ferramenta matemtica para Engenharia


S = dsolve('Df = f + g', 'Dg = -f + g', 'f(0) = 1','g(0) = 2') S= f: [1x1 sym] g: [1x1 sym] [S. f S. g] ans = [ exp(t)*(cos(t)+2*sin(t)), - exp(t)*(sin(t)-2*cos(t))]

A lista de todas as opes disponveis pode ser encontrada no help on line procurando por optimset. fzero Este comando calcula os zeros de uma funo escalar. Tem como argumentos bsicos a funo que se deseja determinar os zeros e um vetor com os intervalos da regio onde ser feita a busca (sign(f(x1)) sign(f(x2))). Geralmente a funo um M-file criado especificamente para este problema, que deve pegar valores reais como argumento e retornar valores reais. Outra opo utilizando o comando inline, que cria uma funo objeto para ser utilizada pelo comando fzero.
f=inline('x^2-6*x+5'); fzero(f,[0 2]) Zero found in the interval: [0, 2]. ans = 1 fzero(f,7) Zero found in the interval: [4.76, 8.5839]. ans = 5

laplace Calcula a transformada de Laplace de uma funo em relao a varivel t (padro). Se a funo for dada em termos de s, ento laplace retorna a sua inversa em t. As variveis utilizadas nesta funo devem ser objetos simblicos, portanto sempre devem ser declaras antes atravs do comando syms.
syms a s t w x laplace(t^5) ans = 120/s^6 laplace(exp(a * s)) ans = 1/(t - a) laplace(sin(w * x),t) ans = w/(t^2+w^2) laplace(diff(sym('F(t)'))) ans = s * laplace(F(t), t, s)-F(0)

fsolve Resolve equaes no lineares do tipo: F(X) = 0, utilizando o mtodo dos mnimos quadrados, onde F e X podem ser vetores ou matrizes. A funo F deve ser implementada na forma de um M-file. A sintaxe deste comando a seguinte: X = fsolve(funo.m, X0, opes, P1, P2, ...); onde X0 a matriz com os valores para inicializar o problema, opes o conjunto de opes definidas com o optimset e P1, P2,... so os parmetros que so passados para a funo. fminbnd Resolve o problema de minimizao de uma funo escalar no linear com restrio. A sua sintaxe geral a seguinte:: X = fminbnd(FUN, x1, x2, opes, P1, P2, ..) onde X o valor do mnimo local pertencente ao intervalo (x1 , x2) da funo FUN que em geral um M-file. A outra forma de resolver utilizando o comando inline.
f =inline('(x-2)^3+5*(x-2)^2+13'); x = fminbnd(f,0,6) Optimization terminated successfully: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004 x= 2.0000

Optimization Toolbox
Neste toolbox encontram-se funes para clculos de otimizao, ou seja, problemas minimizao com ou sem restries, minimizao de funes multiobjetivos, mtodo dos mnimos quadrados linear e no linear, clculo de zeros, etc. Todos estes algoritmos possuem opes especficas inerentes aos mtodos utilizados, a tolerncia permitida, dentre outras. Para definir quais sero estas opes, o MATLAB utiliza uma estrutura que guarda todas as informaes necessrias que sero utilizadas por uma funo especfica. Esta estrutura pode ser definida utilizando o comando optimset, que apresentado em seguida. Maiores detalhes sobre algumas das funes apresentadas ou para procurar outras funes, pode-se utilizar o help on line do MATLAB procurando por optim. optimset Cria uma estrutura com as opes que sero utilizadas pelas funes do Optimization Toolbox. A sua sintaxe a seguinte: options = optimset(par1,valor1,par2,valor2,...) Outra forma de definir os parmetros utilizar os parmetros padres utilizados pela funo que se deseja utilizar. Para isso, deve-se entrar uma string com o nome da funo como argumento para optimset.
optimset ( fzero );

lsqnonlin Resolve problemas no lineares de mnimos quadrados com a seguinte forma: min{sum[FUN(X).^2]} onde X e os valores retornados pela funo FUN podem ser vetores ou matrizes. A sintaxe geral a seguinte: X = lsqnonlin(FUN, X0,LB,UB, opes, P1, P2, ..)

Para fazer uma cpia das opes antigas e alterando apenas algumas, deve-se proceder da seguinte maneira:
new_opts = optimset(old_optos, par1,valor1);

22

MATLAB Ferramenta matemtica para Engenharia

onde X0 a matriz de inicializao, enquanto que LB e UB so os limites inferiores e superiores, respectivamente, das variveis desejadas. A funo FUN que em geral um M-file, deve retornar um vetor com as funes objetivos. A outra forma de resolver utilizando o comando inline.
x = lsqnonlin(inline('sin(x . * x)'),0.3,-0.5, 0.5) Optimization terminated successfully: Relative function value changing by less than OPTIONS.TolFun x= 0.0139

s+1 s2 +s+1 Entrada(Step) u(t) Funo de Transferncia G(s)

y sada y(t)

Control System Toolbox


Este toolbox apresenta uma srie de funes destinadas a facilitar quem trabalha na rea de controle de processos. Os comandos que sero apresentados fazem parte do conhecimento da teoria de controle bsica, que deve estar no sangue de quem um dia pretende passar pela disciplina de Controle de Processos ministrada pelo Prof. Jorge O. Trierweiler (UFRGS). Antes de iniciar a apresentao dos comandos, convm dar uma breve introduo do que vem a ser uma funo de transferncia e alguns outros conceitos. Uma funo de transferncia serve basicamente para avaliar uma entrada e dar o valor da sada correspondente aquela entrada. A sua origem vem da modelagem de um processo qualquer (linear ou no), o qual se deseja controlar. Como o a modelagem geralmente consiste de um conjunto de equaes diferenciais lineares ordinrias em relao ao tempo, pode-se aplicar a transformada de Laplace, a qual reduz o problema de se resolver um sistema de equaes diferencias a um problema algbrico relativamente simples. Na resoluo deste problema que as variveis de interesse (entrada/sada) so relacionadas por uma funo, a qual recebe o nome de funo de transferncia. Convm salientar que no caso do modelo ser no linear, pode-se, utilizando a expanso em srie de Taylor, linearizar este modelo um ponto qualquer, geralmente o ponto de interesse o correspondente ao estado estacionrio do sistema, onde a planta operada. Uma funo de transferncia se resume basicamente a uma funo racional de dois polinmios, aos quais usual a designao num(numerador, cujas razes eqivalem aos zeros do sistema) e den (denominador, cujas razes eqivalem aos plos do sistema, e que por sua vez esto relacionados com a dinmica do processo). Portanto, uma funo de transferncia tem a seguinte aparncia:

A seguir sero apresentadas algumas funes do control toolbox que permitem uma anlise rpida e clara das caractersticas principais de um sistema qualquer. A seqncia na qual elas so apresentadas, segue aproximadamente a ordem de uma anlise real. Para maiores detalhes sobre algumas das funes apresentadas ou para procurar outras funes, pode-se utilizar o help on line do MATLAB procurando por control. tf Gera um objeto do modelo LTI que possui como uma das suas informaes a funo de transferncia, tendo como argumentos os coeficientes do numerador e o denominador. Um objeto LTI uma das formas de representao para modelos lineares invariantes no tempo, que pode ser manipulado pelas diversas ferramentas disponveis no control toolbox. A sintaxe geral a seguinte: G = tf(NUM,DEN); No caso de haver uma entrada e uma nica sada (SISO), NUM e DEN so vetores com os coeficientes do polinmio do numerador e do denominador, respectivamente. Para o caso de mais de uma entrada e mais de uma sada (MIMO), NUM e DEN devem ser colocados em uma lista (cell array) em posies especficas determinadas pelas entradas e sadas que a funo relaciona.
num=[1 1];den=[1 1 1]; G = tf(num, den) Transfer function: s+1 --------------s^2 + s + 1

step Esta funo aplica um sinal degrau na entrada do sistema, que representado por uma funo de transferncia, por exemplo, e ento avalia a sada apresentando o resultado graficamente. Para sistemas MIMO, esta funo mantm aplica a funo degrau em uma das entradas mantendo constante as demais, avaliando seu efeito nas sadas. Existem inmeras opes que esta funo permite utilizar, portanto conveniente dar uma olhada no help on line do MATLAB, procurando por step. Se fizermos:
step(G);

K ( o S + 1) 2 1 2 S + 1 + (1 + 2 )S + 1

ou
step(num,den);

Os polinmios so colocados desta forma pois pode-se identificar mais facilmente as constantes de tempo bem como as razes do denominador e do numerador (plos e zeros, respectivamente). Em malha aberta, ou seja, sem estar controlando o sistema, a representao em diagrama de blocos a seguinte: 23

O resultado ser o seguinte:

MATLAB Ferramenta matemtica para Engenharia

Step Response
From: U(1) 1.4

pade Faz a aproximao de Pad, muito utilizada para representar o tempo morto. Tem como argumento o valor do tempo morto e a ordem da aproximao, retornando uma funo do tipo NUM/DEN. Quando executado sem os argumentos de retorno da esquerda, este comando compara a aproximao feita com a resposta exata do tempo morto de um sinal degrau e da defasagem. Para um tempo morto igual a 4, fazendo a aproximao de Pad de ordem 8, o resultado o seguinte:
q

1.2

Amplitude

To: Y(1)

0.8

0.6

0.4

0.2

0 0 2 4 6 8 10 12

Time (sec.)

zpkdata Este comando pega de um objeto LTI e retorna os valores dos zeros, plos e ganho do sistema, que so informaes teis na anlise de estabilidade do modelo e posterior construo do controlador.
[z,p,k] = zpkdata(G) z= [-1] p= [2x1 double] k= 1
p

pade(4,8);
Step response of 8th-order Pade approximation 1.5 1 Amplitude 0.5 0 -0.5

4 5 Time (secs) Phase response

0 -500 Phase (deg.) -1000 -1500 -2000 10


-1

10 Frequency (rad/s)

10

p{1} ans = -0.5000 + 0.8660i -0.5000 - 0.8660i

bode Apresenta o diagrama de Bode. Tem como argumento o objeto criado do modelo LTI. Neste grfico possvel se obter muitas informaes sobre o sistema referentes a sua estabilidade.
r

pole Retorna os valores dos plos do sistema. Toma como argumento um objeto LTI. Este comando eqivale a calcular os autovalores da matriz A na representao no espao de estado utilizando o comando eig.
p

bode(G)
Bode Diagrams
From: U(1) 5 0 -5

Phase (deg); Magnitude (dB)

-10 -15 -20 0 -20 To: Y(1) -40 -60 -80 -100 10-1 100 101

pole(G) ans = -0.5000 + 0.8660i -0.5000 - 0.8660i

zero Retorna o valor do zero de um modelo LTI. Ainda pode retornar o valor do ganho se no vetor de sada tiver mais de duas variveis.
[Z,K] = zero(G) Z= -1 K= 1

Frequency (rad/sec)

nyquist Faz o grfico de Nyquist tomando como argumento o objeto criado do modelo LTI. A anlise deste grfico permite fazer inferncias sobre a estabilidade do modelo em malha fechada a partir da observao da sua resposta em malha aberta.
q

nyquist(G);
Nyquist Diagrams
From: U(1) 1.5

pzmap Apresenta graficamente a localizao dos zeros e dos plos, permitindo uma anlise visual sobre a estabilidade de um sistema, por exemplo. Este comando usa como argumento um objeto do modelo LTI.
q

0.5

Imaginary Axis

To: Y(1)

-0.5

-1

-1.5 -1

-0.5

0.5

1.5

Real Axis

pzmap(G);

Resulta na seguinte figura:


Pole-zero map
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -1

margin Este comando retorna a margem de ganho e a margem de fase de um sistema tendo como entrada o objeto gerado para o modelo LTI. Quando executados sem os argumentos de retorno dos valores esquerda, ele apresenta graficamente como estes valores so obtidos atravs do diagrama de Bode.
0.2 0.4 0.6 0.8 1

Imag Axis

-0.8

-0.6

-0.4

-0.2

Real Axis

24

MATLAB Ferramenta matemtica para Engenharia


[K,P]=margin(G) K= Inf P= 109.4712 [K,P]=margin(G)
Bode Diagrams Gm = Inf, Pm=109.47 deg. (at 1.4142 rad/sec)
5 0 -5

forma amigvel, ou seja, utilizando uma interface grfica, o Graphical User Interface (GUI), para criar outras.

Conceitos Bsicos
O Handle Graphics uma estrutura orientada para objeto que permite a criao e manipulao de grficos e imagens. Os Object Handles podem ser considerados como indicadores nicos atribudos pelo MATLAB para cada objeto, permitindo desta maneira referenciar estes objetos para manipul-los. Existem 3 formas de se obter um handle:
101

Phase (deg); Magnitude (dB)

-10 -15 -20 0 -50 -100 -150 -200 10-1

100

Frequency (rad/sec)

a)

na criao do objeto

rlocus Retorna os valores e faz um grfico com o lugar das razes para um modelo SISO, tendo como argumento um objeto do modelo LTI. O grfico dos lugares das razes utilizado para analisar o sistema em malha fechada, apresentando tambm as trajetrias dos plos em malha fechada quando o ganho varia de zero a infinito.
s

b) atravs de comandos utilitrios c) utilizando o findobj

Para o caso de se desejar obter o handle do objeto na sua criao (a), basta armazen-lo um uma varivel, pois os handles so retornados automaticamente pelas suas funes de criao.
s

p = plot([1:10],sin(2*[1:10]));

rlocus(G);
1 0.8 0.6 0.4 0.2 Imag Axis 0 -0.2 -0.4 -0.6 -0.8 -1 -3

Neste caso o handle do grfico da funo seno ficar armazenado na varivel p, portanto se desejar-mos fazer qualquer modificao no grfico utilizando seu handle, basta utilizar p. A segunda forma de se obter um handle via comandos utilitrios (b): b.1) gcf
-2.5 -2 -1.5 -1 Real Axis -0.5 0 0.5 1

retorna o handle da figura corrente retorna o handle dos eixos correntes retorna o handle do objeto corrente obtm handle para CallBack Figure obtm handle para CallBack Object

b.2) gca b.3) gco b.4) gcbf b.5) gcbo

ltiview Abre o LTI viewer, o qual permite estudar as diversas anlises apresentadas anteriormente em uma nica janela. Ele utiliza como argumentos um modelo LTI criado previamente e o tipo de anlise que se deseja realizar.
ltiview('step',G);
Step Response
From: U(1) 1.4

A terceira forma atravs do comando findobj (c), que procura na figura o objeto atravs de propriedades especficas do objeto de interesse (como o TAG do objeto, por exemplo) e retorna o seu handle. Este comando ir procurar atravs de toda a hierarquia de objetos na figura at encontrar o objeto que possua as propriedades especificadas, porm, esta busca pode ser mais rpida se tambm for informado o objeto a partir do qual se deve iniciar a busca. A sua sintaxe a seguinte:

1.2

Amplitude

To: Y(1)

0.8

0.6

0.4

0.2

0 0 1 2 3 4 5 6 7

Time (sec.)

var_handle = findobj(ponto_incio,propriedade,valor) exemplo:


plot([1:10]); h = findobj(gca, 'Color',[0 0 1]); set (h, Color, [1 0 0]);

Este grfico foi obtido selecionand o estudo da resposta do sistema quando sugeito a uma entrada degrau, que pode ser selecionada clicando com o boto direito do mouse sobre a figura e escolhendo o tipo de grfico (plot type). Pode-se ainda obter caractersticas do sistema, como tmpo de subida, estado estacionrio, tempo de assentamento, etc. de forma interativa utilizando o mouse.

Neste exemplo, o handle da linha do grfico identificado pela sua cor azul e armazenado em h, e em seguida, atribuda a cor vermelha para a mesma. Como visto no exemplo, uma das formas de manipularmos objetos grficos atravs do comando set, enquanto que para pegarmos valores especficos de uma propriedade de um objeto, utiliza-se o comando get, em ambos os casos o handle funciona como endereo onde ser feita a ao. 25

2. GUIDE
Esta uma mais uma das ferramentas poderosas do MATLAB, que permite a construo de uma interface amigvel para o usurio e o que melhor, de uma

MATLAB Ferramenta matemtica para Engenharia

Uma maneira mais simples de trabalhar com os objetos grficos atravs do Graphical User Interface que executado atravs do comando guide.

f)

Ainda com o boto da figura selecionado, clique no boto Callback Editor do GCP e uma janela para edio de funes ser aberta. Na sua poro editvel, escreva o seguinte comando: set(gcbo,String,datestr(now,14)); Este comando far com que toda vez que o boto da figura for pressionado, a hora atual seja apresentada no prprio boto, pois a sua propriedade String est agora recebendo o valor da hora atual.

Para entender melhor o seu funcionamento so apresentados alguns exemplos prticos para implementao de uma interface amigvel.

Exemplos Simples de construo


Exemplo 1: Apresentar a hora cada vez que um boto que apresenta a hora pressionado. a) Abra o Guide Control Panel (GCP) digitando
t

g) Aps concludas estas operaes, salva-se a figura e no GCP torna a figura ativada da mesma maneira que ela foi tornada controlada anteriormente. h) Para execut-la no MATLAB, basta digitar o seu nome no workspace.

guide

Exemplo 2: Criar uma interface grfica na qual pode-se entrar uma funo e os limites da varivel independente para gerar seu grfico, permitindo a opo de apresentar ou no as linhas de grade. a) Abrir uma figura e acrescentar um, um eixo para apresentao de um grfico, duas caixa de texto, outras duas caixas editveis e um check box.

b) Este comando j cria abre uma figura automaticamente caso no haja nenhuma figura aberta. No caso de j haver, gere uma nova figura, para tanto, basta digitar figure no whorkspace que uma figura nova se abrir. c) Se a figura ainda no estiver marcada como controlada pelo GCP, ento selecione a figura desejada e pressione o boto Apply no GCP. Neste momento, a figura apresentada com algumas marcas diferentes, permitindo a sua edio direta com o mouse adicionando, apagando, redimensionando e editando objetos.

d) Pressione o boto push no GCP e o coloque na figura clicando e dimensionando com o mouse. b) Colocar os nomes de acordo com o esquema apresentado. Para tanto, basta selecionar o objeto, abrir o Property Editor e na propriedade String escrever os nomes correpondentes.

e)

D um duplo clic neste boto adicionado que se abrir automaticamente a janela do Property Editor, que permite que voc edite todas as propriedades de um objeto selecionado de uma dada figura. Procure pela propriedade String e a selecione. Depois de selecion-la, escreva o texto que desejas que aparea no boto quando da execuo do mesmo. Lembrando que o texto dever estar entre aspas simples.

c)

Abra o Callback Editor com o boto plot selecionado e digite as seguintes linhas de comando:

26

MATLAB Ferramenta matemtica para Engenharia

f=findobj(gcf,'style','edit','Tag','func'); xl=findobj(gcf,'style','edit','Tag','xlim'); xl =eval(get(xl,'String')); f = get(f,'String'); fplot(f,xl); d) A primeira linha de comando ir pegar o handle na caixa de texto editvel que possui o Tag func, enquanto que a segunda ir atribuir a xl o handle da caixa de texto editvel que possui o Tag xlim. Na linha seguinte, o valor que foi digitado nesta caixa, e que est armazenado na propriedade String pego pelo comando get e em seguida convertido em um valor e armazenado em xl. A Quarta linha pega o valor da propriedade String da caixa de textos da funo, que neste momento possui o identificador (handle) f, e armazena este valor na prpria varivel f. A ltima linha utiliza o comando fplot que faz um grfico de uma funo apenas tomando como argumento uma string da funo e um vetor com os limites da varivel independente. e) Selecione o check box e no Callback Editor digite as seguintes linhas: Hgrid=findobj(gcbf,'Tag','gridflag'); if get(Hgrid,'Value') grid on; else grid off; end f) A primeira linha armazena em Hgrid o handle do objeto que possui como Tag o nome gridflag. Na Segunda linha, avaliado se existe algum valor na propriedade deste objeto agora identificado por Hgrid, no caso afirmativo, grid on executado, caso contrrio executado o grid off.

CommandString = get(gcbo,'String'); EditHandle = findobj(gcbf,'Tag','EditText1'); ZString = get(EditHandle,'String'); eval(ZString); eval(CommandString); A primeira linha pega a o que est na propriedade String do objeto corrente, enquanto que a Segunda linha armazena o handle do objeto que possui o Tag EditText1. A terceira linha pega o que est no campo String do objeto identificado na linha anterior e armazena em ZString, que executado na linha seguinte e por fim, executa o comando que foi pego na primeira linha. c) Para colocar elementos um abaixo do outro no List box, deve-se entrar no workspace um cell array com as opes desejadas. Neste caso, pode-se fazer o seguinte:
u

cmaps={hsv ; hot; gray; cool};

Com esta lista armazenada no workspace, seleciona-se o List box na figura e no Property Editor e no campo String, digita-se cmaps sem as aspas simples. Desta maneira, o cell array com as opes armazenado em string para ser utilizado. d) Ainda com o List box selecionado, escreva no Callback Editor as seguintes linhas de comando: Value = get(gcbo,'Value'); String = get(gcbo,'String'); colormap(String{Value}); A primeira linha armazena em Value a posio referente s opes da lista, enquanto que na segunda linha armazenado em String o cell array que est no campo String do objeto corrente. Na terceira linha executado o comando colormap com a opo escolhida e) Salvar a figura e torn-la ativa.

g) Salvar esta figura com um nome e ativ-la da mesma forma que no exemplo anterior.

Exemplo 3: Criar uma interface grfica que permita o usurio entrar uma funo pr construda de trs variveis e esta seja apresentada de uma das diversas formas existente no MATLAB para grficos 3D, e ainda com a opo de alterar suas cores. a) Montar uma figura que tenha a seguinte estrutura bsica:

b) Slecione os 3 botes push e no Callback Editor digite as seguintes linhas: 27

MATLAB Ferramenta matemtica para Engenharia

Lista de Exerccios
1. AULA 1 Comandos no Workspace
Arquivo: a1_ew 1. Criar uma matriz A 20x2 com os elementos da primeira coluna variando de 1 a 20, com um intervalo unitrio, e dados aleatrios para os elementos da segunda coluna. 2. Atribuir ao vetor X os valores da primeira coluna da matriz A at a linha 15. Fazer o mesmo para a Segunda coluna, armazenando os dados no vetor Y. 3. Fazer um grfico com os vetores (X,Y). Colocar um ttulo e nomear os eixos. 4. Sobre o mesmo grfico anterior, apresentar uma parbola (x2 - 15x + 60) com linha tracejada vermelha.

Montar uma funo ( m-file)


Arquivo: a2_e2 Em um laboratrio de pesquisas so preparadas periodicamente solues de sulfato de alumnio para pesquisas sobre o tratamento de gua potvel. Os pedidos de soluo so realizados ao laboratrio de preparo de reagentes em concentraes sempre variveis. Tarefas: a) Desenvolver um programa para automatizar os clculos necessrios para o preparo das solues. O programa deve receber a quantidade de soluo necessria (ml) e a concentrao desejada (molaridade), gerando a quantidade de sal que deve ser utilizada (g). As solues so preparadas a partir de gua destilada e sulfato de alumnio hexadecahidratado (Al2(SO4)3.16H2O). S=32.06 O=16 Massas molares: Al=26,98 H=1

2. AULA 2 Montar um script-file


Arquivo: a2_e1 O dixido de titnio (TiO2) um pigmento branco muito utilizado na indstria de tintas. Em uma planta h dois tanques contendo dixido de titnio misturado com resina. Estes tanques possuem diferentes concentraes de pigmento: Identificao do tanque TQ-101 TQ-102 Concentrao ( % peso/peso) 15 5 Uma certa quantidade das misturas contidas em cada um destes tanques, ser adicionada em um terceiro tanque (TQ-103) para a produo de tintas: Tarefas: a) Para auxiliar o departamento de produo deve ser preparado um grfico que relacione a concentrao de pigmento (% p/p) no tanque TQ-103 com a razo entre a quantidade de massa adicionada proveniente do tanque TQ-101 e a quantidade de massa adicionada proveniente do tanque TQ-102. Traar o grfico entre as razes 0 e 10. b) Estimar atravs do grfico, a razo entre as massas adicionadas para a produo de uma tinta com concentrao de pigmento branco de 12 % p/p.

Exemplo de Programao utilizando mais de uma funo


Arquivos: a2_e3, funcao A determinao da soluo de uma equao algbrica um problema muito comum nos clculos de engenharia. Muitas vezes a soluo pode ser obtida atravs de tcnicas simples de manipulao algbrica, no entanto, em certas equaes, este procedimento no pode ser aplicado, ou seja, no possvel isolar a incgnita do problema. Para resolver este problema, foram desenvolvidos mtodos numricos que permitem determinar a raiz de uma equao a partir de um algoritmo adequado. O Mtodo da Bisseco um dos representantes mais simples desta classe de mtodos. Este mtodo se baseia na definio inicial de um intervalo de busca da raiz e medida que o mtodo se desenvolve, este intervalo seqencialmente reduzido at atingir a preciso desejada. Descrio do Mtodo da Bisseco: O problema original determinar a soluo da equao, isto , determinar x 0 tal que: (1) O Mtodo da Bisseco se inicia com a determinao de um intervalo [a,b] onde a raiz desejada esteja situada. Para que o mtodo funcione adequadamente, deve existir apenas uma raiz no intervalo [a,b] e a funo f(x) deve ser contnua no intervalo. Sejam xi e xs respectivamente o limite inferior e superior do intervalo de busca inicial. Ento:

f (x 0 ) = 0

28

MATLAB Ferramenta matemtica para Engenharia xi a (2) xs b (3) O primeiro passo do algoritmo determinar o ponto mdio do intervalo de busca [xi,xs] : xi + xs xm = (4) 2 So formados ento dois intervalos [xi,xm] e [xm,xs]. No prximo passo deve-se comparar os sinais dos valores da funo nos extremos destes intervalos. Esta comparao permitir indicar em qual dos intervalos est a raiz desejada. Em funo do resultado desta comparao, o algoritmo pode seguir duas alternativas possveis: Alternativa 1: f(xi) e f(xm) possuem o mesmo sinal e f(xm) e f(xs) possuem sinais contrrios. Isto significa que a raiz est no intervalo [xm,xs]. O intervalo de busca ento estreitado da seguinte forma, xi xm (5) Alternativa 2: f(xi) e f(xm) possuem sinais contrrios e f(xm) e f(xs) possuem o mesmo sinal. Isto significa que a raiz est no intervalo [xi,xm]. O intervalo de busca ento estreitado da seguinte forma, xs xm (6) A motivao dos procedimentos associados s duas alternativas pode ser melhor compreendida atravs da visualizao do grfico da prxima figura: Observao: claro que se durante o algoritmo f(xm) = 0, o procedimento imediatamente interrompido pois a raiz o prprio valor de xm. Tarefas: a) Descrever o algoritmo do Mtodo da Bisseco passo a passo, montando o fluxograma. b) Criar uma rotina computacional para a aplicao do mtodo. c) Um trocador de calor um equipamento destinado a permitir a transferncia de calor entre dois fluidos. Em um determinado modelo de trocador de calor, gua deve ser aquecida utilizando-se para isto uma corrente de leo. A equao abaixo relaciona a carga trmica (taxa de transferncia de calor entre os fluidos) com as temperaturas de entrada e sada do leo e da gua no equipamento: ( Toleo 1 Tagua 1 ) ( Toleo 2 Tagua 2) =0 Q UA Toleo 1 Tagua 1 ln( ) Toleo 2 Tagua 2 onde, Q - Carga trmica do trocador, 160.103 W U - Coeficiente global de transferncia de calor, 320 W/m2K A - rea do trocador de calor, 16 m2 Toleo1 - Temperatura de entrada do leo no trocador, 110 C Toleo2 - Temperatura de sada do leo no trocador, 80 C Tagua1 - Temperatura de entrada da gua no trocador, 35 C Tagua2 - Temperatura de sada da gua no trocador c.1) Fazer o grfico do valor numrico da equao em relao a temperatura de sada da gua (Tagua2). O grfico deve conter o ttulo e as identificaes dos eixos. Verifique atravs do grfico, se o Mtodo da Bisseco pode ser aplicado para a resoluo da equao. c.2) Determinar a temperatura de sada da gua do equipamento (Tagua2), utilizando como regio de busca inicial o intervalo 35,1 C at 79,9 C e tolerncia de 0,1 C.

xi

xm

xs

Figura - Procedimento de eliminao de intervalo

Observando o grfico, torna-se bvio que a raiz est no intervalo [xm,xs]. Neste intervalo a funo corta o eixo y = 0, ou seja, neste intervalo a funo muda de sinal e conseqentemente f(xm) e f(xs) apresentam sinais contrrios. O procedimento deve ento seguir a alternativa 1, com a eliminao do intervalo [xi,xm], onde j se sabe, a raiz no est presente. Aps a eliminao do intervalo, segundo a alternativa 1 ou 2, o algoritmo deve recalcular o ponto mdio e repetir a seqncia de procedimentos. importante observar que medida que o processo avana, o intervalo de busca vai se fechando em torno da raiz. Quando este intervalo torna-se menor que a tolerncia desejada, o processo interrompido e a soluo o ponto mdio do ltimo intervalo. 29

3. AULA 3 Agenda de endereos usando estruturas


Arquivo: a3_e1 Montar uma lista de endereos simples armazenando os dados em uma estrutura. Este programa deve permitir a localizao de telefones apenas dando o nome da pessoa.

MATLAB Ferramenta matemtica para Engenharia

4. AULA 4 Exemplo de S-function, mscaras e resoluo de sist. De equaes dif. no simulink


Arquivo: a4_e1.mdl, prexpre (s-function) Devido ao fato de grande parte dos biorreatores operarem em regime de batelada ou de semi-batelada sua operao inerentemente transiente, isto todas suas variveis [concentraes de clulas, de produtos(s) e de substrato(s); a temperatura (caso o biorreator for no isotrmico) mudam com o tempo. Os mtodos de anlise dinmica de processos, geralmente utilizados em controle de processos, sero de extrema utilidade nestas apresentaes, em especial sero apresentados conceitos iniciais de dinmica no linear que justificam vrios fenmenos inerentes a este tipo de processo. Como ilustrao de modelos dinmicos, o exemplo clssico o modelo dinmico da presa-predador. O modelo de Lotka-Volterra, desenvolvido no final da dcada de 1920!] que constitudo por um sistema de duas equaes diferenciais ordinrias fundamentadas em: o modelo descreve a interao entre duas espcies selvagens ( sendo : N1 o nmero de componentes da espcie 1 - presa - N2 o nmero de componentes da espcie 2 - predador), a presa herbvora e o predador carnvoro. Estes dois animais coabitam em uma regio onde a presa tem um suprimento ilimitado de vegetao natural para sua alimentao e os predadores tem como exclusivo suprimento alimentar as indefesas presas. Originalmente o modelo foi desenvolvido por LotkaVolterra para uma situao mais complexa e realista, isto : mais de duas espcies coexistindo e onde os predadores alimentam-se de mais de uma espcie de presa. Este caso simplificado tem seu modelo matemtico desenvolvido a partir das informaes: (a) Na ausncia do predador, a presa tem uma taxa natural de nascimento b e uma taxa natural de falecimento d. Uma vez que o suprimento de alimentos para esta espcie ilimitado, a taxa de nascimento maior que a de falecimento [b > d] , portanto a taxa especfica de crescimento de presa positiva, isto : 1 dN 1 = bd = >0 ; N 1 dt (b) Na presena do predador a presa consumida a uma taxa especfica proporcional ao nmero de predadores presentes, isto : 1 dN 1 = N2 ; N 1 dt (c) Na ausncia da presa o predador tem uma taxa especfica de crescimento negativa, uma vez que a inevitvel conseqncia de tal situao a inanio dos predadores, assim: 1 dN 2 = < 0 ; N 2 dt 30

(d) Na existncia da presa, o predador tem o suprimento de alimento que lhe permite sobreviver e reproduzir a uma taxa especfica proporcional a quantidade de presa, isto : 1 dN 2 = + N 1 N 2 dt Deste modo o modelo matemtico deste problema descrito pelas equaes diferenciais ordinrias: dN 1 dt = N 1 N 1 N 2 dN 1 = N 2 + N 1 N 2 dt Alm do conhecimento dos valores numricos dos parmetros do modelo (os valores de , , e ), para se resolver este sistema de equaes diferenciais ordinrias deve-se conhecer os valores de N1 e N2 em um determinado tempo (estas so as condies iniciais do problema). Tarefa: Construir no SIMULINK (S-function) para o modelo de Lotka-Volterra e rodar simulaes para vrias condies iniciais utilizando os parmetros: = 0,3/ano = 1/90 [1/(ano)/(nmero de espcies do predador];= 0,2106/ano = 0,00026325[1/(ano)/(nmero de espcies de presa];

5. AULA 5 Utilizando o GUIDE


Arquivo: a5_e1 Tarefa: Montar um programa que determine os coeficientes de um polinmio de grau n para um conjunto de dados experimentais. Este programa deve ter uma interface grfica amigvel.

MATLAB Ferramenta matemtica para Engenharia

Bibliografia recomendada
Manuais do MATLAB (podem ser encontrados na rede interna do DEQUI, no diretrio: p:\winapps\matlab2\hel\pdfdocs)

http://www.mathworks.com/ http://www.rpi.edu/~bequeb/Process_Dynamics/MATLA B/MATLAB_index.html http://www.owlnet.rice.edu/~ceng303/Matlab/MatCont.h tml http://www.indiana.edu/~statmath/smdoc/Matlab.html http://www.math.utah.edu/lab/ms/matlab/matlab.html http://www.math.ttu.edu/~gilliam/m5399-matlab.html http://www.geodyn.psu.edu/GEOSC203/tutorial.html http://www.math.ufl.edu/help/matlab-tutorial/ http://www.owlnet.rice.edu/~ceng301/toc.html

31

You might also like