Escolar Documentos
Profissional Documentos
Cultura Documentos
AULA 2 – PROGRAMAÇÃO 7
AULA 4 – SIMULINK 13
1. TOOLBOXES 21
2. GUIDE 25
LISTA DE EXERCÍCIOS 28
BIBLIOGRAFIA RECOMENDADA 31
2
Aula 1 - Conceitos Básicos
4
MATLAB – Ferramenta matemática para Engenharia
10 » title(‘Função co-seno’);
9
8
» xlabel(‘X’); ylabel(‘Y=cos(X)’);
7
hold on; ezplot(‘sin(x)’ , [0,pi]); hold off;
6
4
Outros comandos muito utilizados são:
3
2
• axes: gera eixos
1
1 2 3 4 5 6 7 8 9 10 • axis: controla a escala dos eixos
• legend: adiciona legenda
Este comando faz o gráfico de uma reta y = x. No caso • grid on/off: adiciona/retira as linhas de grade do
da entrada ser apenas um vetor coluna, o comando plot gráfico
o considera como ordenada e gera a abcissa • ginput: permite clicar no gráfico para pegar pontos
automaticamente. As cores da linha, bem como seu • gtext: adiciona textos em qualquer posição específica
estilo, podem ser acrescentados como argumentos na figura.
desta função da seguinte forma:
Ainda é possível fazer mais de um gráfico na mesma
plot(x, x, ’r’, x, 2 * x, ’--b'); figura com o comando subplot.
20
18
subplot(1,2,1);plot(1:10,'*b');subplot(1,2,2);plot(1:10,'--m');
16
10 10
14
12 9 9
10 8 8
8 7 7
6 6 6
4
5 5
2
4 4
0
1 2 3 4 5 6 7 8 9 10 3 3
2 2
1 1
Este comando gera um gráfico com duas retas, y=x e 0 5 10 0 5 10
Função co-seno
100
1
50
0
0.5 10
10
8
5
Y=cos(X)
6
0 4
2
0 0
-0.5
-1
O comando mesh cria um gráfico 3D na forma de uma
0 0.5 1 1.5
X
2 2.5 3 malha. Outros comandos, como o surf e o surfl criam um
gráfico com os elementos da malha preenchidos,
Para adicionar um título ao gráfico utiliza-se o permitindo ainda a possibilidade de uma representação
comando title, enquanto que para nomear os eixos, contínua, através do comando shading interp. Para
utiliza-se o comando xlabel / ylabel. Para adicionar representar linhas e pontos no espaço, o comando utilizado
mais de um gráfico na mesma figura, utiliza-se o é o plot3, que toma três vetores como argumento.
comando hold. Este comando funciona como uma
chave liga-desliga, adicionando outras funções no
mesmo gráfico enquanto não for executado o hold off.
5
MATLAB – Ferramenta matemática para Engenharia
scatter(x,y(:,2));
plot3(x , y , z); 15
10
200
150
100 5
50
0
10
0
10 1 2 3 4 5 6 7 8 9 10
8
5
6
4
2
0 0
x=[1:10];y = [x 1.5*x];
bar(x,y);
15
10
0
1 2 3 4 5 6 7 8 9 10
area(x,y);
25
20
15
10
0
1 2 3 4 5 6 7 8 9 10
pie(x);
4% 2%
5% 18%
7%
9%
16%
11%
15%
13%
6
MATLAB – Ferramenta matemática para Engenharia
Aula 2 – Programação
Calcular f V e fL a
( )
bP
z + 1 + 2 RT
workspace ou com dados criados durante a execução. Uma
vez que este tipo de m-file não possui argumentos de
ln
(
2bRT 2 z + 1 − 2 bP )
RT entrada e saída, as variáveis criadas são armazenadas no
f
φ= workspacedo MATLAB.
P
L
f L
Os script-files podem, inclusive, retornar elementos
P=P V
f
− 1 < tol ?
Escrever
f Não fV Sim P=Psat gráficos, usando comandos como plot.
No exemplo, as equações utilizadas são mostradas ao A seguir é proposto um exemplo de script-file para
lado de cada bloco de processo, o que também ajuda na determinar a fórmula molecular de um composto orgânico
implementação. As entradas do processo são a partir da sua fórmula centesimal e do peso molecular do
constantes do componente (temperatura e pressão composto. O m-file pode ser escrito em qualquer editor de
crítica e fator acêntrico), a temperatura desejada e uma texto, sendo armazenado com a extensão .m. Para ser
estimativa inicial para a pressão de vapor. A partir executado, deve-se digitar no prompt do MATLAB o
destes dados, utilizando a equação de estado de Peng- nome do arquivo (sem a extensão), sendo que o arquivo
Robinson a rotina é resolvida iterativamente até que o deve estar situado no diretório de trabalho ou então estar
no caminho (path) do MATLAB.
7
MATLAB – Ferramenta matemática para Engenharia
» global variavel
Para utilizar esta variável em um f-workspace o mesmo
•
! "
# $ #
%
8
MATLAB – Ferramenta matemática para Engenharia
»B ) * + , ) * + 2 9 + 1 2 1 + ,
B= - . / 0
* 1 2 1 + + 1 3 *
6
. 7
1 + 4 )
5
0 1 1 3 4
0 5
*
&
.
-1 0 1 6
. 7
1 + 4 )
5
-1 -1 0 ) * ) 8 9 + 1 ,
: ; <
: > ?
.
+ 9 1 B + + + 9 + C + +
> ? @
& A ( '
.
seqüência de operações compreendida entre o início e o Utilizando a forma vetorizada, para este exemplo, tem-se
final do intervalo (determinada pelo end) seja realizada uma redução de 70 % no tempo computacional.
até que uma determinada condição seja satisfeita.
5. Utilização do DEBUGGER
Operador lógico SWITCH O MATLAB possui um editor de textos que está
O operador switch trabalha de maneira muito parecida configurado para trabalhar com sua linguagem de
ao if, porém a sintaxe e o modo de implementação são programação, o DEBUGGER.
diferentes. Com este comando pode-se avaliar apenas Para rodar o editor, digite edit na linha de comando, um
uma expressão por vez, porém ela é mais documento em branco será aberto. Case se deseje rodar o
eficientemente avaliada para diferentes condições. editor e abrir um documento de texto, basta digitar edit
O comando switch inicia o operador, indicando a seguido do nome do arquivo.
expressão a ser avaliada. Com o comando case As principais vantagens da utilização deste editor são a
visualização gráfica dos textos digitados e a possibilidade
* de se trabalhar simultaneamente com o MATLAB e o
As possíveis operações relacionais são mostradas editor.
digitando-se help relop na linha de comando do
MATLAB
9
MATLAB – Ferramenta matemática para Engenharia
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 botões 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 várias células e usando o botão putmatrix,
então aparecerá uma janela pedindo o nome da variável
a ser armazenada com estes dados.
Para receber dados deve-se utilizar o botão getmatrix e
informar a variável onde estão armazenados os dados
que quer-se buscar.
É possível ainda utilizar funções do MATLAB no
Excel. Para tanto, usa-se o botão evalstring. As
variáveis de saída devem ser armazenadas no
workspace do MATLAB, então deve-se atribuir um
nome à variável 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 matemática para Engenharia
11
MATLAB – Ferramenta matemática para Engenharia
posição dois, que por sua vez ocupa a posição três da » e = struct('Disciplina','controle','Nota',9.5)
lista z. e=
Disciplina: 'controle'
Para criar uma lista de matrizes vazias pode-se utilizar Nota: 9.5000
o comando cell, que tem como argumento as
dimensões desejadas para a lista.
STRUCTURES
As estruturas são uma classe de matrizes do MATLAB
que permitem armazenar dados de naturezas diferentes
em um mesmo lugar. As estruturas diferem das Listas
por possuírem 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 são 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 matemática para Engenharia
Aula 4 – Simulink
" L "
O subsistema
W
$ X Y Z
Simulink Y Z #
W
#
V
# %
U
" !
%
um exemplo. ]
#
a
b #
E F G H I J d V J
"
K
i i
! L " j L L " j " "
T I V T J d H I G G H K J T I G
•
W
W
•
i
" "
h
G J T
$ b $ k l O P $
•
f b a
•
f
m
$
W
O exemplo utiliza subsistemas para simplificar o Antes de tudo deve-se iniciar o aplicativo, digitando
modelo. Um subsistema é um bloco que representa um simulink no prompt do MATLAB ou clicando no ícone
conjunto de blocos. Este exemplo contém cinco na barra de ferramentas. Deve surgir, então, o library
subsistemas, um representando o termostato " L "
browser, onde estão armazenados os blocos básicos do
(
$
M
E F G
!
H I
J K
N
$
aplicativo.
J K G
O P O Q R S L " "
F H G F G T J
U U
! ! " S L "
%
G V K T K G V K T K J F H G F G T
13
MATLAB – Ferramenta matemática para Engenharia
14
MATLAB – Ferramenta matemática para Engenharia
Pode-se agora testar o modelo rodando a simulação e 'menor que' no nome da corrente e então pressionar
alterando parâmetros como o polinômio, as funções de Ctrl+D.
trabalho, o intervalo de simulação.
Para salvar o modelo, clicar em Salvar como e escolher
o diretório. Os arquivos SIMULINK têm a
extensão .mdl.
15
MATLAB – Ferramenta matemática para Engenharia
3. S-functions
As chamadas S-functions (System Functions) são
descrições de sistemas dinâmicos, escritas em uma
linguagem de programação própria (ou em C e compiladas
como MEX-files), que interage com os solvers do
SIMULINK. Seu uso mais comum está vinculado ao
seguintes pontos:
• Criação de novos blocos para o SIMULINK
• Incorporação de códigos em C a uma simulação
• Descrição de um sistema como uma seqüência de
A segunda pasta contém os parâmetros de inicialização equações matemáticas ao invés de utilizar a álgebra de
da máscara, onde a caixa de diálogo é definida. Para blocos
• Utilização de animações gráficas (ver penddemo).
inserir um campo da caixa de diálogo, clicar em Add,
então um novo campo será adicionado à lista. Este Todos blocos do SIMULINK trabalham com entradas (u),
campo deve ser definido, escolhendo-se o tipo saídas (y) e elementos internos, ou estados (x). O esquema
(editável, caixa de checagem ou lista de opções) em a seguir demonstra cada elemento do bloco:
Control type, o nome e o símbolo da variável associada
ao campo (Prompt e Variable) e a ação a ser tomada
para o valor do campo (Evaluate calcula a variável e
Literal a mantém como string). Para o exemplo
y = m.x + b uma sugestão de janela, demonstrando o A relação matemática entre os elementos pode ser
uso do menu popup é mostrado a seguir. sintetizada por
16
MATLAB – Ferramenta matemática para Engenharia
y = f (t , x , u )
n
sys = ['nº de estados contínuos, nº de estados discretos', 'nº
∂x de saídas', 'nº de entradas', 'flag para utilização da entrada
= x = g( t, x, u )
∂t para determinação do próximo passo', 'número de tempos
de amostragem']
ou seja, os estados nada mais são do que as variáveis
do modelo que são derivadas no tempo.
Normalmente, para sistemas contínuos, se utilizam apenas
Nos arquivos de S-functions os vetores de estado são as posições 1, 3 e 4 da matriz. As demais posições são
divididos em duas partes, uma primeira que contém substituídas por zero.
apenas estados contínuos e uma segunda que contém
estados discretos. Quando flag vale um devem ser informadas as equações
diferenciais do modelo e quando flag vale 4 devem ser
O SIMULINK faz várias chamadas de cada bloco do
informadas as equações de saída da S-function.
modelo durante fases específicas de simulação,
executando tarefas como cálculo das saídas,
Para melhor compreender o funcionamento das S-functions
atualização de estados, ou determinação de derivadas.
vamos utilizar dois exemplos simples.
Chamadas adicionais são feitas no princípio e término
de uma simulação para executar a inicialização e a
terminação. A figura a seguir ilustra como o Criação de uma S-function simples para
SIMULINK executa uma simulação. Primeiro, o é integração do sinal de entrada
realizada a inicialização de cada bloco, inclusive das S- Vamos criar uma S-function que realiza a integração do
functions. Então o SIMULINK entra no loop de sinal de entrada. Nesta simples implementação utilizamos
simulação, onde cada passagem pelo loop é chamado o conceito de flags e a seqüência do fluxograma.
um passo de simulação. Durante cada passo da
simulação, o SIMULINK executa seu bloco S-function. O modelo a ser construído, então, é
n
Calcula saídas
function [sys, x0] = sfint(t,x,u,flag)
17
MATLAB – Ferramenta matemática para Engenharia
if ~exist('par')
par = [1 1 .2 100]; % Valores default
end
switch flag
case 0
x0 = h0; % Condições 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 (nível do tanque)
sys(2) = K*sqrt(x); % Fo (vazão de saída)
case {1, 2, 4, 9}
sys = []; % Não utilizar flags
end
V Ab
h
ρ
FO
18
MATLAB – Ferramenta matemática para Engenharia
Digital Clock Generate simulation time at the Abs Output the absolute value of the input.
specified sampling interval. Algebraic Constrain the input signal to zero.
Digital Pulse Generate pulses at regular intervals. Constraint
Generator Combinatorial Implement a truth table.
From File Read data from a file. Logic
FromWorkspa Read datafrom amatrixdefined in the Complex to Output the phase and magnitude of a
ce workspace. Magnitude- complex input signal.
Pulse Generate pulses at regular intervals. Angle
Generator Complex to Output the real and imaginary parts of
Ramp Generate a constantly increasing or Real-Imag a complex input signal.
decreasing signal. Derivative Output the time derivative of the input.
Random Generate normally distributed random Dot Product Generate the dot product.
Number numbers. Gain Multiply block input.
Repeating Generate a repeatable arbitrary signal. Logical Perform the specified logical operation
Sequence Operator on the input.
Signal Generate various waveforms. Magnitude- Output a complex signal from
Generator Angle to magnitude and phase inputs.
Sine Wave Generate a sine wave. Complex
Step Generate a step function. Math Perform a mathematical function.
Uniform Generate uniformly distributed random Function
Random numbers. Matrix Gain Multiply the input by a matrix.
Number MinMax Output the minimum or maximum
input value.
Table 2: Sinks Library Blocks Product Generate the product or quotient of
Display Show the value of the input. block inputs.
Scope Display signals generated during a Real-Imag to Output a complex signal from real and
simulation. Complex imaginary inputs.
Stop Stop the simulation when the input is Relational Perform the specified relational
Simulation nonzero. Operator operation on the input.
To File Write data to a file. Rounding Perform a rounding function.
To Workspace Write data to a matrix in the Function
workspace. Sign Indicate the sign of the input.
XY Graph Display an XY plot of signals using a Slider Gain Vary a scalar gain using a slider.
MATLAB figure window. Sum Generate the sum of inputs.
Trigonometric Perform a trigonometric function.
Table 3: Discrete Library Blocks Function
Discrete Filter Implement IIR and FIR filters.
Discrete Implement a discrete state-space Table 6: Functions & Tables Library Blocks
State-Space system. Fcn Apply a specified expression to the
Discrete-Time Perform discrete-time integration of input.
Integrator asignal. Look-Up Perform piecewise linear mapping of
Discrete Implement a discrete transfer function. Table the input.
Transfer Fcn Look-Up Perform piecewise linear mapping of
Discrete Zero- Implement a discrete transfer Table (2-D) two inputs.
Pole functionspecified in terms of poles and MATLAB Apply a MATLAB function or
zeros. Fcn expression to the input.
First-Order Implement a first-order sample-and- S-Function Access an S-function.
Hold hold.
Unit Delay Delay a signal one sample period. Table 7: Nonlinear Library Blocks
Zero-Order Implement zero-order hold of one Backlash Model the behavior of a system with
Hold sampleperiod. play.
Coulomb & Model discontinuity at zero, with linear
Table 4: Continuous Library Blocks Viscous gain elsewhere.
Derivative Output the time derivative of the input. Friction
Integrator Integrate a signal. Dead Zone Provide a region of zero output.
Memory Output the block input from the Manual Switch between two inputs.
previous time step. Switch
State-Space Implement a linear state-space system. Multiport Choose between block inputs.
Transfer Fcn Implement a linear transfer function. Switch
Transport Delay the input by a given amount of Quantizer Discretize input at a specified interval.
Delay time. Rate Limiter Limit the rate of change of a signal.
Variable Delay the input by a variable amount Relay Switch output between two constants.
Transport of time. Saturation Limit the range of a signal.
Delay Switch Switch between two inputs.
Zero-Pole Implement a transfer function specified
in terms of poles and zeros. Table 8: Signals & Systems Library Blocks
Bus Selector Output selected input signals.
Table 5: Math Library Blocks Configurable Represent any block selected from a
19
MATLAB – Ferramenta matemática para Engenharia
20
MATLAB – Ferramenta matemática para Engenharia
limit
1. Toolboxes
Calcula o limite de uma função. A sintaxe é a seguinte:
A idéia desta seção é apresentar sucintamente algumas
das funções consideradas como as mais utilizadas pelo limit (F, x, a, ‘right’ ou ‘left’);
estudante de graduação e pós-graduação no decorrer do Esta expressão calcula o limite da função F (string) para
curso e também as potencialidades desta grande x→ a pela direita ou pela esquerda.
ferramenta: o MATLAB. Portanto não é o objetivo Antes de executar esta função, deve-se transformar as
desta seção entrar em maiores detalhes, os quais podem variáveis envolvidas no cálculo em objetos simbólicos
ser obtidos em manuais gigantescos que existem para através da função syms.
cada um dos toolboxes que serão apresentados ou então
uma ajuda razoável que pode ser obtida no help on » syms x
line. » limit((x-2)/(x^2-4),x,2)
ans =
1/4
Symbolic Math
solve
Este toolbox permite trabalhar com funções na forma
simbólica, retornando uma solução analítica para os Resolve simbolicamente equações algébricas. As equações
problemas. De um modo geral, existem duas formas de e as variáveis desconhecidas deverão ser expressões
se trabalhar com expressões simbólicas; a primeira é simbólicas ou strings.
utilizando strings enquanto que a outra é utilizando
objetos simbólicos. Os objetos simbólicos são uma » solve('p * sin(x) = r','x')
classe definida pelo MATLAB que permite sua ans =
manipulação através de funções específicas do asin(r/p)
symbolic toolbox.
» [x,y] = solve('x^2 + x * y + y = 3','x^2 - 4*x + 3 = 0')
A seguir são apresentadas algumas das funções mais x=
utilizadas neste toolbox. Para mais detalhes sobre estas [ 1]
funções ou para procurar outras funções existentes, [ 3]
pode-se utilizar o help on line do MATLAB y=
procurando por symbolic. [ 1]
[ -3/2]
diff
dsolve
Esta função calcula a derivada simbólica de uma
função que está na forma de string. Calcula a solução simbólica de equações diferenciais
ordinárias. As equações devem estar na forma de strings e
» diff('sin(a)','a')
a variável a ser diferenciada em relação a variável
ans =
cos(a)
independente é antecedida pela letra D. No caso da ordem
ser maior que um, utiliza-se a notação: D2, D3, etc. Por
No caso do argumento desta função ser um vetor, ela definição, a variável independente é t, mas pode ser
retornará a diferença entre os elementos i+1 e i. E no alterada na chamada da função colocando a nova variável
caso de matrizes, pode-se definir a ordem (o) da na última posição da chamada da função. As condições
diferença em se ela será aplicada sobre as linhas (1) ou iniciais são especificados por equações do tipo: ‘y(a)=b’
colunas(2). A sintaxe neste caso é a seguinte: ou ‘Dy(a)=b’ , onde y é uma das variáveis dependentes
» diff (X, o, 1 ou 2); enquanto a e b são constantes. Se o número de condições
iniciais for menor que o de variáveis dependentes, serão
int colocadas constantes arbitrárias (C1, C2,...) na solução
Calcula a integral de uma função. Esta função pode final.
fazer diferentes tipos de cálculos de acordo com os » dsolve('Dx = - a * x')
argumentos de entrada: ans =
C1*exp(- a * t)
int(S) calcula a integral definida de S em relação à
variável definida pela função findsym. S é uma string » x = dsolve('Dx = - a * x', 'x(0) = 1','s')
ou uma variável sym. x=
int (S,v) calcula a integral indefinida de S e, relação a exp(- a * s)
string v.
int (S,a,b) calcula a integral definida de S em relação a o
21
MATLAB – Ferramenta matemática para Engenharia
» S = dsolve('Df = f + g', 'Dg = -f + g', 'f(0) = 1','g(0) = 2') A lista de todas as opções disponíveis pode ser encontrada
S= no help on line procurando por optimset.
f: [1x1 sym]
g: [1x1 sym] fzero
» [S. f S. g]
ans =
Este comando calcula os zeros de uma função escalar.
[ exp(t)*(cos(t)+2*sin(t)), - exp(t)*(sin(t)-2*cos(t))] Tem como argumentos básicos a função que se deseja
determinar os zeros e um vetor com os intervalos da região
laplace onde será feita a busca (sign(f(x1)) ≠ sign(f(x2))).
Calcula a transformada de Laplace de uma função em Geralmente a função é um M-file criado especificamente
relação a variável t (padrão). Se a função for dada em para este problema, que deve pegar valores reais como
termos de s, então laplace retorna a sua inversa em t. argumento e retornar valores reais. Outra opção é
utilizando o comando inline, que cria uma função objeto
As variáveis utilizadas nesta função devem ser objetos para ser utilizada pelo comando fzero.
simbólicos, portanto sempre devem ser declaras antes
através do comando syms. » f=inline('x^2-6*x+5');
» fzero(f,[0 2])
» syms a s t w x Zero found in the interval: [0, 2].
» laplace(t^5) ans =
ans = 1
120/s^6 » fzero(f,7)
» laplace(exp(a * s)) Zero found in the interval: [4.76, 8.5839].
ans = ans =
1/(t - a) 5
» laplace(sin(w * x),t)
ans = fsolve
w/(t^2+w^2) Resolve equações não lineares do tipo: F(X) = 0,
» laplace(diff(sym('F(t)')))
utilizando o método dos mínimos quadrados, onde F e X
ans =
s * laplace(F(t), t, s)-F(0) podem ser vetores ou matrizes. A função F deve ser
implementada na forma de um M-file. A sintaxe deste
comando é a seguinte:
Optimization Toolbox
Neste toolbox encontram-se funções para cálculos de X = fsolve(‘função.m’, X0, opções, P1, P2, ...);
otimização, ou seja, problemas minimização com ou onde X0 é a matriz com os valores para inicializar o
sem restrições, minimização de funções multi- problema, opções é o conjunto de opções definidas com o
objetivos, método dos mínimos quadrados linear e não optimset e P1, P2,... são os parâmetros que são passados
linear, cálculo de zeros, etc. Todos estes algoritmos para a função.
possuem opções específicas inerentes aos métodos
utilizados, a tolerância permitida, dentre outras. Para fminbnd
definir quais serão estas opções, o MATLAB utiliza Resolve o problema de minimização de uma função
uma estrutura que guarda todas as informações escalar não linear com restrição. A sua sintaxe geral é a
necessárias que serão utilizadas por uma função seguinte::
específica. Esta estrutura pode ser definida utilizando o
comando optimset, que é apresentado em seguida. X = fminbnd(FUN, x1, x2, opções, P1, P2, ..)
Maiores detalhes sobre algumas das funções onde X é o valor do mínimo local pertencente ao intervalo
apresentadas ou para procurar outras funções, pode-se (x1 , x2) da função FUN que em geral é um M-file. A outra
utilizar o help on line do MATLAB procurando por forma de resolver é utilizando o comando inline.
optim. » f =inline('(x-2)^3+5*(x-2)^2+13');
optimset » x = fminbnd(f,0,6)
Optimization terminated successfully:
Cria uma estrutura com as opções que serão utilizadas the current x satisfies the termination criteria using
pelas funções do Optimization Toolbox. A sua sintaxe é OPTIONS.TolX of 1.000000e-004
a seguinte: x=
2.0000
options = optimset(‘par1’,valor1,’par2’,valor2,...)
lsqnonlin
Outra forma de definir os parâmetros é utilizar os
parâmetros padrões utilizados pela função que se Resolve problemas não lineares de mínimos quadrados
deseja utilizar. Para isso, deve-se entrar uma string com a seguinte forma:
com o nome da função como argumento para optimset. min{sum[FUN(X).^2]}
» optimset ( ‘ fzero ‘ ); onde X e os valores retornados pela função FUN podem
Para fazer uma cópia das opções antigas e alterando ser vetores ou matrizes. A sintaxe geral é a seguinte:
apenas algumas, deve-se proceder da seguinte maneira: X = lsqnonlin(FUN, X0,LB,UB, opções, P1, P2, ..)
» new_opts = optimset(old_optos, ‘par1’,valor1);
22
MATLAB – Ferramenta matemática para Engenharia
23
MATLAB – Ferramenta matemática para Engenharia
Step Response
1.4
From: U(1)
pade
1.2
1
Faz a aproximação de Padè, muito utilizada para
representar o tempo morto. Tem como argumento o valor
Amplitude
0.8
To: Y(1)
0.6
do tempo morto e a ordem da aproximação, retornando
0.4
0.2
uma função do tipo NUM/DEN. Quando executado sem os
0
0 2 4 6 8 10 12
argumentos de retorno da esquerda, este comando compara
Time (sec.)
a aproximação feita com a resposta exata do tempo morto
zpkdata de um sinal degrau e da defasagem. Para um tempo morto
igual a 4, fazendo a aproximação de Padè de ordem 8, o
Este comando pega de um objeto LTI e retorna os resultado é o seguinte:
valores dos zeros, pólos e ganho do sistema, que são
informações úteis na análise de estabilidade do modelo
q
pade(4,8);
e posterior construção do controlador. 1.5
Step response of 8th-order Pade approximation
Amplitude
» [z,p,k] = zpkdata(G) 0.5
z= -0.5
0
[-1]
0 1 2 3 4 5 6 7 8
Time (secs)
Phase response
0
p= -500
Phase (deg.)
-1000
[2x1 double] -1500
k= -2000
-1 0 1
10 10 10
1 Frequency (rad/s)
p{1} bode
ans =
-0.5000 + 0.8660i Apresenta o diagrama de Bode. Tem como argumento o
-0.5000 - 0.8660i objeto criado do modelo LTI. Neste gráfico é possível se
obter muitas informações sobre o sistema referentes a sua
pole
estabilidade.
Retorna os valores dos pólos do sistema. Toma como
argumento um objeto LTI. Este comando eqüivale a bode(G)
r
From: U(1)
-5
Phase (deg); Magnitude (dB)
-10
p
pole(G) -15
-20
ans = 0
-20
-60
-100
10-1 100 101
nyquist(G);
pzmap 1.5
Nyquist Diagrams
From: U(1)
LTI. -1.5
-1 -0.5 0 0.5 1 1.5
Real Axis
pzmap(G);
margin
Resulta na seguinte figura:
Pole-zero map
Este comando retorna a margem de ganho e a margem de
1
0.8
fase de um sistema tendo como entrada o objeto gerado
0.6 para o modelo LTI. Quando executados sem os argumentos
0.4
0.2
de retorno dos valores à esquerda, ele apresenta
Imag Axis
-0.2
graficamente como estes valores são obtidos através do
-0.4
-0.6
diagrama de Bode.
-0.8
-1
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Real Axis
24
MATLAB – Ferramenta matemática para Engenharia
0
imagens. Os Object Handles podem ser considerados
-5
como indicadores únicos atribuídos pelo MATLAB para
Phase (deg); Magnitude (dB)
-10
-15
-20
cada objeto, permitindo desta maneira referenciar estes
0
-50
objetos para manipulá-los. Existem 3 formas de se obter
-100
-150
um handle:
-200
10-1 100
Frequency (rad/sec)
101
a) na criação do objeto
p = plot([1:10],sin(2*[1:10]));
s
0.8
qualquer modificação no gráfico utilizando seu handle,
0.6
0.4
basta utilizar p.
0.2
-0.2
-0.4
utilitários (b):
-0.6
1.2
Este comando irá procurar através de toda a hierarquia de
1
objetos na figura até encontrar o objeto que possua as
Amplitude
0.8
0.6
Time (sec.)
var_handle = findobj(ponto_início,propriedade,valor)
Este gráfico foi obtido selecionand o estudo da resposta exemplo:
do sistema quando sugeito a uma entrada degrau, que
pode ser selecionada clicando com o botão direito do » plot([1:10]);
» h = findobj(gca, 'Color',[0 0 1]);
mouse sobre a figura e escolhendo o tipo de gráfico » set (h, ‘Color’, [1 0 0]);
(plot type). Pode-se ainda obter características do
sistema, como tmpo de subida, estado estacionário, Neste exemplo, o handle da linha do gráfico é identificado
tempo de assentamento, etc. de forma interativa pela sua cor azul e armazenado em h, e em seguida, é
utilizando o mouse. atribuída a cor vermelha para a mesma.
Como visto no exemplo, uma das formas de manipular-
2. GUIDE mos objetos gráficos é através do comando set, enquanto
Esta é uma mais uma das ferramentas poderosas do que para pegarmos valores específicos de uma propriedade
MATLAB, que permite a construção de uma interface de um objeto, utiliza-se o comando get, em ambos os casos
amigável para o usuário e o que é melhor, de uma o handle funciona como “endereço” onde será feita a ação.
25
MATLAB – Ferramenta matemática para Engenharia
Uma maneira mais simples de trabalhar com os objetos f) Ainda com o botão da figura selecionado, clique no
gráficos é através do Graphical User Interface que é botão Callback Editor do GCP e uma janela para
executado através do comando guide. edição de funções será aberta. Na sua porção editável,
escreva o seguinte comando:
set(gcbo,’String’,datestr(now,14));
Este comando fará com que toda vez que o botão da
figura for pressionado, a hora atual seja apresentada
no próprio botão, pois a sua propriedade String está
agora recebendo o valor da hora atual.
Exemplo 2:
b) Este comando já cria abre uma figura Criar uma interface gráfica na qual pode-se entrar uma
automaticamente caso não haja nenhuma figura função e os limites da variável independente para gerar seu
aberta. No caso de já haver, gere uma nova figura, gráfico, permitindo a opção de apresentar ou não as linhas
para tanto, basta digitar figure no whorkspace que de grade.
uma figura nova se abrirá.
a) Abrir uma figura e acrescentar um, um eixo para
c) Se a figura ainda não estiver marcada como apresentação de um gráfico, duas caixa de texto,
controlada pelo GCP, então selecione a figura outras duas caixas editáveis e um check box.
desejada e pressione o botão Apply no GCP. Neste
momento, a figura é apresentada com algumas
marcas diferentes, permitindo a sua edição direta
com o mouse adicionando, apagando,
redimensionando e editando objetos.
d) Pressione o botão push no GCP e o coloque na
figura clicando e dimensionando com o mouse.
26
MATLAB – Ferramenta matemática para Engenharia
CommandString = get(gcbo,'String');
EditHandle = findobj(gcbf,'Tag','EditText1');
f=findobj(gcf,'style','edit','Tag','func'); ZString = get(EditHandle,'String');
xl=findobj(gcf,'style','edit','Tag','xlim'); eval(ZString);
xl =eval(get(xl,'String')); eval(CommandString);
f = get(f,'String'); A primeira linha pega a o que está na propriedade
fplot(f,xl); String do objeto corrente, enquanto que a Segunda
d) A primeira linha de comando irá pegar o handle na linha armazena o handle do objeto que possui o Tag
caixa de texto editável que possui o Tag func, EditText1. A terceira linha pega o que está no campo
enquanto que a segunda irá atribuir a xl o handle String do objeto identificado na linha anterior e
da caixa de texto editável que possui o Tag xlim. armazena em ZString, que é executado na linha
Na linha seguinte, o valor que foi digitado nesta seguinte e por fim, executa o comando que foi pego na
caixa, e que está armazenado na propriedade primeira linha.
String é pego pelo comando get e em seguida c) Para colocar elementos um abaixo do outro no List
convertido em um valor e armazenado em xl. A box, deve-se entrar no workspace um cell array com
Quarta linha pega o valor da propriedade String da as opções desejadas. Neste caso, pode-se fazer o
caixa de textos da função, que neste momento seguinte:
possui o identificador (handle) f, e armazena este
cmaps={‘hsv’ ; ’hot’; ‘gray’; ‘cool’};
u
Exemplo 3:
Criar uma interface gráfica que permita o usuário
entrar uma função pré construída de três variáveis e
esta seja apresentada de uma das diversas formas
existente no MATLAB para gráficos 3D, e ainda com a
opção de alterar suas cores.
a) Montar uma figura que tenha a seguinte estrutura
básica:
27
MATLAB – Ferramenta matemática para Engenharia
Lista de Exercícios
28
MATLAB – Ferramenta matemática para Engenharia
xi ← a (2) Observação:
xs ← b (3) É claro que se durante o algoritmo f(xm) = 0, o
O primeiro passo do algoritmo é determinar o ponto procedimento é imediatamente interrompido pois a raiz é
médio do intervalo de busca [xi,xs] : o próprio valor de xm.
xi + xs
xm = (4) Tarefas:
2
a) Descrever o algoritmo do Método da Bissecção passo
São formados então dois intervalos [xi,xm] e [xm,xs]. No
a passo, montando o fluxograma.
próximo passo deve-se comparar os sinais dos valores da
b) Criar uma rotina computacional para a aplicação do
função nos extremos destes intervalos. Esta comparação
método.
permitirá indicar em qual dos intervalos está a raiz
c) Um trocador de calor é um equipamento destinado a
desejada.
permitir a transferência de calor entre dois fluidos. Em
Em função do resultado desta comparação, o algoritmo
um determinado modelo de trocador de calor, água deve
pode seguir duas alternativas possíveis:
ser aquecida utilizando-se para isto uma corrente de óleo.
Alternativa 1:
A equação abaixo relaciona a carga térmica (taxa de
f(xi) e f(xm) possuem o mesmo sinal e f(xm) e f(xs)
transferência de calor entre os fluidos) com as
possuem sinais contrários.
temperaturas de entrada e saída do óleo e da água no
Isto significa que a raiz está no intervalo [xm,xs]. O
equipamento:
intervalo de busca é então estreitado da seguinte forma,
xi ← xm ( Toleo1 − Tagua1 ) − ( Toleo2 − Tagua2 )
(5) Q −UA =0
Alternativa 2: Toleo1 − Tagua1
ln( )
f(xi) e f(xm) possuem sinais contrários e f(xm) e f(xs) Toleo2 − Tagua2
possuem o mesmo sinal. onde,
Isto significa que a raiz está no intervalo [xi,xm]. O Q - Carga térmica do trocador, 160.103 W
intervalo de busca é então estreitado da seguinte forma, U - Coeficiente global de transferência de calor,
xs ← xm (6) 320 W/m2K
A motivação dos procedimentos associados às duas A - Área do trocador de calor, 16 m2
alternativas pode ser melhor compreendida através da Toleo1 - Temperatura de entrada do óleo no trocador,
visualização do gráfico da próxima figura: 110 °C
Toleo2 - Temperatura de saída do óleo no trocador, 80 °C
Tagua1 - Temperatura de entrada da água no trocador,
35 °C
Tagua2 - Temperatura de saída da água no trocador
29
MATLAB – Ferramenta matemática para Engenharia
30
MATLAB – Ferramenta matemática para Engenharia
Bibliografia recomendada
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