Sei sulla pagina 1di 102

Sumrio

1 Apresentao 5
1.1 Soluo de Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1 Enunciado do Problema . . . . . . . . . . . . . . . . . . . . . . 5
1.1.2 Descrio Entrada/Sada . . . . . . . . . . . . . . . . . . . . . 5
1.1.3 Exemplo Manual . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.4 Soluo MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.5 Testando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Apresentao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1 Ambiente de Trabalho . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.2 Editor de Linhas de Comando . . . . . . . . . . . . . . . . . . . 10
2 Introduo 13
2.1 Introduo a Matrizes Simples . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Elementos de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Declarao de Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Informaes sobre a rea de Trabalho . . . . . . . . . . . . . . . . . . 17
2.5 Nmeros e Expresses Aritmticas . . . . . . . . . . . . . . . . . . . . . 17
2.6 Nmeros e Matrizes Complexas . . . . . . . . . . . . . . . . . . . . . . 18
2.7 Formatao de Sada . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.8 Utilizao do comando help . . . . . . . . . . . . . . . . . . . . . . . . 20
2.9 Utilizao do comando lookfor . . . . . . . . . . . . . . . . . . . . . . . 21
2.10 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3 Manipulao de Matrizes e Vetores 23
3.1 Operaes com Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.1 Transposio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.2 Adio e Subtrao . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.3 Multiplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.4 Diviso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.5 Potenciao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Operaes Elemento a Elemento (Conjuntos) . . . . . . . . . . . . . . 25
3.2.1 Adio e Subtrao . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.2 Multiplicao e Diviso . . . . . . . . . . . . . . . . . . . . . . 26
3.2.3 Potenciao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Matrizes Elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.1 Gerao de Vetores . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.2 Matriz Identidade . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.3 Matriz Composta por Elementos Unitrios . . . . . . . . . . . . 28
3.3.4 Matriz Nula . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.5 Matriz Aleatria . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4 Elementos de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5 Manipulao de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 30
2
3.5.1 Matriz Diagonal ou Diagonal de uma Matriz . . . . . . . . . . . 30
3.5.2 Matrizes Triangulares . . . . . . . . . . . . . . . . . . . . . . . 31
3.5.3 Redimensionamento de Matrizes . . . . . . . . . . . . . . . . . . 31
3.5.4 Rotao dos Elementos da Matriz . . . . . . . . . . . . . . . . 32
4 Funes 33
4.1 Funes Escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 Funes Vetoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3 Funes Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5 Polinmios 35
6 Anlise Polinomial 37
6.1 Avaliao do polinmio . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2 Comando polyval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.3 Operaes Aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.3.1 Soma e subtrao . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.3.2 Multiplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.3.3 Diviso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.4 Razes de polinmios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7 Grcos 42
7.1 Grcos X-Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.1.1 Acessrios para os Grcos . . . . . . . . . . . . . . . . . . . . 44
7.1.2 Nmeros Complexos . . . . . . . . . . . . . . . . . . . . . . . . 46
7.2 Grcos Polares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.3 Grcos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8 Programao 51
8.1 Arquivo.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8.2 Operadores Lgicos e Relacionais . . . . . . . . . . . . . . . . . . . . . 51
8.2.1 Operadores Relacionais . . . . . . . . . . . . . . . . . . . . . . 52
8.2.2 Operadores Lgicos . . . . . . . . . . . . . . . . . . . . . . . . 52
8.3 Comandos For, While e If . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.3.1 Ciclo For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.3.2 Comando If . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.3.3 Ciclo While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.4 Declarando Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
9 Sistemas de Equaes Lineares 58
9.1 Interpretao grca . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
9.2 Soluo usando operao com matrizes . . . . . . . . . . . . . . . . . . 59
9.3 Diviso de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
9.4 Matriz inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3
10 Clculo 61
10.1 Zeros de Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
10.2 Minimizao de Funes . . . . . . . . . . . . . . . . . . . . . . . . . . 61
10.3 Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
10.4 Limites esquerda e direita . . . . . . . . . . . . . . . . . . . . . . . 63
10.5 Integrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.5.1 Soluo Simblica . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.5.2 Soluo Numrica . . . . . . . . . . . . . . . . . . . . . . . . . 64
10.6 Diferenciao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
10.6.1 Derivao por expresses de diferenas . . . . . . . . . . . . . . 68
10.6.2 Comando di . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
10.6.3 Derivadas de ordem superior . . . . . . . . . . . . . . . . . . . . 70
10.6.4 Derivadas Trigonomtricas: . . . . . . . . . . . . . . . . . . . . 71
11 Ajuste de Curvas 72
11.1 Ajuste de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
11.2 Interpolao Unidimensional . . . . . . . . . . . . . . . . . . . . . . . . 73
12 Transformadas 76
12.1 Funes Degrau e Impulso . . . . . . . . . . . . . . . . . . . . . . . . . 76
12.2 Transformada de Laplace . . . . . . . . . . . . . . . . . . . . . . . . . 77
12.3 Transformada de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . 77
12.4 Transformada Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
12.5 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
12.5.1 Exerccio 1: Sistemas Lineares . . . . . . . . . . . . . . . . . . . 78
12.5.2 Exerccio 2: Equaes Diferenciais e Transformadas . . . . . . . 79
12.5.3 Exerccio 3: Transformada de Fourier . . . . . . . . . . . . . . . 81
13 SIMULINK 85
13.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
13.1.1 Diagrama de Blocos . . . . . . . . . . . . . . . . . . . . . . . . 86
13.1.2 Smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
13.2 Conhecendo o Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . 87
13.2.1 Iniciando o Simulink . . . . . . . . . . . . . . . . . . . . . . . . 87
13.2.2 Construindo e analisando um modelo simples . . . . . . . . . . . 88
13.2.3 Exemplo: Modelo de um processo biolgico . . . . . . . . . . . . 89
13.3 Principais blocos do Simulink e suas funes . . . . . . . . . . . . . . . 95
13.3.1 Principais Fontes(Sources): . . . . . . . . . . . . . . . . . . . . 97
13.3.2 Principais blocos usados na modelgem de sistemas dinmicos . . 97
13.3.3 Vericao do modelo . . . . . . . . . . . . . . . . . . . . . . . 98
13.3.4 Blocos de sadas(Sinks) . . . . . . . . . . . . . . . . . . . . . . 98
13.3.5 Criando blocos de sub-sistemas . . . . . . . . . . . . . . . . . . 98
13.3.6 Blocos condicionais . . . . . . . . . . . . . . . . . . . . . . . . 99
13.3.7 Personalizando o modelo e manipulando Blocos . . . . . . . . . 99
14 Referncias Bibliogrcas 102
4
1
Apresentao
1.1 Soluo de Problemas
A soluo de problemas parte essencial no somente dos cursos de engenharia, mas
tambm dos cursos de Matemtica, Fsica, Qumica e Cincia da Computao. Logo,
importante uma base slida em soluo de problemas. Tambm de grande auxlio um
embasamento suciente para trabalhar em todas estas reas, para que no tenhamos
que aprender uma tcnica para problemas de matemtica, e uma tcnica diferente para
problemas de fsica, e assim por diante.
O processo ou metodologia para resoluo de problemas que usaremos ao longo do
texto possui cinco passos:
1. Enunciar o problema claramente.
2. Descrever a informao de entrada e sada.
3. Trabalhar o problema manualmente.
4. Desenvolver uma soluo MATLAB.
5. Testar a soluo usando uma variedade de grupo de dados.
Descreveremos cada um dos passos usando o exemplo do clculo da distncia entre
dois pontos em um plano.
1.1.1 Enunciado do Problema
O primeiro passo enunciar o problema claramente. extremamente importante que
o enunciado seja conciso para evitar desentendimentos. Para este exemplo, o enunciado
do problema :
Calcule a distncia em linha reta entre dois pontos num plano.
1.1.2 Descrio Entrada/Sada
O segundo passo descrever cuidadosamente a informao que dada para resolver o
problema e ento identicar os valores a serem calculados. Estes itens representam a en-
trada e a sada para o problema e agregadamente podem ser chamados entrada/sada,
ou I/0. Para muitos problemas, til usar um diagrama que mostra a entrada e a
sada. Algumas vezes, este tipo de diagrama chamado de caixa preta porque no
estamos denindo para este ponto todos os passos para determinar a sada, mas es-
tamos mostrando a informao que usada para calcular a sada. Para este exemplo,
poderamos usar o diagrama na Figura 1.
5
Figura 1: Diagrama I/0
1.1.3 Exemplo Manual
O terceiro passo trabalhar o problema manualmente ou com uma calculadora, us-
ando um pequeno grupo de dados. um passo muito importante e no deve ser ignorado
por mais simples que seja o problema. um item no qual voc trabalha os detalhes da
soluo do problema. Se voc no pode pegar um simples grupo de nmeros e calcular
a sada (seja manualmente ou com uma calculadora), ento voc no est pronto para
executar o prximo passo; voc deve reler o problema e talvez consultar material de
referncia. Uma vez que pode trabalhar o problema de um simples grupo de dados,
ento voc est pronto para desenvolver um algoritmo ou um esboo passo a passo da
soluo. Este esboo convertido para os comandos MATLAB para que possamos usar
o computador para fazer todos os clculos. O exemplo manual para este exemplo
mostrado a seguir:
Suponha que os pontos p
1
e p
2
tenham as seguintes coordenadas:
p
1
= (1, 5)
p
2
= (4, 7)
Queremos calcular a distncia entre dois pontos, que a hipotenusa de um tringulo
retngulo, conforme mostra a Figura 2. Usando o Teorema de Pitgoras, podemos cal-
cular a distncia d com a seguinte equao:
d =
_
S
2
1
+ S
2
2
d =
_
(4 1)
2
+ (7 5)
2
d =

13
d = 3.61
6
Figura 2: Triangulo retngulo
1.1.4 Soluo MATLAB
No prximo captulo, falaremos sobre os comandos MATLAB. Contudo da soluo
voc pode ver que os comandos so muito similares s equaes que foram usadas no
exemplo manual. O sinal de percentagem usado para anteceder comentrios que ex-
plicam os comandos MATLAB.
%
% Este programa calcula e imprime
% distncia, em linha reta, entre dois pontos.
p1 = [1,5]; % ponto 1 inicial
p2 = [4,7]; % ponto2 inicial
d = sqrt (sum ((p2-p1).^2)) % calcular distncia
1.1.5 Testando
O passo nal em nosso processo de soluo de problemas testar a soluo. Primeira-
mente, devemos testar a soluo com os dados do exemplo manual, j que calculamos
a soluo. Quando os comandos MATLAB na soluo so executados, o computador
mostra a seguinte sada:
d = 3.6056
Esta sada coincide com o valor que calculamos no exemplo manual. Se a soluo
MATLAB no coincidir com o exemplo manual, devemos rever ambas solues a m
de encontrar o erro. Uma vez que a soluo trabalha com o exemplo manual, devemos
tambm test-la com vrios grupos de dados para certicar que a soluo vlida para
outras sries de dados.
7
1.2 Apresentao
O MATLAB
R
pode ser usado como uma linguagem de programao ou como uma
ferramenta de clculo interativa. Em ambos os casos, o ambiente MATLAB permite a
realizao de clculos, visualizao de resultados e desenvolvimento de algoritmos usando
uma sintaxe muito prxima da notao matemtica usual.
O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de
funcionamento. Todas as variveis so denidas de forma matricial, o que faz com
que este ambiente seja ideal para resolver problemas de clculo envolvendo matrizes e
vetores.
Um arquivo de programa MATLAB recebe a extenso .m e, por isso, tambm
chamado de m-le ou arquivo .m. Ele pode ser criado e/ou modicado no editor prprio
do MATLAB - MATLAB Editor/Debugger - que possui caractersticas que auxiliam
bastante na edio de programas como auto-colorizao de palavras de acordo com a
sintaxe e interao com o ambiente de clculo do MATLAB. Existem tambm os arquivos
.mat que so arquivos binrios que contm as variveis da Workspace. Estes arquivos
so gerados indo em
File-> Save Workspace -> nomedoarquivo.mat
importante diferenciar, portanto, arquivos .m dos arquivos .mat. Os arquivos .m
contm uma srie de comandos que, ao serem chamados no Workspace, so executados.
J os arquivos .mat contm somente as variveis e os seus valores armazenados.
Uma das grandes virtudes do MATLAB que todas as suas funes so escritas em
m-les, sendo que algumas delas podem ser modicadas e vrias outras criadas. Este
fato possibilitou a criao de diversos conjuntos de funes especcas para determi-
nadas reas, como controle, anlise de sinais, nanas, entre outras. Estes conjuntos de
funes, ou de m-les, so chamados de toolbox.
Toolboxes direcionados para diversas reas so distribudos pela The MathWorks
Inc. - empresa que desenvolve o software MATLAB (http://www.mathworks.com) - e
inmeros outros so desenvolvidos em todo o mundo, com e sem reconhecimento da
MathWorks, e podem geralmente ser encontrados na internet.
Um dos toolboxes desenvolvidos pela MathWorks chamado Simulink. Ele uma
ferramenta interativa para desenvolvimento, simulao e anlise de sistemas dinmicos
atravs da criao de modelos baseados em diagramas de blocos. Conjuntos de blocos
podem ser usados para modelar sistemas especcos. Esses conjuntos de blocos so
chamados Blocksets.
Assim como ocorre com os toolboxes, blocksets direcionados a vrias reas so tam-
bm desenvolvidos em todo o mundo. Para ilustrar a vastido do campo de aplicao do
MATLAB, abaixo segue uma pequena listagem de toolboxes e blocksets desenvolvidos
pela MathWorks.
Aerospace Blockset
Biblioteca que utiliza os fundamentos do SIMULINK para prover ferramentas espe-
cializadas para o desenvolvimento de ferramentas de modelagem, integrao e simulao
de aeronaves, naves espaciais, msseis sistemas de propulso ou subsistemas.
Bioinformatics Toolbox
8
Aplicativo MATLAB que possui ferramentas especializadas para anlise de genoma,
visualizao e normalizao de micro vetores e anlise das propriedades de protenas.
Communications Blockset
Aplicativo SIMULINK composto por cerca de 150 blocos do SIMULINK dedicados
s reas de desenvolvimento de projeto, simulao e anlise de sistemas de comunicao
digitais e analgicos.
Control System Toolbox
Aplicativo MATLAB para rea de modelagem e anlise de sistemas automticos de
controle. Este Toolbox permite modelar, simular e analisar sistemas contnuos e discre-
tos, com mltiplas entradas e mltiplas sadas (MIMO).
Data Acquisition Toolbox
Aplicativo MATLAB composto por funes para importao de dados obtidos a par-
tir de placas de aquisio de dados.
Curve Fitting Toolbox
Aplicativo MATLAB de ajuste de curvas. Este Toolbox permite modelar, simular e
analisar sosticados mtodos de ajuste de curvas de forma prtica e exvel.
Financial Toolbox
Aplicativo MATLAB para rea nanceira (estudo de preos, clculo de juros e inves-
timentos, anlise de derivativos e otimizao de portiflios).
Statistics e Optimization Toolboxes so necessrios para o funcionamento do Finan-
cial Toolbox.
Image Processing Toolbox
Aplicativo MATLAB para rea de processamento de imagens (estudo, tratamento e
anlise de sinais analgicos/digitais transformados em imagens grcas). Signal Pro-
cessing Toolbox necessrio para o funcionamento deste Toolbox.
Mapping Toolbox
Aplicativo MATLAB composto por funes para tratamento de mapas e informaes
cartogrcas (por exemplo: coordenadas cartogrcas, deformaes, representaes tri-
dimensionais).
Partial Dierential Equation Toolbox
Aplicativo MATLAB composto por funes para resoluo de equaes diferenciais
parciais em espao bidimensional utilizando mtodo de elementos nitos.
Statistics Toolbox
Aplicativo MATLAB para rea de estatstica, incluindo alm de ferramentas estats-
ticas bsicas de anlise de dados, recurso de modelagem e anlise estatstica de modelos
lineares e no-lineares.
SimMechanics
9
Biblioteca de blocos do SIMULINK que possibilita a modelagem e simulao de sis-
temas mecnicos, tais como: componentes mecnicos (corpos e juntas), simulao de
movimentos, etc.
1.2.1 Ambiente de Trabalho
Quando o MATLAB inicializado, trs janelas so exibidas: a Workspace, a Com-
mand History e a Janela de Comando (Command Window). Na aba Workspace aparecem
as variveis, seu tamanho e valor atual, as variveis so arrays onde cada elemento tem
8 bytes e podem ser editadas utilizando o Array Editor atravs de um clique duplo no
nome da varivel. Na janela Command History so armazenados todos os comandos j
utilizados, sendo que estes podem ser reescritos na Command Window apenas utilizando
as teclas UP e DOWN do teclado, sem necessidade de serem digitados novamente. Por
sua vez, a Janela de Comando a parte principal do MATLAB, onde sero escritos os
cdigos, funes e demais comandos. Nessa janela, o prompt padro (>>) exibido
na tela e, a partir deste ponto, o MATLAB espera as instrues do utilizador. Para
introduzir uma pequena matriz, por exemplo, utiliza-se:
>> A = [1 2 3; 4 5 6; 7 8 7]
Colocam-se colchetes em torno dos dados e separam-se as linhas por ponto e vrgula.
Quando se pressiona a tecla <enter> o MATLAB responde com:
A =
1 2 3
4 5 6
7 8 7
Para inverter esta matriz, utiliza-se:
>> B = inv(A)
B =
-2.1667 1.6667 -0.5000
2.3333 -2.3333 1.0000
-0.5000 1.0000 -0.5000
1.2.2 Editor de Linhas de Comando
As setas para cima e para baixo do teclado podem ser usadas para navegar entre
comandos usados anteriormente, para nova execuo ou reedio. No caso de pretender
10
efetuar o clculo de:
log
_

tan
_

5
_
_
Introduz-se na janela de comando:
>> log (sqt(tan(pi/5)))
Como para calcular a raiz quadrada o comando certo sqrt, o MATLAB responde
com uma mensagem de erro:
??? Undefined function or variable sqt.
O comando com a resposta apropriada seria:
>> log (sqrt(tan(pi/5)))
ans=
-0.1597
NOTA: Todas as funes que utilizam algum tipo de ngulo em seus argumentos
interpretam tal ngulo como sendo em radianos.
O Matlab possui diversas variveis predenidas, incluindo pi, Inf, NaN, i e j. Trs
exemplos so mostrados abaixo:
>> z = 3 + 4*i
z =
3.0000 + 4.0000i
>> Inf
ans =
Inf
>> 0/0
Warning: Divide by zero.
ans =
NaN
O termo NaN signica, em ingls, Not-a-Number (smbolo de indeterminao) e
resulta de operaes de valor indeterminado. Inf representa + e pi representa . A
varivel i =

1 usada para representar nmeros complexos. A varivel j =

1
11
pode ser usada em vez de i nas operaes aritmticas com nmeros complexos por
aqueles que a preferem. Estas variveis predenidas podem ser redenidas. claro
que elas podem ser redenidas intencionalmente a m de liberar o nome da varivel
para outros usos. Por exemplo, pode-se querer usar i como inteiro e reservar j para
a aritmtica com nmeros complexos. Seja cauteloso e deixe estes nomes de variveis
predenidas intocados, pois h uma innidade de nomes alternativos que podem ser
usados. As variveis predenidas podem ser realocadas aos seus valores default usando
o comando clear nome da varivel (por exemplo, clear pi).
12
2
Introduo
O MATLAB trabalha essencialmente com um tipo de objeto: uma matriz numrica
retangular podendo conter elementos complexos. Observa-se que um escalar uma
matriz de dimenso 1x1 e que um vetor uma matriz que possui somente uma linha ou
uma coluna.
2.1 Introduo a Matrizes Simples
As matrizes podem ser introduzidas no MATLAB de diferentes modos:
- Introduzida na Janela de Comando (lista explcita de elementos).
- Geradas por comandos e funes.
- Criadas em arquivos .m.
- Carregadas a partir de um arquivo de dados externo.
O mtodo mais fcil de introduzir pequenas matrizes no MATLAB utilizando uma
lista explcita. Os elementos de cada linha da matriz so separados por espaos em
branco ou vrgulas e as colunas separadas por ponto e vrgula, colocando-se colchetes
em volta do grupo de elementos que formam a matriz com o objetivo de limit-la. Por
exemplo, introduzindo-se a expresso:
>> A=[1 2 3; 4 5 6; 7 8 7]
A =
1 2 3
4 5 6
7 8 7
A matriz A guardada na memria RAM do computador, cando armazenada para
uso posterior. As matrizes podem, tambm, ser introduzidas linha a linha, o que indi-
cado para matrizes de grande dimenso. Por exemplo:
A=
[1 2 3
4 5 6
7 8 7]
Outra maneira para introduzir matrizes no MATLAB atravs de um arquivo no
formato texto com extenso .m. Por exemplo, se um arquivo chamado matriz.m
contiver estas trs linhas de texto:
13
A=
[1 2 3
4 5 6
7 8 7]
Ento a expresso matriz ler o arquivo e introduzir a matriz A.
>>matriz
O comando load pode ler matrizes geradas pelo MATLAB e armazenadas em arquivos
binrios ou matrizes geradas por outros programas armazenadas em arquivos ASCII. As-
sim, para ler um arquivo .mat chamado matriz.mat segue-se a seguinte estrutura: load
matriz.mat, e as variveis salvas no arquivo binrio matriz.mat sero carregadas na
Workspace.
NOTA: Em todos os exemplos, m e n so inteiros positivos.
Para especicar um nico elemento da matriz utilizam-se os ndices referentes ao
nmero de linha e nmero de coluna entre parnteses da matriz onde se encontra o
elemento: A(m,n).
Outra forma de gerar matrizes atravs de ciclos for. Por exemplo, para gerar uma
matriz M com i linhas e j colunas, a seguinte estrutura pode ser utilizada:
>> for i = 1:3,
for j = 1:3,
M(i,j) = i+j;
end
end
E obtemos como resultado a matriz:
>> M
M =
2 3 4
3 4 5
4 5 6
OBS: o ndice das matrizes comea em 1, no em 0.
14
2.2 Elementos de Matrizes
Os elementos das matrizes podem ser quaisquer expresses do MATLAB. Por exem-
plo:
>> x = [-1.3 sqrt(2) ((1+2+3)*4/5)^2]
x =
-1.3000 1.4142 23.0400
Um elemento individual da matriz pode ser referenciado com ndice entre parnteses.
Continuando o exemplo:
>> x(6) = abs(x(1))
x =
-1.3000 1.4142 23.0400 0 0 1.3000
Nota-se que a dimenso do vetor x aumentada automaticamente de 1x3 para 1x6
de modo a acomodar o novo elemento, e que os elementos indenidos do intervalo so
estabelecidos como zero.
Matrizes de maior dimenso podem ser construdas a partir de pequenas matrizes.
Por exemplo, pode-se anexar outra linha matriz A usando:
>> r= [ 10 11 12];
>> A= [A;r]
A =
1 2 3
4 5 6
7 8 7
10 11 12
Nota-se que o vetor r no foi listado porque ao seu nal foi acrescentado ;.
Podem ser extradas matrizes pequenas da matriz original utilizando :.
Por exemplo:
>> A = A(1:3,:)
A =
1 2 3
4 5 6
7 8 7
15
Seleciona da linha 1 at a linha 3 e todas as colunas da matriz A atual.
2.3 Declarao de Variveis
O MATLAB uma linguagem de expresses. As expresses usadas so interpretadas
e avaliadas pelo sistema. As declaraes no MATLAB so freqentemente da forma:
>> variavel = expressao
Ou simplesmente:
>> expressao
As expresses so compostas de operadores e outros caracteres especiais, de funes
e dos nomes das variveis. As avaliaes das expresses produzem matrizes, que so
ento mostradas na tela e atribudas s variveis para uso futuro. Se o nome da varivel
e o sinal de igualdade = so omitidos, a varivel com o nome ans, que representa a
palavra answer (resposta), automaticamente criada. Por exemplo, introduzindo a
expresso:
>> 1900/81
ans=
23.4568
Se o ltimo caractere da declarao um ponto e vrgula, ;, a impresso na tela
suprimida, mas a tarefa realizada. Esse procedimento usado em arquivos com
extenso .m e em situaes onde o resultado uma matriz de grandes dimenses e h
interesse em apenas alguns dos seus elementos.
Se a expresso to grande que no cabe em apenas uma linha, pode-se continuar
a expresso na prxima linha usando um espao em branco e trs pontos, ..., ao nal
das linhas incompletas. Por exemplo:
>> s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ...
- 1/8 + 1/9 - 1/10 + 1/11 - 1/12 + 1/13;
Calcula o resultado da srie, atribuindo o somatrio varivel s, mas no imprime o
resultado na tela.
As variveis e funes podem ser formadas por um conjunto de letras, ou por um
conjunto de letras e nmeros, onde somente os primeiros 19 caracteres do conjunto so
identicados. O MATLAB faz distino entre letras maisculas e minsculas,
16
assim a e A no so as mesmas variveis, exceto para os argumentos do comando
help . Todas as funes devem ser escritas em letras minsculas: inv(A) calcula a
inversa de A, mas INV(A) uma funo indenida.
2.4 Informaes sobre a rea de Trabalho
Os exemplos de declaraes mostrados nos itens acima criaram variveis que so
armazenadas na rea de Trabalho do MATLAB. Executando:
>> who
Obtm-se uma lista das variveis armazenadas na rea de Trabalho:
Your variables are:
A B ans r s x
que mostra as seis variveis geradas nos exemplos, incluindo ans.
Observe que o comando who est em letras minsculas. Todo comando no MATLAB
deve ser inserido dessa forma.
Uma informao mais detalhada que indica a dimenso de cada uma das variveis
correntes obtida com whos, que para o exemplo produz:
>> whos
Name Size Bytes Class
A 4x3 96 double array
B 3x3 72 double array
ans 3x3 72 double array
r 1x3 24 double array
s 1x1 8 double array
x 1x3 24 double array
Grand total is 37 elements using 296 bytes
Cada elemento de uma matriz real requer 8 bytes de memria, assim a matriz A de
dimenso 4x3 faz uso de 96 bytes e todas as variveis utilizadas um total de 296 bytes.
2.5 Nmeros e Expresses Aritmticas
A notao decimal convencional, com ponto decimal opcional e o sinal negativo,
usada para nmeros. A potncia de dez pode ser includa como um suxo. A seguir so
17
mostrados alguns exemplos de nmeros aceitos:
3 -99 0.00001
9.637458638 1.602E-20 6.06375e23
As expresses podem ser construdas atravs dos operadores aritmticos usuais e das
regras de precedncia:
1

Potenciao
2 / Diviso direita
2 \ Diviso esquerda
3 * Multiplicao
4 + Adio
4 - Subtrao
Deve-se notar que existem dois smbolos para diviso: as expresses 1/4 e 4\1 pos-
suem o mesmo valor numrico, isto , 0.25.
So usados parnteses na sua forma padro para alterar a procedncia usual dos
operadores aritmticos.
2.6 Nmeros e Matrizes Complexas
Os Nmeros Complexos so permitidos em todas as operaes e funes no MAT-
LAB. Os nmeros complexos so introduzidos utilizando as funes especiais i ou j que
correspondem parte imaginria de um nmero complexo. Por exemplo:
>> z= 3 + 4*i
ou
>> z= 3 + 4*j
Sabendo que um nmero complexo constitudo por uma parte real Re e por uma
parte imaginria Im, tal que:
z = Re + Im*i
ele pode ser expresso na forma:
18
>> z= r*exp(i*theta)
em que:
>> r = abs(z)
>> theta = angle(z)*180/pi
As seguintes declaraes mostram dois caminhos convenientes para se introduzir ma-
trizes complexas no MATLAB:
>> A= [1 2; 3 4]+i*[5 6;7 8]
ou
>> A= [1+5*i 2+6*i; 3+7*i 4+8*i]
Ambas produzem o mesmo resultado.
Se quisermos determinar a parte real da matriz A usamos a funo real(A), j a parte
imaginria pode ser visualizada com a funo imag(A) como pode ser visualizado abaixo:
>> real(A)
ans =
1 2
3 4
>> imag(A)
ans =
5 6
7 8
2.7 Formatao de Sada
O formato numrico exibido na tela pode ser modicado utilizando o comando for-
mat, que afeta somente o modo como as matrizes so mostradas, e no como elas so
calculadas ou guardadas (o MATLAB efetua todas as operaes em dupla preciso).
Se todos os elementos da matriz so inteiros exatos, a matriz mostrada num for-
mato sem qualquer ponto decimal. Por exemplo:
19
>> x = [-1 0 1]
x =
-1 0 1
Se pelo menos um dos elementos da matriz no inteiro exato, existem vrias pos-
sibilidades de formatar a sada. O formato padro, chamado de formato short, mostra
aproximadamente 5 dgitos signicativos ou usam notao cientca. Para modicar o
formato da sada, devemos inserir o comando format. A tabela abaixo mostra os princi-
pais formatos:
short 5 dgitos signicativos
short e 5 dgitos signicativos em notao cientca
long 15 dgitos signicativos
long e 15 dgitos signicativos em notao cientca
hex em sistema hexadecimal
rat em formato de nmero racional
bank duas casas aps a vrgula
+ Mostra o sinal do nmero sem o seu valor,
a parte imaginria do nmero ignorada
Com o formato short e long, se o maior elemento da matriz superior a 1000 ou
inferior a 0.001, aplicado um fator de escala comum para que a matriz completa seja
mostrada. Por exemplo:
>> X = 1e20*x
X =
1.0e+020 *
1.3333 0 0.0000
Com o comando format + os smbolos +, -, e espao em branco so mostra-
dos, respectivamente para representar elementos positivos, elementos negativos e zeros.
2.8 Utilizao do comando help
O MATLAB possui um comando de ajuda: help , que fornece informaes sobre a
maior parte dos tpicos:
>> help
Para obter informaes sobre um tpico especco, referir help tpico. Por exemplo,
20
>> help plot
fornece uma lista de todos os comandos relacionados com grcos bidimensionais.
A mesma sintaxe usada para obter informaes sobre um comando especco.
Temos como usar, alm da linha de comando, o boto F1, que chama o MATLAB
help, que se localiza nos tpicos de ajuda
2.9 Utilizao do comando lookfor
Embora o comando help fornea permita-lhe conseguir uma ajuda, ele pode no
ser a maneira mais conveniente, a menos que voc saiba o tpico exato sobre o qual
necessita de informaes.
Para isso, o comando lookfor fornece ajuda fazendo uma busca em toda primeira
linha dos tpicos de ajuda e retornando aqueles que contm as palavras-chave que voc
especicou. O mais importante que a palavra-chave no precisa ser um comando MAT-
LAB. Por exemplo, faz-se uma busca por funes relacionadas palavra-chave "fourier":
FFT Discrete Fourier transform.
FFT2 Two-dimensional discrete Fourier Transform.
FFTN N-dimensional discrete Fourier Transform.
IFFT Inverse discrete Fourier transform.
IFFT2 Two-dimensional inverse discrete Fourier transform.
IFFTN N-dimensional inverse discrete Fourier transform.
lookfor laplace
DFTMTX Discrete Fourier transform matrix.
SPECGRAM Spectrogram using a Short-Time Fourier Transform (STFT).
TDAFDFT Transform-domain adaptive filter using discrete Fourier
transform.
FFT Quantized Fast Fourier Transform.
FREQS Laplace-transform (s-domain) frequency response.
2.10 Funes
As potencialidades do MATLAB residem no seu extenso conjunto de funes. O
MATLAB possui um grande nmero de funes intrnsecas que no podem ser alteradas
pelo utilizador. Outras funes esto disponveis numa biblioteca externa distribuda
com o programa original (MATLAB TOOLBOX), que so na realidade arquivos com a
extenso .m criados a partir das funes intrnsecas. As categorias gerais de funes
matemticas disponveis no MATLAB incluem:
- Matemtica elementar;
- Funes especiais;
21
- Matrizes elementares;
- Matrizes especiais;
- Decomposio e fatorao de matrizes;
- Anlise de dados;
- Polinmios;
- Soluo de equaes diferenciais;
- Equaes no-lineares e otimizao;
- Integrao numrica;
- Processamento de sinais;
- Entre outras
As sees subseqentes mostram mais detalhadamente as diferentes categorias de
funes. Qualquer informao adicional sobre os contedos das diversas categorias
poder ser encontrado no arquivo de ajuda de cada funo obtido digitando o comando
help na janela de comando.
22
3
Manipulao de Matrizes e Vetores
3.1 Operaes com Matrizes
O MATLAB possui dois tipos diferentes de operaes aritmticas. As operaes arit-
mticas matriciais so denidas pelas regras da lgebra Linear. As operaes aritmticas
com arrays (conjuntos) so efetuadas elemento por elemento. O caractere de ponto dec-
imal . distingue as operaes matriciais das operaes com arrays. No entanto, como
as operaes matriciais e com arrays so iguais para a soma e para a subtrao, o par
de caracteres .+ e .- no usado para estas.
As operaes com matrizes no MATLAB so as seguintes:
- Transposio;
- Adio;
- Subtrao;
- Multiplicao;
- Diviso direita;
- Diviso esquerda;
- Potenciao.
A seguir cada uma destas operaes apresentada com maior detalhe.
3.1.1 Transposio
O caractere apstrofo ( ) indica a transposta de uma matriz, por exemplo:
>> B = A % A varivel B recebe a matriz transposta de A
Se Z for uma matriz complexa, Z ser a matriz conjugada complexa transposta.
>>Z = [1 2; 3 4] + [5 6; 7 8]*i
Z =
1.0000+ 5.0000i 2.0000+ 6.0000i
3.0000+ 7.0000i 4.0000+ 8.0000i
>>Z1 = Z
Z1 =
1.0000- 5.0000i 3.0000- 7.0000i
2.0000- 6.0000i 4.0000- 8.0000i
Para obter simplesmente a transposta de Z deve-se usar Z., como mostra o exemplo:
23
>>Z2 = Z.
Z2 =
1.0000+ 5.0000i 3.0000+ 7.0000i
2.0000+ 6.0000i 4.0000+ 8.0000i
Caso desejar apenas a matriz complexa conjugada de Z deve-se usar Z.
>> Z3 = Z.
Z3 =
1.0000 - 5.0000i 2.0000 - 6.0000i
3.0000 - 7.0000i 4.0000 - 8.0000i
3.1.2 Adio e Subtrao
A adio e a subtrao de matrizes so indicadas, respectivamente, por + e -.
As operaes so denidas somente se as matrizes possurem as mesmas dimenses.
A adio e a subtrao tambm so denidas se um dos operadores for um escalar,
ou seja, uma matriz 1x1. Neste caso, o escalar adicionado ou subtrado de todos os
elementos do outro operador. Por exemplo:
>> y = [1 2; 3 8] - 1
y =
0 1
2 7
3.1.3 Multiplicao
A multiplicao de matrizes indicada por *. A multiplicao x*y denida
somente se a segunda dimenso de x for igual primeira dimenso de y.
Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.
Por exemplo:
>> x=[-1; 0; 2];
>> pi*x
ans=
-3.1416
0
6.2832
24
Se os tamanhos das matrizes forem incompatveis para a operao matricial, ser
gerada uma mensagem de erro, com exceo do caso de operaes entre escalares e
matrizes (para adio, subtrao, diviso e multiplicao).
3.1.4 Diviso
A diviso de matrizes requer especial ateno, pois existem dois smbolos para diviso
de matrizes no MATLAB \ e /". Se A for uma matriz inversvel quadrada e b for um
vetor coluna (ou linha) compatvel, ento A\b e b/A correspondero respectivamente
multiplicao esquerda e direita da matriz b pela inversa da matriz A, ou inv(A)*b
e b*inv(A), mas o resultado obtido diretamente:
X = A\b a soluo de A*X = b
X = b/A a soluo de X*A = b
Deve-se ter o cuidado de observar as dimenses das matrizes que esto envolvidas
na operao, o nmero de colunas de A deve ser igual ao nmero de linhas de b em
A\b, j em b/A o nmero de linhas de A deve ser igual ao nmero de colunas de b em
A\b. A diviso direita denida em termos da diviso esquerda por:
b/A = (A\b)
3.1.5 Potenciao
A expresso A

p eleva A p-sima potncia e denida se A matriz quadrada


e p um escalar. Se p um inteiro maior do que um, a potenciao calculada como
mltiplas multiplicaes.
Se A uma matriz e a um escalar, a

A calcula o escalar elevado matriz A


fazendo uso dos autovalores e autovetores.
NOTA: X

A, sendo X e A matrizes, apresenta erro.


3.2 Operaes Elemento a Elemento (Conjuntos)
O termo operaes com conjuntos utilizado quando as operaes aritmticas so
realizadas entre os elementos que ocupam as mesmas posies em cada matriz (elemento
por elemento). As operaes com conjuntos so efetuadas como as operaes usuais,
utilizando-se os mesmos caracteres ( * , / , \ ,

e ) precedidos por um
ponto . ( .* , . /, .\ , .

e . ).
3.2.1 Adio e Subtrao
Para a adio e a subtrao, as operaes com conjuntos e as operaes com matrizes
so iguais. Deste modo os caracteres + e - so empregados do mesmo modo e
considerando as mesmas restries de utilizao.
25
3.2.2 Multiplicao e Diviso
A multiplicao de conjuntos indicada por .*. Se A e B so matrizes com as
mesmas dimenses, ento A.*B indica um conjunto cujos elementos so simplesmente
o produto dos elementos individuais de A e B. As expresses A./B e A.\B formam um
conjunto cujos elementos so simplesmente os quocientes dos elementos individuais de
A e B. Assim:
>> a=[1 2 3];
>> b=[2 4 6];
>> x=a./b >> x=b./a
x = x =
0.5000 0.5000 0.5000 2 2 2
3.2.3 Potenciao
A potenciao de conjuntos indicada por .

. A seguir so mostrados alguns


exemplos utilizando os vetores x e y. A expresso:
A potenciao pode usar um escalar:
>> x=[1 2 3];
>> a=x.^3
a =
1 8 27
Ou a base pode ser um escalar:
>> 2.^x
ans =
2 4 8
3.3 Matrizes Elementares
Alm das j descritas, o MATLAB dispe de diversas funes que permitem a rpida
elaborao de matrizes padro, dentre elas:
3.3.1 Gerao de Vetores
O caractere dois pontos, :, permite a gerao de vetores no MATLAB. A declarao:
26
>> x = 1 : 5
Gera um vetor linha contendo os nmeros de 1 a 5 com incremento unitrio. Pro-
duzindo:
x =
1 2 3 4 5
Outros incrementos, diferentes da unidade podem ser utilizados, como seja o caso
do seguinte exemplo que impe um incremento de pi/4.
>> y = 0 : pi/4 : pi
y =
0 0.7854 1.5708 2.3562 3.1416
Tambm so possveis incrementos decrescentes (negativos).
Pode-se, tambm, gerar vetores linearmente espaados fazendo uso da funo linspace.
Por exemplo,
>> k = linspace (0, 1, 6)
k =
0 0.2000 0.4000 0.6000 0.8000 1.0000
Cria um vetor linearmente espaado de 0 a 1, contendo 6 elementos.
Ao pretender-se um espaamento logartmico desde o valor inicial 10
x1
at ao valor
nal 10
x2
do vetor composto por k elementos, a funo a utilizar ser:
>> logspace (x1 , x2 , k)
A exceo para essa funo quando x2 = . Caso isso ocorra, os k pontos estaro
espaados desde 10x1 at .
3.3.2 Matriz Identidade
De modo a construir uma matriz identidade (quadrada ou com dimenso n x m, a
funo a utilizar dada por):
27
>> eye(m,n)
3.3.3 Matriz Composta por Elementos Unitrios
No caso de ser necessrio a obteno de uma matriz composta apenas por elementos
unitrios, temos que:
>> ones(m,n)
3.3.4 Matriz Nula
Para efetuar qualquer tipo de manipulao matricial, poder ser til a construo de
uma matriz composta por elementos nulos:
>> zeros(n,m)
3.3.5 Matriz Aleatria
A elaborao de testes a qualquer programa desenvolvido no MATLAB, ou para
utilizao de um outro qualquer modo, poder fazer uso de matrizes compostas por
nmeros aleatrios uniformemente distribudos no intervalo entre 0 e 1. A funo que
realiza esta operao :
>> rand(m,n)
onde m representa o nmero de linhas e n o nmero de colunas da matriz desejada.
No caso de se pretender uma distribuio normal dos nmeros aleatrios, com mdia
zero, varincia um e desvio padro um, a funo a ser utilizada ser:
>> randn(m,n)
Cabe salientar que em uma distribuio normal, 68% dos valores esto compreendidos
entre 1 e 1.
O comando magic(n) cria uma matriz quadrada integral de dimenses n x n (linhas
e colunas tm a mesma soma).
28
>>x=magic(4)
3.4 Elementos de Matrizes
Um elemento individual da matriz pode ser indicado incluindo os seus subscritos en-
tre parnteses. Por exemplo, dada a matriz A:
A =
1 2 3
4 5 6
7 8 9
A declarao:
>> A(3,3) = A(1,3) + A(3,1)
A =
1 2 3
4 5 6
7 8 10
Um subscrito pode ser um vetor. Se X e V so vetores, ento X(V) :
[X(V(1)), X(V(2)), .... X(V(n))].
Para as matrizes, os subscritos vetores permitem o acesso s submatrizes contnuas
e descontnuas. Por exemplo, suponha que A uma matriz 10x10.
29
A =
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100
>> A(1:5,7:10)
ans =
7 8 9 10
17 18 19 20
27 28 29 30
37 38 39 40
47 48 49 50
uma submatriz 5x4 que consiste nas primeiras cinco linhas e nas ltimas quatro
colunas.
Utilizando os dois pontos no lugar de um subscrito denota-se todos elementos da
linha ou coluna. Por exemplo,
>> A(1:2:5,:)
ans =
1 2 3 4 5 6 7 8 9 10
21 22 23 24 25 26 27 28 29 30
41 42 43 44 45 46 47 48 49 50
uma submatriz 3x10 que consiste da primeira, terceira e quinta linhas e todas
colunas da matriz A.
3.5 Manipulao de Matrizes
Do mesmo modo, esto implementadas no cdigo diversas funes que permitem a
manipulao e construo de matrizes genricas.
3.5.1 Matriz Diagonal ou Diagonal de uma Matriz
Se x for um vetor, diag(x) ser a matriz diagonal com x na diagonal;
30
>> x=[1 2 3 1 -1 4];
>> diag(x)
ans =
1 0 0 0 0 0
0 2 0 0 0 0
0 0 3 0 0 0
0 0 0 1 0 0
0 0 0 0 -1 0
0 0 0 0 0 4
Se A for uma matriz quadrada, ento diag(A) ser um vetor cujos componentes so
os elementos da diagonal de A.
>> A=[3 11 5; 4 1 -3; 6 2 1]
A =
3 11 5
4 2 -3
6 2 1
>> diag(A)
ans =
3
2
1
3.5.2 Matrizes Triangulares
O cdigo possui duas funes que permitem a extrao das matrizes riangular supe-
rior e triangular inferior de uma matriz quadrada. So elas, espectivamente:
triu(A);
tril(A);
3.5.3 Redimensionamento de Matrizes
Dada a matriz A composta por m linhas e n colunas A(m,n), esta poder ser red-
imensionada, atravs do comando reshape (A,n,m), desde que o produto de mxn se
mantenha constante.
31
>>A(m,n)
>> B = reshape(A,n,m)
>> A=[1 2 3; 4 5 6]
A =
1 2 3
4 5 6
>> B=reshape(A,3,2)
B =
1 5
4 3
2 6
3.5.4 Rotao dos Elementos da Matriz
Os elementos da matriz A podero ser rodados 90
o
no sentido anti-horrio (ou ro-
dados k*90
o
) atravs do uso da funo:
>>rot90(A,k)
A =
1 2 3
4 5 6
>> rot90(A,1)
ans =
3 6
2 5
1 4
32
4
Funes
4.1 Funes Escalares
Algumas funes no MATLAB operam essencialmente sobre escalares, mas operam
sobre cada elemento se aplicadas a uma matriz. As funes escalares mais comuns so:
exp Exponencial;
ebs Valor absoluto;
log Logaritmo natural;
log10 Logaritmo base 10;
sqrt Raiz quadrada;
sin Seno;
asin Arco seno;
cos Coseno;
acos Arco Coseno;
tan Tangente;
atan Arco Tangente;
round Arredondamento ao inteiro mais prximo;
oor Arredondamento ao inteiro mais prximo na direo de menos innito;
ceil Arredondamento ao inteiro mais prximo na direo de mais innito;
rem Resto da diviso;
sign Para cada elemento de x, sign(x) retorna 1 se o elemento maior
que zero, 0 se igual a zero e -1 se ele menor que zero
4.2 Funes Vetoriais
Opera com elementos de colunas desejadas, caso seja desejado operar com linhas ao
invs de colunas deve-se transpor a matriz e ento oper-la com a sua coluna que antes
era sua linha. Abaixo esto alguns exemplos de funes:
max Valor mximo dos elementos de cada coluna;
sum Soma dos elementos de cada coluna;
median Valor mediano dos elementos de cada coluna;
any Devolve 1 se qualquer elemento da coluna for diferente de 0;
min Valor mnimo dos elementos de cada coluna;
prod Produto dos elementos de cada coluna;
all Devolve 1 se todos os elementos de cada coluna forem diferentes de 0;
sort Organizao dos elementos da coluna por ordem decrescente de valor;
std Desvio padro dos elementos de cada coluna.
33
4.3 Funes Matriciais
Uma boa aplicao do MATLAB suas funes matriciais. Dentre as mais usadas
esto essas:
eig Valores prprios e vetores prprios;
chol Fatorizao de Cholesky
svd Decomposio em fator singular;
inv Inversa;
lu Fatorizao triangular LU;
qr Fatorizao ortogonal QR;
hess Forma de Hessenberg;
schur Decomposio de Schur;
expm Matriz Exponencial;
sqrtm Matriz de raiz quadrada;
poly Polinmio caracterstico;
det Determinante;
size Tamanho;
norm Norma 1, Norma 2, Norma F, Norma Innita;
cond Nmero de condio na norma 2;
rank Nmero de linhas linearmente independentes.
Vamos dar um exemplo para ilustrar algumas funes:
P=[1 0 0; 0 2 2; 2 3 1]
P =
1 0 0
0 2 2
2 3 1
inv(P)
ans =
1.0000 0 0
-1.0000 -0.2500 0.5000
1.0000 0.7500 -0.5000
poly(P)
ans =
1 -4 -1 4
size(P)
ans =
3 3
det(P)
ans =
-4
34
5
Polinmios
Embora o MATLAB no permita trabalhar diretamente com polinmios, dispe de
um conjunto de funes dedicadas sua manipulao.
Os polinmios so representados no MATLAB por vetores linhas que contm os
coecientes das sucessivas potncias do polinmio ordenados por ordem signicativa de-
crescente. Vamos ilustrar com um exemplo:
p = [1 -6 -72 -27]
p =
1 -6 -72 -27
x=roots(p)
x =
12.1229
-5.7345
-0.3884
p=poly(x)
p =
1.0000 -6.0000 -72.0000 -27.0000
No exemplo acima denimos um polinmio qualquer p sendo (p = s
3
6s
2
72s27)
a seguir calculamos suas razes atravs do comando roots e na seqncia pegamos os
resultados das razes e aplicamos a funo poly chegando novamente no polinmio inicial
p.
vlido relembrar de uma importante observao caso o nosso polinmio inicial
tivesse um coeciente diferente de 1 para o maior grau (s
3
) quando aplicssemos a
funo poly sobre as razes o novo polinmio seria com coeciente 1 para o maior grau,
o que no mudaria nada pois uma equao em que um lado tem um polinmio p e de
outro zero, logo podemos multiplicar ambos os lados por qualquer varivel.
x
2
+ 2x + 4 = 0
ax
2
+ 2ax + 4a = 0
ax
2
+ 2ax + 4a = 0
Alm das duas operaes j citadas h ainda as bsicas, soma, subtrao, multipli-
cao e diviso. Soma e subtrao faz-se normalmente sem maiores problemas, para
multiplicao usa-se conv e para a diviso deconv.
35
Exemplo:
p=[3 2 1] %definindo um primeiro polinmio
p =
3 2 1
q=[4 3 1] %definindo um segundo polinmio
q =
4 3 1
M=conv(p,q) %efetuando a multiplicao entre
%os dois polinmios
M =
12 17 13 5 1
[d,r]=deconv(M,q) %vamos dividir a multiplicao feita
%anteriormente, por o polinmio q e isto
%dever resultar no polinmio p, a varivel
%r corresponde ao resto que nesse caso, ser 0
d =
3 2 1
r =
0 0 0 0 0
36
6
Anlise Polinomial
Este captulo traz uma srie de comandos no MATLAB para a anlise polinomial.
Primeiro vamos discutir meios de avaliar os polinmios e como trabalhar o seu compor-
tamento. Uma aplicao deste conceito est na modelagem da altitude e velocidade
de um balo. A seguir deniremos as razes dos polinmios. Polinmios normalmente
aparecem em aplicaes da Engenharia e na Cincia em geral porque eles constituem
ainda bons modelos para representar sistemas fsicos.
6.1 Avaliao do polinmio
Como exemplo vamos tomar o seguinte polinmio:
f(x) = 3x
4
0.5x
3
+ x 5.2
Se x assumir valores escalares, podemos escrever:
fx = 3*x ^4 - 0.5*x ^3 + x - 5.2;
Se x for um vetor ou uma matriz devemos escrever:
fx = 3* x .^4 - 0.5* x .^3 + x - 5.2;
onde o tamanho da matriz f ser o mesmo da matriz x.
6.2 Comando polyval
Este comando possui dois argumentos. O primeiro argumento contm os coecientes
do polinmio em questo e o segundo argumento contm a matriz para a qual desejamos
avaliar o polinmio.
Exemplo 1
a = [3,-0.5,0,1,-5.2];
f = polyval(a,x);
37
Esses comandos tambm podem ser combinados em um s:
f = polyval([3,-0.5,0,1,-5.2],x);
O tamanho de f ter que ser igual ao tamanho de x, seja ele um escalar, vetor ou
matriz.
Supondo que queiramos o valor da funo g(x) = x
5
+ 3x
3
2.5x
2
2.5 para x
no intervalo de [0,5]:
x:0:0.025:5;
a = [-1,0,3,-2,5,0,-2.5];
g = polyval(a,x)
Quando x for um escalar ou um vetor, polyval consegue calcular o valor da funo
operando elemento por elemento. Mas quando x for uma matriz usa-se o comando
polyvalm:
fx = 3* x .^4 - 0.5* x .^3 + x - 5.2;
sendo a matriz x, uma matriz quadrada.
6.3 Operaes Aritmticas
Podemos trabalhar com polinmios armazenando seus coecientes em vetores, e
trabalhar apenas com estes vetores.
6.3.1 Soma e subtrao
Para somar ou subtrair polinmios basta somar ou subtrair seus respectivos coe-
cientes. O MATLAB no apresenta um comando especco par somar polinmios. A
soma ou subtrao padro funciona se ambos os vetores polinomiais forem do mesmo
tamanho. Somemos os polinmios a seguir:
g(x) = x
4
3x
2
x + 2.4
h(x) = 4x
3
2x
2
+ 5x 16
som(x) = g(x) + h(x)
sub(x) = g(x) h(x)
38
6.3.2 Multiplicao
A multiplicao polinomial efetuada por meio do comando conv (que faz a con-
voluo entre dois conjuntos). A multiplicao de mais de dois polinmios requer o uso
repetido de conv.
m = conv(g,h)
6.3.3 Diviso
No MATLAB a diviso de polinmios feita atravs do comando deconv:
[q,r] = deconv(g,h)
Esse resultado nos diz que g dividido por h nos d o polinmio de quociente q e resto
r.
6.4 Razes de polinmios
Achar as razes de um polinmio, isto , os valores para os quais o polinmio igual
a zero, um problema comum em muitas reas do conhecimento, como por exemplo,
achar as razes de equaes que regem o desempenho de um sistema de controle de um
brao robtico, ou ainda equaes que demonstram a arrancada ou freada brusca de um
carro, ou analisando a resposta de um motor, e analisando a estabilidade de um ltro
digital.
Se assumirmos que os coecientes (a1, , ...) de um polinmio so valores reais,
poderemos encontrar razes complexas. Se um polinmio fatorado em termos lineares,
ca fcil de identicar suas razes, igualando cada termo a zero.
Um exemplo consiste no polinmio:
f(x) = x
2
+ x 6
que ao ser fatorado se torna:
f(x) = (x 2)(x + 3)
As razes da equao so os valores de x para os quais a funo f(x) igual a zero,
ou seja, x = 2 e x = -3.
No grco, as razes so valores onde a funo corta o eixo x. Um polinmio do
terceiro grau tem exatamente trs razes que podem ser:
- trs razes reais;
- trs razes iguais;
39
- uma raiz real e duas razes iguais;
- uma raiz real e um par conjugado de razes complexas.
Se a funo f(x) for um polinmio de grau n, ela ter exatamente n razes. Estas n
razes podem conter mltiplas razes ou razes complexas.
No MATLAB, um polinmio representado por um vetor linha dos seus coecientes
em ordem decrescente. Observe que os termos com coeciente zero tm de ser includos.
Dada esta forma, as razes do polinmio so encontradas usando-se o comando roots
do MATLAB. J que tanto um polinmio quanto suas razes so vetores no MATLAB,
o MATLAB adota a conveno de colocar os polinmios como vetores linha e as razes
como vetores coluna. Para ilustrar este comando vamos determinar as razes do seguinte
polinmio:
f(x) = x
3
2x
2
3x + 10
No MATLAB:
p = [1,-2,-3,10];
r = roots(p)
Lembrando que estes comandos podem ser dados de um s vez:
r = roots([1,-2,-3,10]);
Os valores das razes sero: 2 + i, 2 - i e -2.
Agora, dadas as razes de um polinmio, tambm possvel construir o polinmio
associado. No MATLAB, o comando poly encarregado de executar essa tarefa.
Onde o argumento do comando poly o vetor contendo as razes do polinmio que
desejamos determinar.
Exemplo 2
Sejam as razes de um polinmio -1, 1 e 3. Determinar este polinmio.
No MATLAB:
a = poly ([-1,1,3]);
Exemplo 3
Determine as razes dos seguintes polinmios e plote seu grco, com seu eixo apro-
priado, com o objetivo de vericar se o polinmio atravessa o eixo x bem nos locais das
razes.
a. f(x) = x
3
5x
2
+ 2x + 8
40
b. g(x) = x
2
+ 4x + 4
c. h(x) = x
5
+ 3x
4
11x
3
+ 27x
2
+ 10x 24
d. i(x) = x
5
3x
3
+ 4x
2
1
41
7
Grcos
A construo de grcos no MATLAB mais uma das potencialidades do sistema.
Atravs de comandos simples pode-se obter grcos bidimensionais ou tridimensionais
com qualquer tipo de escala e coordenada. No MATLAB existe uma vasta biblioteca de
comandos grcos.
7.1 Grcos X-Y
Comandos de gerao de grcos bidimensionais:
plot Grco linear.
loglog Grco em escala logartmica.
semilogx Grco em escala semi-logartmica (eixo x).
semilogy Grco em escala semi-logartmica (eixo y).
ll Desenhar polgono 2D.
polar Grco em coordenadas polar.
bar Grco de barras.
stem Grco de seqncia discreta.
stairs Grco em degrau.
errorbar Grco do erro.
hist Histograma.
rose Histograma em ngulo.
compass Grco em forma de bssola.
feather Grco em forma de pena.
fplot Grco da funo.
comet Grco com trajetria de cometa.
Se Y um vetor, plot(Y) produz um grco linear dos elementos de Y versus o ndice
dos elementos de Y. Por exemplo, para exibir os nmeros [0.0, 0.48, 0.84, 1.0, 0.91, 0.6,
0,14], basta introduzir o vetor e executar o comando plot:
>> Y = [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0.14];
>> plot(Y)
O MATLAB pode tambm exibir mltiplas linhas em apenas um grco. Exis-
tem duas maneiras, a primeira resulta no uso de apenas dois argumentos, como em
plot(X,Y), onde X e/ou Y so matrizes. Ento:
Se Y uma matriz e X um vetor, plot(X,Y) exibe sucessivamente as linhas ou
colunas de Y versus o vetor X.
42
Se X uma matriz e Y um vetor, plot(X,Y) exibe sucessivamente as linhas ou
colunas de X versus o vetor Y.
Se X e Y so matrizes com mesma dimenso, plot(X,Y) exibe sucessivamente as
colunas de X versus as colunas de Y.
Se Y uma matriz, plot(Y) exibe sucessivamente as colunas de Y versus o ndice
de cada elemento da linha de Y.
O segundo mtodo (e mais fcil) de exibir grcos com mltiplas linhas faz uso do
comando plot com mltiplos argumentos. Vamos explor-lo em um exemplo mais detal-
hado. Primeiramente, preparemos os dados, escolhendo o domnio e as funes a serem
mostradas:
>> x = 0:0.3:30;
>> y1 = exp(-.01*x).*sin(x);
>> y2 = exp(-.05*x).*sin(.7*x);
>> y3 = exp(-.1*x).*sin(.5*x);
Escolhamos uma janela para traar o grco:
>> figure(1)
O comando gure abre uma janela grca intitulada Figure No.1". Este comando
opcional; se no for utilizado, o MATLAB abrir uma janela grca padro. Agora
utilizaremos a funo plot para plotar os trs grcos na mesma janela:
>> h = plot ( x , y1 , b+: , x , y2 , ro- , x , y3 , gx-. );
O terceiro, o sexto e o nono argumento representam a seqncia de propriedades:
cor, ponto e trao. Em ro-. temos uma linha vermelha com cada ponto representado
por um crculo e o espao entre ele preenchido por ponto-e-trao.
Observa-se que h uma referncia ao grco plotado (neste caso, h um vetor de
referncias). Atravs do comando set, aps os grcos terem sido desenhados, possvel
alterar os tipos de linhas, marcadores e cores para as curvas. Por exemplo, poderamos
fazer:
>> set(h,LineWidth,2,LineStyle,--)
>> set(h,Color,r)
Se desejssemos alterar apenas uma das curvas, passaramos para o comando set
um elemento do vetor (h(2), por exemplo).
43
Vejamos resumidamente os principais tipos de linhas e cores:
7.1.1 Acessrios para os Grcos
Denamos agora os limites dos eixos, pelo comando axis. Linhas em grade podem
ser ativadas pela propriedade grid:
>> axis([0 20 -1 1]);
>> grid on
Para adicionarmos anotaes no grco, como identicao dos eixos, ttulo e leg-
enda, usamos os seguintes comandos:
Eixos:
>> xlabel(Tempo); ylabel(Amplitude);
Legenda e ttulo:
>> legend(h,Primeiro,Segundo,Terceiro); title(Resposta no
Tempo);
Obs.: Se dois grcos tiverem sido adicionados separadamente em uma janela grca,
o argumento de referncia no utilizado no comando legend.
E eis o grco resultante:
Para plotar mais de um grco na mesma janela, tm-se trs opes. A primeira foi
utilizada no exemplo anterior, que seria usar um nico comando com vrios argumentos.
A segunda ativar a propriedade hold, que permite a insero de dois ou mais grcos,
44
Figura 3: Resultante
inserindo os comando separadamente.
>> hold on
Dessa forma, os grcos sero sobrepostos em uma mesma janela grca. No en-
tanto, se no desejarmos mais essa funo ativa, basta digitar:
>> hold off
E por ltima opo temos o comando subplot, que divide uma janela grca em
vrias janelas no seu interior.
>>subplot(2,2,3)
Este comando divide a janela grca em uma matriz 2x2 (4 elementos portanto) e
prepara o terceiro elemento (linha 2, coluna 1) para receber futuros grcos.
45
7.1.2 Nmeros Complexos
Quando os argumentos a exibir so complexos, a parte imaginria ignorada, exceto
quando dado simplesmente um argumento complexo. Para este caso especial exibida
a parte real versus a parte imaginria. Ento, plot(Z), quando Z um vetor complexo,
equivalente a plot(real(Z),imag(Z)).
>> Z=[1+i*1;3+i*3;5+i*5;7+i*10;9+i*15];
>> plot(real(Z),imag(Z))
7.2 Grcos Polares
Grcos polares so teis quando valores so representados por ngulo e grandeza
(magnitude). Por exemplo, se medirmos a intensidade luminosa ao redor de uma fonte
de luz, podemos representar a informao com um ngulo xando eixos e magnitude
representando intensidade.
Coordenadas Polares: Um ponto representado em coordenadas polares por um
angulo e uma magnitude r. O valor de varia geralmente entre 0 e 2. A magnitude
um valor positivo que representa a distncia do eixo que fornece o angulo at o ponto.
polar(theta,r): Este comando generaliza grcos polares com ngulo (em radiano)
e magnitude r correspondente.
Exemplo: Os comando para a construo do grco da gura abaixo:
>> theta = 0:2*pi / 100 : 2*pi;
>> r = theta / (2*pi);
>> polar(theta,r);
Transformao retangular / polar ; polar / retangular: As vezes, devido a praticidade
interessante transformarmos coordenadas de um sistema para outro.
As equaes abaixo relacionam os sistemas polar e retangular:
polar / retangular = x = r cos q ; y = r sin q ;
retangular / polar = r =

x
2
+ y
2
; q = atan (y/x);
7.3 Grcos 3D
A rede de superfcie pode ser gerada por um conjunto de valores em uma matriz.
Cada ponta na matriz representa o valor da superfcie que corresponde ao ponto na tela.
Para gerar um arquivo que representa uma superfcie 3D, primeiramente calculamos
o conjunto dos valores de x e y que representam as variveis independentes e depois
calculamos os valores de z que representam os valores da superfcie. O comando no
MATLAB para plotar grcos 3D mesh(z).
O comando meshgrid tem os argumentos do vetor x e y, ou seja transforma o domnio
especicado pelos vetores x e y em vetores que podem ser usados em clculos de funes
46
Figura 4: Grco em coordenadas polares
de 2 variveis e construo de grco 3D.
Exemplo: Gerar o grco 3D da funo -0.5 < x < 0.5 ; -0.5 < y < 0.5 ;
f(x, y) = z = 1 x
2
y
2
1 = |x
2
+ y
2
+ z
2
|
Soluo:
[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5);
z=sqrt(abs(1 - xgrid.^2 - ygrid.^2));
mesh(z);
47
Figura 5: Grco em 3D
Estes so alguns dos comandos de exibio de grcos tridimensionais e de contornos:
plot3 Exibio do grco em espao 3D.
ll3 Desenhar polgono 3D.
comet3 Exibir em 3D com trajetria de cometa.
contour Exibir contorno 2D.
contour3 Exibir contorno 3D.
clabel Exibir contorno com valores.
quiver Exibir gradiente.
mesh Exibir malha 3D.
meshc Combinao mesh/contour.
surf Exibir superfcie 3D.
surfc Combinao surf/contour.
surl Exibir superfcie 3D com iluminao.
slice Plot visualizao volumtrica.
cylinder Gerar cilindro.
sphere Gerar esfera.
Quando geramos redes de superfcie 3D podemos querer escolher a posio de viso
que ser denida com os termos azimuth ( rotao horizontal) e vertical elevation que
especica os graus (rotao vertical ).
48
Exemplo: Rotao horizontal:
f(x, y) = z = 1 x
2
y
2
1 = |x
2
+ y
2
+ z
2
|
Soluo:
>> [xgrid,ygrid] = meshgrid(-0.5:0.1:0.5;-0.5:0.1:0.5);
>> z=sqrt(abs(1 - xgrid.^2 - ygrid.^2));
>> mesh(z,[-37.5,0]);
Figura 6: Grco em 3D, Rotao horizontal
49
Exemplo: Rotao vertical:
f(x, y) = z = 1 x
2
y
2
1 = |x
2
+ y
2
+ z
2
|
Soluo:
>> [xgrid,ygrid]=meshgrid(-0.5:0.1:0.5;-0.5:0.1:0.5);
>> z=sqrt(abs)1 - xgrid.^2 - ygrid.^2));
>> mesh(z,[-37.5,-30]);
Figura 7: Grco em 3D, Rotao vertical
50
8
Programao
8.1 Arquivo.m
Os comandos do MATLAB so normalmente introduzidos atravs da janela de co-
mando, onde uma nica linha de comando introduzida e processada imediatamente.
O MATLAB , no entanto, capaz tambm de executar seqncias de comandos ar-
mazenadas em arquivos.
Os arquivos que contm as declaraes do MATLAB so chamados arquivos .m,
e consistem em seqncias de comandos normais do MATLAB, possibilitando incluir
outros arquivos .m escritos no formato texto (ASCII).
Para editar um arquivo texto na janela de comando do MATLAB selecione New M-
File para criar um novo arquivo ou Open M-File para editar um arquivo .m j existente,
a partir do menu File.
Os arquivos podem, tambm, ser editados fora do MATLAB utilizando qualquer
editor de texto. Para isso, basta salvar os arquivos com a extenso .m.
Para executar um programa do tipo M-File, deve-se selecionar Run Script, tambm
a partir do menu File.
Existem alguns comandos e declaraes especiais para serem usadas nos arquivos.
Alguns comandos importantes para se trabalhar com arquivos.m so:
% Usado para inserir comentrios no texto;
clear Apaga todo os dados da memria;
input Usado quando se deseja adicionar um dado
ao problema pela janela de comando;
pause Causa uma pausa na execuo do programa
at que uma tecla seja digitada;
clc Limpa a janela de comando
gure(n) Mostra a janela grca de nmero n;
close all Fecha todas as janelas grcas.
8.2 Operadores Lgicos e Relacionais
Os operadores usados para a comparao de duas matrizes com as mesmas dimenses
so expressos por:
51
8.2.1 Operadores Relacionais
Smbolo Descrio
< Menor
<= Menor ou igual
> Maior
>= Maior ou igual
== Igual
= Diferente
A comparao feita entre os pares de elementos correspondentes e o resultado
uma matriz composta de nmeros um(1) e zero(0), representando respectivamente
verdadeiro e falso.
Por exemplo:
2+2 ~ = 4
ans =
0
Observao: Apenas os operadores == e = testam tanto a parte real como a
imaginria, os demais, apenas a parte real.
x=5; y=3*(x= =3)
y =
0
x=5; y=3*(x= =5)
y =
3
x=5; y=3*(x~ =5)
y =
0
x=5; y=3*(x~ =3)
y =
3
8.2.2 Operadores Lgicos
Smbolo Descrio
& AND
| OR
NOT
xor XOR
Esses operadores operam da mesma forma que os operadores relacionais, dando como
52
resposta verdadeiro ou falso. Exemplo:
INPUTS AND OR XOR
A B & | xor
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
A = [ 1 0 1
0 0 0
1 1 1]
A =
1 0 1
0 0 0
1 1 1
B= [ 0 1 0
0 0 1
-1 10 0]
B =
0 1 0
0 0 1
1 1 0
A&B
ans =
0 0 0
0 0 0
1 1 0
Note que foi aplicado o operador lgico AND e esse comparou cada elemento da
matriz A com cada elemento da matriz B, sendo que sua resposta pode ser apenas 0 ou
1. Sendo que qualquer nmero diferente de 0, inclusive os negativos, considerado 1
pois o MATLAB trabalha na linguagem binria.
Os operadores lgicos possuem a precedncia mais baixa relativamente aos oper-
adores aritmticos e relacionais.
A precedncia entre os operadores lgicos se d da seguinte maneira:
NOT Maior precedncia
AND e OR Tm igual precedncia aps NOT
8.3 Comandos For, While e If
Os comandos FOR, WHILE e IF controlam o uxo e especicam a ordem e a estrutura
de clculo do programa. No MATLAB estes comandos so semelhantes aos usados na
53
linguagem de programao C, mas com uma estrutura diferente. Nas prximas sees
deste captulo apresentaremos a estrutura de tomada de decises IF e os dois comandos
para gerar loops no MATLAB: o comando FOR e o comando WHILE.
8.3.1 Ciclo For
O ciclo for controlador de uxo mais simples usado na programao MATLAB.
Analisando a expresso:
for i=1:5,
x(i)=i^2;
end
Pode-se notar que o ciclo for dividido em trs partes:
i =1 realizado antes do ciclo comear.
Testando a condio que controla o ciclo (i<=5). Se for o ciclo executado.
Se o teste do ciclo for falso o ciclo termina devido ao comando end.
Exemplo:
for i = 1:8
for j = 1:8,
A(i,j) = i + j;
B(i,j) = i - j;
end
end
C= A + B
C =
2 2 2 2 2 2 2 2
4 4 4 4 4 4 4 4
6 6 6 6 6 6 6 6
8 8 8 8 8 8 8 8
10 10 10 10 10 10 10 10
12 12 12 12 12 12 12 12
14 14 14 14 14 14 14 14
16 16 16 16 16 16 16 16
Neste exemplo zemos duas matrizes atravs de dois ciclos variando de 1 a 8 e ao
m disso zemos a operao da soma dessas duas matrizes gerando uma matriz C que
dada por:
C = A + B C = ( i + j ) + ( i - j ) C = 2i
54
8.3.2 Comando If
Esta instruo permite que executemos um comando se a expresso lgica ver-
dadeira e um diferente comando se a expresso falsa. A forma geral do comando if
combinada instruo else mostrada a seguir:
if expresso
grupo de comandos A
else
grupo de comandos B
end
A seguir apresentado um exemplo do uso da declarao if no MATLAB. Voc pode
faz-lo na janela de comando ou ainda atravs do mtodo .m novamente.
for i = 1:5,
for j = 1:5,
if (i == j)
A(i,j)=2;
else if (abs(i-j) == 1)
A(i,j) = -1;
else
A(i,j) = 0;
end
end
end
end
A
A =
2 -1 0 0 0
-1 2 -1 0 0
0 -1 2 -1 0
0 0 -1 2 -1
0 0 0 -1 2
Neste exemplo zemos o uso do comando if, sendo que utilizamos, o que normal,
um dentro de outro. Sempre lembrando que no uso do comando if devemos ter uma
seqncia que executa caso a condio seja verdadeira e outra que no requerida, mas
pode-se ter tambm, que execute um outro processo caso a condio seja falsa (else).
Aps o ciclo, pediu-se o valor da varivel A para sabermos se realmente o comando
funcionou.
8.3.3 Ciclo While
No ciclo while apenas a condio testada. Vamos fazer um exemplo agora utilizando
o arquivo.m:
55
Primeiro abra o menu File v em New e em seguida seleciona M-le
Agora na janela correspondente ao M-File escreva o seguinte comando:
a=1;b=15;
while a<b,
clc
disp(loop em curso)
a=a+1
b=b-1
pause(2)
end
clc
disp(fim do loop)
Antes de mais nada, salve o arquivo como loop.m na mesma pasta onde voc est
rodando o programa.
Nesse comando teremos uma comparao de dados entre as variveis a e b comeando
com a valendo 1 e b valendo 15 e enquanto a for menor que b o ciclo segue e a cada
ciclo a varivel a incrementada em 1 e a b perde uma unidade, isso ocorrer at que
a que maior que b. Tambm importante salientar o comando pause que o tempo
que o ciclo ir levar a mais que o normal, pois como sabemos o processamento se daria
em fraes de segundos e consequentemente no poderamos observar o comando, por
isso o pause de 2 segundos.
Agora volte a janela de comando e digite loop que a instruo toda ser processada.
8.4 Declarando Funes
Para criarmos funes necessitamos trabalhar na janela de M-Files, para tanto, como
voc j sabe, v em File New M File. Antes de apresentarmos vamos dar
as 3 regras principais para a criao de funes no MATLAB:
Deve-se ter ao menos o nome da funo, a varivel de entrada e a funo f.
O arquivo .m deve ser salvo com o mesmo nome da funo.
A funo f deve ser igualada a funo operacional.
Vamos tornar mais claro esses pontos com um exemplo:
function f = hema(x)
f = x/24/30/12
Abrimos o M-File e digitamos function f e aps isso igualamos a uma funo que
criaremos, no caso hema, que signica horas em ano sendo uma transformao. Na
56
linha abaixo igualamos a funo f ao corpo da funo hema. E por ltimo temos a nossa
varivel de entrada que o x, que representa as horas. Pronto, agora basta salvar esse
arquivo com o nome idntico da funo hema, aps isso vamos janela de comando
principal e chamamos pela nova funo:
hema(8640)
f =
1
ans =
1
No caso, est digitado exatamente o valor de um ano em horas, portanto a
resposta 1.
57
9
Sistemas de Equaes Lineares
9.1 Interpretao grca
A interpretao grca necessria para soluo a sistemas de equaes lineares
ocorrente freqentemente em problemas de engenharia. H vrios mtodos existentes
para solucionar sistemas de equaes, mas eles envolvem operaes demoradas com
grande oportunidade de erro. Entretanto temos que entender o processo para que pos-
samos corrigir e interpretar os resultados do computador. Uma equao linear com duas
variveis, semelhante a 2x - y = 3, dene uma linha reta e escrita na forma y = mx
+ b, onde m o coeciente angular e b o coeciente linear. Podemos escrever y =
2x - 3. Se tivermos 2 equaes lineares, elas podem representar 2 diferentes retas que
se interceptam em um mesmo ponto, ou elas podem representar 2 retas paralelas que
nunca se interceptam ou ainda podem representar a mesma reta. Estas possibilidades
so vistas na Figura 8.
Figura 8: (a) - Retas que se interceptam,(b) - Retas paralelas,(c) - Retas iguais
Equaes que representam duas retas que se interceptam podem ser facilmente iden-
ticadas porque possuem diferentes coecientes angulares.
Exemplo:
58
y = 2x 3 y = x + 3
Equaes que representam duas retas paralelas possuem o mesmo coeciente angular
e coecientes lineares diferentes.
Exemplo:
y = 2x 3 y = 2x + 1
Equaes que representam a mesma reta so equaes com mesmo coeciente an-
gular e mesmo coeciente linear.
Exemplo:
y = 2x 3 3y = 6x 9
Se a equao linear contm 3 variveis x, y, z ento ela representa um plano em
espao tridimensional.
Se tivermos duas equaes com trs variveis, elas podem representar dois planos
que se interceptam em uma linha, ou podem representar dois planos paralelos ou ainda
podem representar o mesmo plano.
Essas idias podem ser estendidas para mais de trs variveis, porm se torna difcil
a visualizao desta situao. Em muitos sistemas de engenharia estamos interessados
em determinar se existe uma soluo comum para sistemas de equaes. Se a soluo
comum existe ento podemos determin-la. Vamos discutir dois mtodos para soluo
de sistemas de equao usando MATLAB.
9.2 Soluo usando operao com matrizes
Considerando o sistema seguinte de trs equaes com trs incgnitas:
3x + 2y z = 10
x + 3y + 2z = 5
x y z = 1
Podemos reescrever os sistemas de equaes usando as seguintes matrizes:
A = 3 2 -1 x = x B = 10
-1 3 2 y 5
1 -1 -1 z -1
Usando multiplicao de matrizes, o sistemas de equaes pode ser escrito na forma:
Ax = B
59
9.3 Diviso de matrizes
No MATLAB, um sistema de equaes simultneas pode ser resolvido usando diviso
de matrizes. A soluo da equao da matriz Ax = B pode ser calculada usando diviso
A\B.
Exemplo: Ax = B
A = [3, 2, -1; -1, 3, 2; 1, -1, -1];
B = [10; 5; -1];
x =A \ B;
O vetor x contm os seguintes valores -2; 5; -6. Para conrmar se os valores de x
esto corretos podemos multiplicar A*x e veremos que o resultado ser B.
9.4 Matriz inversa
O sistema de equaes pode ser resolvido usando matriz inversa. Por exemplo as-
sumimos que A, x, B so matrizes denidas a seguir:
A = 3 2 -1 x = x B = 10
-1 3 2 y 5
1 -1 -1 z -1
Ento Ax = B. Suponha que multiplicamos ambos os lados da equao da matriz
por A
1
ento temos:
A
1
A
x
= A
1
B
Mas A
1
A igual a matriz identidade I, ento temos:
I x = A
1
B
ou
x = A
1
B;
No MATLAB podemos calcular essa expresso usando o comando:
X = inv(A)*B;
60
10
Clculo
10.1 Zeros de Funes
O MATLAB encontra zeros de funes usando o comando fzero. A funo, da qual
deseja-se encontrar os zeros, deve ser denida em um arquivo .m como denido previ-
amente. Considere a seguinte funo f (x) = sin(x) - cos(x). A funo func1 ento
escrita:
function f = func1(x);
f = sin(x) - cos(x);
A raiz pode ser determinada usando o comando fzero no comand window do MAT-
LAB ou no interior de um arquivo .m.
>> fzero(func1,1)
ans =
0.7854
Note que o segundo argumento, 1, um chute inicial para o clculo da raiz. Note
tambm que o valor do ngulo x que satisfaz f (x) = 0 est em radianos (0.7854 radianos
= 45 graus). No entanto, existem outros valores de x para os quais f (x) = 0, isto , a
funo f (x) tem outras razes. Dando o chute inicial 3, por exemplo, tem-se
>> fzero(func1,3)
ans =
3.9270
ou, em graus, 225

. Este comando pode ser utilizado com qualquer outra funo


escrita no MATLAB.
Os dois zeros calculados anteriormente podem ser vericados no grco da funo.
>> fplot(func1,[0 2*pi]);grid;
10.2 Minimizao de Funes
Continuando o exemplo anterior, a localizao do ponto de mnimo da funo
func1(x) no intervalo de -1 a 2pi obtido da seguinte maneira, a partir do uso da
61
Figura 9: Vericao grca dos zeros da funo
funo fminbnd.
>> [xmin ymin] = fminbnd(func1,0,2*pi)
xmin =
5.49778788018538
ymin =
-1.41421356237271
10.3 Limites
Para efetuar uma operao com limites no MATLAB, o comando que se deve dar
: limit(f(x),x,a) onde f(x) a funo que se quer achar o limite, x a varivel e a o
nmero no qual o x est tendendo (x a).
Exemplo: Achar o limite abaixo:
lim
x2
1 + x
2
1 x
2
>> syms x
>> limit(((1+x^2)/(1-x^2)),x,2)
ans=
-5/3
62
10.4 Limites esquerda e direita
Para calcular limites esquerda e direita, o comando : limit(f(x),x,a,left) e
limit(f(x),x,a,right), onde left e right so os comandos para clacular esquerda
e direita, respectivamente.
Exemplo: Achar os limites abaixo:
lim
x1

x + 1
(x 1)
3
lim
x3
+
x
x 3
>> syms x
>> limit((x/(x-3)),x,3,right)
ans=
inf
>> limit(((x+1)/(x-1)^3),x,1,left)
ans =
-inf
10.5 Integrao
10.5.1 Soluo Simblica
Na integrao de funes, o comando que o MATLAB reconhece para tal operao
int(f(x)).
Exemplo: Integrar as funes abaixo:
_

x(1 x)
2
dx
_
2x
4
3x
3
+ 5
7x
2
dx
Utilizando o comando acima explicado:
63
>> syms x
>> f=((x^1/2)*(1-x)^2);
>> int(f)
ans =
1/8*x^4-1/3*x^3+1/4*x^2
>> f=(((2*x^4)-(3*x^3)+5)/(7*x^2));
>> int(f)
ans =
2/21*x^3-3/14*x^2-5/7/x
Integrais Denidas As integrais denidas podem ser calculadas com o comando
int(f(x),a,b), onde a o limite inferior e b, o limite superior da integral.
Exemplos:
_
2
0
2x
(x 3)
2
dx
_
1
0
(1 2x 3x
2
)dx
>> syms x
>> int(((2*x)/(x-3)^2),0,2)
ans =
4-2*log(3)
>> int((1-2*x-3*x^2),0,1)
ans =
-1
10.5.2 Soluo Numrica
As integrais denidas podem ser aproximadas usando a regra de Simpson com o
comando quad ou usando a regra trapezoidal com o comando trapz. Os dois comandos
trabalham de maneira bem diferente.
Regra Trapezoidal Quando a rea sob a curva pode ser representada por trapzios
e o intervalo [a,b], dividido em n partes iguais, a rea aproximada poder ser calculada
atravs da seguinte frmula:
K
t
=
b a
2n
(f(x
0
) + 2f(x
1
) + ... + 2f(x
n1
) + f(x
n
))
64
onde os valores de xi representam os pontos no nal da cada trapzio e x
0
= a
e x
n
= b. A estimativa da integral melhora quando usarmos um maior nmero de
componentes ( como por exemplo trapzios), para aproximar a rea sob a curva, pois
quanto menor for o intervalo da funo a curva tende a uma reta.
O comando trapz aproxima a integral usando os pontos da funo denidos pelo
usurio. Assim, para usar este comando primeiro deve-se denir os vetores x, no inter-
valo [a, b], e f, os valores da funo correspondentes aos valores denidos no vetor x.
Considere, por exemplo, a seguinte integral.
I =
_
1
0
2xe
x
2
dx
A aproximao para esta integral pode ser calculada atravs do seguinte programa:
function I = Integral(dx);
x = 0:dx:1;
y = 2*x.*exp(-x.^2);
I = trapz(x,y);
Este programa cria um vetor x de a = 0 at b = 1, com incremento dx denido pelo
usurio, calcula os valores de f (x) nestes pontos e usa o comando trapz para aproximar
a integral de f (x). O clculo da integral feito no MATLAB, usando a recm-denida
funo Integral, da seguinte maneira.
>> integral(.1)
ans =
0.6298
Para um dx menor.
>> integral(.02)
ans =
0.6320
Observe que as aproximaes da integral para dx = 0.1 e dx = 0.02 so diferentes.
De fato, usando o incremento menor dx = 0.02 aproxima-se melhor a rea sob a curva
f(x). O valor exato desta integral
I
exato
= 1 exp (1)
ou, calculando no MATLAB I = 0.63212055882856.
A gura seguinte mostra gracamente a funo para dx = 0.1 e para dx = 0.02. A
rea sob a curva a integral denida da funo f(x).
65
Figura 10: Integral - rea abaixo da curva
Observando o grco da funo, fcil imaginar porque a diminuio do incremento
dx melhora a aproximao da integral. No entanto, na prxima seo, um mtodo mais
eciente para o clculo da integral apresentado.
Regra de Simpson O comando quad permite que se calcule a integral I usando a
Regra de Simpson. A sintaxe deste comando a seguinte:
quad(fc,a,b,tol)
Entre os argumentos, fc um arquivo.m em que se dene a funo da qual se quer
calcular a integral, a e b so os limites de integrao e tol a tolerncia de erro exigida
para a aproximao da integral. Mostra-se mais adiante que, quanto menor a tolerncia
de erro exigida, mais preciso o clculo da integral.
Primeiro cria-se o programa func2.m que dene a funo f (x).
function y=func2(x)
y=2*x.*exp(-x.^2);
O clculo da integral I pode ser efetuado usando a tolerncia usual que de 10
3
.
Neste caso, desnecessrio denir tol no comand window.
>> quad(func2,0,1)
ans =
0.63212053454568
66
Calculando agora com uma tolerncia de 10
8
.
>> quad(func2,0,1,1e-8)
ans =
0.63212055882677
Note que, comparando-se com o valor exato apresentado na seo anterior, quando
se diminui a tolerncia melhora-se a aproximao da integral.
Regra de Newton-Cotes O comando quad8 usa uma forma adaptada da regra de
Newton-Cotes. Este comando funciona melhor em certas funes com certos tipos de
singularidades como, por exemplo:
k =
_
1
0

xdx
Lembrando que uma singularidade um ponto no qual uma funo ou sua derivada
no denida ou tende para o innito.
Tanto quad8 quanto quad8 escrevem na tela uma mensagem quando detectam uma
singularidade, mas ainda assim o valor estimado da integral retornado.
Exerccio:
Seja a funo f(x) = |x|. Resolva as integrais abaixo usando o MATLAB e compare
com os resultados obtidos a mo.
a. int[0.6,0.5] f(x) dx
b. int[0.5,-0.5] f(x) dx
c. int[0.0,-1.0] f(x) dx
10.6 Diferenciao
A derivada de uma funo f em um ponto pode ser descrita gracamente como
a inclinao da reta que tangencia a funo naquele ponto. Pontos da funo onde a
derivada zero so chamados pontos crticos. So pontos onde a tangente representada
por uma linha horizontal e que, por isso, denem o local de mximo e de mnimo
da funo. Podemos perceber ao analisar uma determinada funo num determinado
intervalo que o sinal da derivada pode mudar, e, se esse sinal muda, signica que dentro
deste intervalo existe local de mximo e local de mnimo. Podemos tambm analisar
uma funo pela sua derivada segunda. De modo que, se a derivada segunda de um
ponto crtico positiva, ento o valor da funo naquele ponto signica um local de
mnimo. Da mesma forma, se a derivada segunda de um ponto crtico negativa, ento
a funo possui um local de mximo.
67
10.6.1 Derivao por expresses de diferenas
As tcnicas de diferenciao numrica estimam a derivada de uma funo em um
ponto x
k
atravs da aproximao da inclinao da reta tangente curva neste ponto
usando valores que a funo assume em pontos perto de x
k
. Essa aproximao pode
ser feita de vrios modos.
Assim, dependendo dos pontos, temos trs tcnicas:
A derivada segunda pode ser achada atravs da frmula:
f

(x) =
f

(x
k
) f

(x
k
1)
x
k
(x
k
1)
68
10.6.2 Comando di
Para o clculo de derivadas, o comando no MATLAB diff(f(x)), onde f(x) a
funo que se quer determinar a derivada.
Exemplo: Derivar as funes abaixo:
f(x) = 2x
2
+ 3x
f(x) =
1
3 x
Utilizando o comando acima explicado:
>> syms x
>>diff((2*x^2)+3*x)
ans =
4*x+3
>>diff((1/(3-x)))
ans =
1/(3-x)^2
69
10.6.3 Derivadas de ordem superior
As derivadas superiores podem ser calculadas atravs do comando diff(f(x), 2),
onde essa representao para a derivada segunda da funo f(x), para derivada terceira,
coloca-se 3 no lugar do nmero 2, para derivada quarta, o nmero 4 e assim por diante.
Exemplo: Achar a derivada segunda das seguintes funes:
f(x) =
1
3 x
f(x) = x
1
x
Utilizando o comando acima explicado:
>> syms x
>> diff((1/(3-x)),2)
ans =
2/(3-x)^3
>>diff((x-(1/x)),2)
ans =
-2/x^3
70
10.6.4 Derivadas Trigonomtricas:
Exemplo: Derivar as seguintes funes:
f(x) = sen(x)
f(x) = cos(2x)
f(x) = tan(3x + 5)
Utilizando o comando acima explicado:
>> syms x
>> diff(sin|x|)
ans =
cos(x)
>>diff(cos|2*x|)
ans =
-2*sin|2*x|
>>diff(tan|3*x+5|)
ans =
3+3*tan(3*x+5)^2
71
11
Ajuste de Curvas
Em numerosas reas, precisa-se do uso de uma equao para se resolver um problema.
O que fazer se ns s estivermos com os dados na mo? Nesse caso, o uso do ajustamento
e interpolao poder nos facilitar essa resoluo.
11.1 Ajuste de Curvas
No MATLAB, a funo polyt pode resolver quando voc tem os dados e tem que
transformar em polinmios. A ilustrao abaixo, permite-nos ver o uso dessa funo.
Depois, vamos plotar para ver se o ajustamento est certo:
x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];
y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
Para usar o comando polyt deve-se indicar qual o grau do polinmio para se tentar
ajustar. Por exemplo, se n=1, ele tentar ajustar para uma reta.
Agora, se for n=2, como o nosso caso, ele indicar um polinmio de grau 2.
Exemplo:
n=2;
p=polyfit(x,y,n)
p =
-9.8108 20.1293 -0.0317
O resultado do nosso ajuste : 9.8108x
2
+ 20.1293x 0.0317 . Vamos agora
vericar se o ajuste est certo:
xi=linspace(0,1,100);
z=polyval(p,xi);
plot(x,y,o,x,y,xi,z,:)
xlabel(x),ylabel(y)
title(Ajuste para uma curva quadrtica)
72
Figura 11: Ajuste para uma curva quadrtica
11.2 Interpolao Unidimensional
Para ilustrar uma interpolao unidimensional, vamos considerar o seguinte exemplo:
fazendo parte de um projeto cientco, foram coletadas informaes sobre temperaturas
durante um dia, num perodo de doze horas.
Como saber a temperatura em uma hora qualquer?
Vamos plotar esses dados:
horas=1:12;
temps=[5 8 9 15 25 29 31 30 22 25 27 24];
plot(horas,temps,horas,temps,+)
title(Temperaturas)
xlabel(Hora),ylabel(GrausCelcius)
Para estimar a temperatura numa determinada hora, usamos a funo interp1.
Exemplo:
73
Figura 12: Ajuste para uma curva quadrtica
t=interp1(horas,temps,9.3) % Estimar a hora 9,3
t =
22.9000
t=interp1(horas,temps,4.7) % Estimar a hora 4,7
t =
22
t=interp1(horas,temps,[3.2 6.5 7.1 11.7])
t =
10.2000
30.0000
30.9000
24.9000
Para se ter uma preciso ainda maior, deve-se usar o argumento spline.
Exemplo:
74
t=interp1(horas,temps,9.3,spline)
t =
21.8577
t=interp1(horas,temps,4.7,spline)
t =
22.3143
t=interp1(horas,temps,[3.2 6.5 7.1 11.7],spline)
t =
9.6734
30.0427
31.1755
25.3820
A interpolao tipo spline diferente da linear, pois emprega o conceito diferencial,
sendo por isso que os resultados diferem. O tipo spline mais indicado quando se quer
utilizar para grcos.
Exemplo:
h=1:0.1:12;
t=interp1(horas,temps,h,spline);
plot(horas,temps,--,horas,temps,+,h,t,r)
title(Temperaturas);
xlabel(Hora),ylabel(Graus Celcius) ;
Figura 13: Interpolao tipo spline
75
12
Transformadas
As transformadas so manipulaes matemticas para representar os mesmos elemen-
tos em diferentes domnios por meio de transformaes nos mesmos. Na Engenharia, elas
so usadas com muita freqncia para mudar o campo de referncia entre o domnio do
tempo e o domnio s, domnio da freqncia ou domnio Z. H muitas tcnicas para anal-
isar estados de equilbrio e sistemas que sofrem mudanas muito suaves no domnio do
tempo, mas os sistemas complexos quase sempre podem ser analisados mais facilmente
em outros domnios.
A funo impulso (t) a derivada da funo Degrau u(t). A funo Degrau K
(t-a) denida como K (t-a) = 0 para t<a e
_

k(t a)dt para t =a. Quando


representada em grco ela comumente representada como uma seta de amplitude K
em t = a:
Figura 14: Grco da funo (t - a)
12.1 Funes Degrau e Impulso
Os problemas de Engenharia freqentemente fazem uso da funo Degrau u(t) e
impulso (t) na descrio de sistemas. A funo Degrau Ku(t - a), onde K uma
constante, denida como Ku(t - a) = 0 para t < a e Ku(t - a) = K para t >a e
representada na gura a seguir.
Exemplo:
syms t k a
u = k*Heaviside(t-a)
d = diff(u)
int(d)
76
Figura 15: Grco da funo Degrau Ku(t - a)
12.2 Transformada de Laplace
A Transformada de Laplace realiza a operao
F(s) =
_

0
f(t)e
st
dt
Para transformar f(t), no domnio do tempo, em F(s), no domnio de s. A Transfor-
mada de Laplace da funo cosseno amortecido e
at
cos(t) encontrada usando-se a
funo Laplace:
syms a t w
f=sym(exp(-a*t)*cos(w*t))
F= laplace(f)
pretty(F)
laplace(sym(Dirac(t)))
laplace(sym(Heaviside(t)))
As expresses podem ser transformadas novamente para o domnio do tempo, usando-
se a Transformada Inversa de Laplace ilaplace que realiza a operao f(t). Usando F
do exemplo acima temos:
ilaplace(F)
12.3 Transformada de Fourier
A Transformada de Fourier e sua inversa so muito usadas em anlise de circuitos
para determinar as caractersticas de um sistema em ambos os domnios de tempo e
de freqncia. O MATLAB usa as funes fourier e ifourier para transformar ex-
presses entre domnios. A Transformada de Fourier e sua inversa so denidas por:
77
F(s) =
_

f(t)e
jwt
dt
f(t) =
_

F(w)e
jwt
dw
O MATLAB usa um w para representar em expresses simblicas.
Exemplo:
syms t
f= sym(t*exp(-t^2))
F= fourier(f)
invfourier(F)
12.4 Transformada Z
As transformadas de Laplace e Fourier so usadas para analisar sistemas de tempo
contnuos. A Transformada Z, por outro lado, usadas para analisar sistemas de tempo
discreto. A Transformada Z denida como:
F(z) =

k=0
f(k)z
k
,
onde z um nmero complexo.
A Transformada Z e a Transformada Inversa de Z so obtidas usando-se as funes
ztrans e iztrans. O formato similar ao das funes de Transformadas de Laplace e
Fourier.
12.5 Exerccios
12.5.1 Exerccio 1: Sistemas Lineares
O circuito mostrado abaixo possui uma fonte de tenso contnua de 60V e quatro
resistores distribudos em trs malhas. Utilize o MATLAB para resolver o sistema linear
e achar as correntes no circuito.
7I
1
+ 12(I
1
I
2
) = 60
12(I
2
I
1
) + 6(I
2
I
3
) = 0
6(I
2
I
3
) + 12I
3
= 0
78
Figura 16: Circuito eltrico do exerccio 1
Aplicando as leis de Kirchho no circuito, tm-se trs equaes para trs incgnitas
linearmente independentes (I
1
, I
2
e I
3
).
19I
1
12I
2
= 60
12I
1
+ 18I
2
6I
3
= 0
6I
2
+ 18I
3
= 0
Reorganizado as equaes, tem-se o sistema pronto para ser passado para forma
matricial e ento ser resolvido, sendo, no caso do sistema eltrico R
3X3
.I
3X1
= V
3X1
.
Comandos utilizados em sistemas lineares:
x=A\B Diviso esquerda para sistemas Ax=B
x=B/A Diviso esquerda para sistemas xA=B
inv(A) Inverso de A
det(A) Determinante de A
rank(A) Oposto de A
12.5.2 Exerccio 2: Equaes Diferenciais e Transformadas
Achar a equao para a tenso no capacitor no circuito abaixo utilizando soluo por
equaes diferenciais considerando nulas as condies iniciais, ou seja, v
C
(0).
Figura 17: Circuito eltrico do exerccio 2
Aplicando a lei das malhas de Kirchho, tem-se
79
Ri(t) + v
C
V
S
(t) = 0 (1.1)
Como os elementos esto todos em srie, a corrente que ui pelo resistor a mesma
que ui pelo capacitor:
i(t) = i
C
(t) = C
d
dt
v
C
dt (1.2)
Substituindo (1.2) em (1.1) tem-se a equao diferencial de 1
a
ordem para um circuito
RC srie:
RC
d
dt
v
C
dt + v
C
(t) V = 0 (1.3)
A tenso no capacitor dada pela equaao diferencial, que mostrada na equaao
abaixo:
v
C
(t) = V (1 e
1t
RC
) (1.4)
a. Funo dsolve
A funao dsolve fornece soluo simblica para equaes diferenciais ordinrias.
Basta simplesmente entrar com uma ou mais equaes diferenciais e suas respectivas
condies iniciais que a resposta fornecida. Por exemplo, para resolver a equao
d
2
dt
2
y = t com condies iniciais y(0) = 2 e y

(0) = 0, entra-se no MATLAB com


dsolve (D2y=t,y(0)=2,Dy(0)=0)
ans =
1/6*t^3-2
Agora resolva a equao (1.3) utilizando a funo dsolve.
b. Transformada de Laplace
A seguir, tem-se uma tabela com os pares mais simples da Transformada de Laplace.
Teste alguns deles no MATLAB, sem se esquecer de declarar as variveis simblicas com
o comando sym(var1) ou syms var1 var2 var3 ....
Voltando ao exerccio 2, a soluo da equao (1.3) pode ser obtida a partir da
Transformada de Laplace da mesma, obtendo V
C
(S), que a tenso do capacitor no
domnio s. Utilizando a funo de laplace, tem-se o resultado em (1.5).
syms R C V
vR=R*C*diff(sym(vC(t)));
vC=sym(vC(t));
Y=laplace(vR+vC-V)
y =
R*C*(s*laplace(vC(t),t,s)-vC(0))+laplace(vC(t),t,s)-V/s
80
Figura 18: Transformadas de Laplace para algumas funes (t - a)
RCs(V
C
(s) v
C
(0)) + V
C
(s)
V
s
= 0 (1.5)
A partir dessa simples manipulao algbrica da equao para isolar a varivel V
C
(s)
e expanso em fraes parciais, pode-se ento aplicar a Transformada Inversa de Laplace
para achar v
C
(t)utilizando a funo ilaplace do MATLAB.
V
C
(s) =
V
s

V
s+
1
RC
(1.6)
E o resultado da manipulao atravs do domnio s deve coincidir com a resoluo
obtida pelos mtodos tradicionais para soluo de equaes diferenciais ordinrias de 1
a
ordem:
L
1
{V
C
(s)} = v
C
(t) = V (1 e
1t
RC
) (1.7)
Tabela de Comandos teis - Transformadas
laplace(f) Transformada de Laplace de f
ilaplace(F) Transformada Inversa de Laplace de F
fourier(f) Transformada de Fourier de f
ifourier(F) Transformada Inversa de Fourier de F
ztrans(f) Transformada Z de f
iztrans (F) Transformada Inversa de Z de F
12.5.3 Exerccio 3: Transformada de Fourier
Para fazer uso da Transformada Discreta de Fourier (DFT) ou da Transformada
Discreta Rpida de Fourier (FFT), vamos gerar um sinal composto de trs freqncias
distintas e analisar seu espectro de freqncias atravs do comando t.
81
1) Declare as constantes da rotina no MATLAB. So elas:
a. Freqncia de amostragem (Fs): nmero de pontos por perodo que o sinal ser
amostrado (medido);
b. Ciclos de amostragem (k): nmero de perodos que o sinal vai ser amostrado em
relao freqncia mais baixa;
c. Freqncias 1, 2, 3 (f1, f2, f3): denir valor de uma freqncias quaisquer que com-
poro o sinal a ser analisado. O sinal ser da forma
y(t) = 100 (sin(2..f1.t + 2..f2.t + 2..f3.t)
2) Construa o vetor do tempo para a funo y a partir da gerao de um vetor da
seguinte forma: t = (0 : passo : t
total
) sendo passo =
1
Fs
e t
total
=
k
min([f1,f2,f3])
.
3) Tendo gerado o vetor do tempo e declarado as constantes na 1
a
etapa, plote a
funo y(t). Um exemplo para freqncias de 100, 200 e 300 Hz est na gura 19.
Figura 19: Forma de onda de y(t) para f1=100, f2=200 e f3=300.
4) Para a anlise do espectro, execute a FFT (Fast Fourier Transform) do sinal da
funo y(t) por meio do comando t da seguinte forma: "Y = fft(y)".
5) Construa um vetor de freqncias para a plotagem da seguinte forma: "F = (0 :
length(y) 1)
Fs
lenght(Y )
;", Onde Fs a freqncia de amostragem do sinal, que pode
ser considerada como 1 para exibir um espectro de freqncias normalizado, ou seja, de
zero a 1, independentemente da freqncia de amostragem do sinal.
6) Por m, plote o mdulo da srie Y em funo de F. No se esquea de, alm de
operar o mdulo de Y, deve-se dividir os valores do mesmo pelo nmero de pontos do
vetor da seguinte forma "abs(Y)/lenght(Y)". Isto deve ser feito, pois a Transformada
de Fourier gera pontos de amplitude multiplicados pelo nmero de termos da srie que
foi transformada. A FFT de um exemplo est mostrada na gura 20.
82
Figura 20: Resultado da FTT mostrado de 0 a 500 Hz.
7) Aps analisar o espectro, faa o caminho inverso tentando reconstruir o sinal e
plot-lo usando a Transformada Inversa de Fourier atravs do comando it.
OBS: A ttulo de curiosidade, verique como caria a forma de onda e o espectro
de uma srie de valores aleatrios gerados pelo Matlab atravs da troca da funo y
original por y = 100 rand(1, length(t)).
83
Soluo:
Figura 21: Soluo do exerccio 3
84
13
SIMULINK
O que SIMULINK?
O Simulink um pacote computacional voltado para a modelagem, simulao e
anlise de sistemas dinmicos, tanto lineares quanto no-lineares, contnuos e/ou dis-
cretos no tempo.
Figura 22: Diversas aplicaes do Matlab e do Simulink em engenharia e cincias exatas.
A modelagem de sistemas dinmicos no Simulink se d atravs de diagramas de
blocos. De fato, o Simulink possui centenas de blocos com funes pr-denidas que
permitem que um determinado modelo seja perfeitamente representado. Existem ainda
arquivos com exemplos que ilustram algumas aplicaes e potencialidades do Simulink.
Tais exemplos podem ser acessados atravs da biblioteca de blocos. Alm de facilitar
a visualizao de um sistema ou processo, a representao por diagramas de blocos
bastante utilizada em se tratando de controle de sistemas. Dessa forma, o Simulink
provm uma interface adequada para a simulao de tais sistemas. O Simulink possui
ainda uma srie de conguraes que do exibilidade ao usurio, permitindo, por ex-
emplo, a escolha entre os mtodos numricos empregados durante as simulaes. Dessa
forma, possvel adequadar uma simulao de acordo com s necessidades de um de-
terminado sistema. Conforme ser visto neste curso, a anlise de sistemas compe-se
85
de um conjunto de ferramentas tais como: linearizao, blocos de vericao e grcos.
13.1 Introduo
13.1.1 Diagrama de Blocos
Um diagrama de blocos uma forma de representar um modelo de sistema como um
todo. Em um diagrama como este, cada bloco desempenha uma determinada funo.
Dessa forma, as inter-conexes dos blocos permitem a representao de um processo.
As setas indicam a sequncia de operaes as quais uma constante, varivel ou funo
sero submetidas.
Figura 23: Exemplo de um diagrama de blocos complexo: Motor, transmisso e freios
de um automvel.
Uma forma usual de representar sistemas dinmicos lineares atravs de funes de
transferncia. Uma funo de transferncia pode ser obtida atravs da transformada de
Laplace e de manipulaes algbricas. Dessa forma, grande o nmero de blocos no
Simulink destinados a utilizao de funes como essas. Um bloco pode, por exemplo,
representar uma funo de transferncia.
Partindo-se de um diagrama de blocos, possvel, mediante o uso de regras especiais,
denominadas "lgebra dos diagramas de bloco", reduzir um diagrama de blocos a um
nico bloco e, assim, achar a funo de transfercia global sistema.
86
13.1.2 Smbolos
Os smbolos mais utilizados em diagramas de blocos encontram-se representados a
seguir:
Figura 24: Smbolos utilizados em diagramas de blocos
13.2 Conhecendo o Simulink
13.2.1 Iniciando o Simulink
Para acessar o SIMULINK deve-se, inicialmente, abrir o Matlab, pois apesar do
Simulink ser uma aplicao especca, este utiliza-se das ferramentas de computao
numrica do Matlab.
Uma vez que o Matlab est sendo executado, deve-se clicar no cone Start Simulink
na barra de ferramentas do Matlab ou digitar simulink na linha de comando e pressionar
enter em seguida, como mostrado a seguir:
simulink <enter>
Aps aberto o Simulink, duas janelas aparecero na tela: a biblioteca de blocos do
Simulink e uma janela em branco para construo do modelo.
Caso a biblioteca no esteja aberta, clique em Library Browser,localizado na barra
de ferramentas do Simulink para acess-la. Uma vez que a biblioteca estiver aberta,
basta selecionar os blocos desejados e arrast-los para a janela em branco do Simulink.
As conexes entre os blocos so feitas a partir do mouse, clicando-se sobre as conexes
existentes nos blocos e arrastando-as at o bloco desejado.
No Simulink, os blocos esto separados de acordo com as funes que desempenham.
Assim, importante determinar quais blocos representam o sistema em si e quais blocos
atuam como entradas, sadas, ou se desenvolvem funes de anlise.
87
Figura 25: Janela destinada criao do modelo
Figura 26: Biblioteca de blocos
13.2.2 Construindo e analisando um modelo simples
A partir de um problema, deve-se criar um modelo capaz de solucion-lo e ento
vericar se a soluo est correta. Para exemplicar essa idia, um modelo ser densen-
volvido para resolver a seguinte equao diferencial, que o problema em questo.
x

= sen(t) onde x(0) = 0


Uma forma de solucionar esta equao diferencial integrar a funo seno e encontrar
o valor para uma constante de forma que a condio inicial seja satisfeita. A partir desta
proposta, ser criado um diagrama de blocos. Ento o diagrama dever ter, pelo menos,
um bloco que representa a funo seno, assim como outro para realizar a integrao da
funo seno. A funo seno funciona, neste exemplo, como uma fonte, ento, d um
duplo clique no cone Sources na janela de bibliotecas do Simulink.
Arraste o bloco da onda senoidal (Sine Wave) para a janela do modelo. Uma cpia
deste bloco dever aparecer nesta janela.
Em seguida arraste o bloco integrator, presente na biblioteca continuous. Faa o
mesmo para o Scope, que est na biblioteca Sinks.
A seguir, conecte os blocos para completar o modelo como na gura a seguir:
88
Figura 27: Fonte senoidal inserida no projeto
Figura 28: Blocos utilizados no exemplo.
Figura 29: Conexes entre os blocos.
Aps adicionar os blocos ao modelo, possvel congur-los atravs de um duplo
clique sobre eles. No bloco da funo seno, por exemplo, possvel congurar, entre
outros parmetros, a amplitude da funo, a frequncia e a fase. O valor inicial da
funo x(t) congurado no bloco da integral, assim como os limites superior e inferior.
D um duplo click no bloco SCOPE e na barra de menu do SIMULINK clique SIM-
ULATION:START. A simulao ser executada, resultando no grco gerado no bloco
SCOPE, mostrado a seguir:
Para vericar se o grco gerado representa a soluo da equao diferencial desejada,
deve-se resolver a mesma analiticamente, cujo resultado : x(t) = 1 cos(t), que
corresponde ao grco apresentado. interessante alterar o valor inicial de x(t) no
bloco da integral e vericar o resultado obtido.
13.2.3 Exemplo: Modelo de um processo biolgico
Neste exemplo ser desenvolvido um diagrama de blocos para um processo biolgico.
Trata-se de um modelo para o crescimento de bactrias, isoladas do ambiente externo,
descrito por Scheinerman. Admite-se que as bactrias nascem numa taxa proporcional
ao nmero de bactrias presentes em um instante e que morrem a uma taxa proporcional
89
Figura 30: Grco gerado no Scope.
ao quadrado do nmero de bactrias presentes. Se x representa o nmero de bactrias
presentes, a taxa em que as bactrias nascem denida por:
Taxa de Natalidade = bx; Taxa de Mortalidade = px
2
A taxa total de mudana na populao de bactrias a diferena entre a natalidade
e a mortalidade de bactrias. O sistema pode ser ento descrito pela equao diferencial
a seguir: x

= bx px
2
Partindo desta equeo ser ento construdo um modelo para este sistema dinmico.
Supondo que b=1 bactria/hora e p=0,5 bactria/hora, ser determinado o nmero de
bactrias contidas no pote aps 1 hora, admitindo que inicialmente existiam 100 bactrias
presentes. Crie uma nova janela de modelo na barra de menu escolhendo FILE:NEW.
Este um sistema de primeira ordem, o que quer dizer que requer somente um
integrador para resolver a equao diferencial. A entrada do integrador x

e a sada
x. Abra o biblioteca linear e arraste o integrador para a janela do modelo, seguindo a
posio mostrada na gura:
Ainda na biblioteca Linear, arraste dois blocos de ganhos (Gain) para a janela do
modelo e posicione-os como na gura seguinte. O Simulink exige que cada bloco tenha
seu nome nico. Devido a isto, o segundo bloco de ganho ser nomeado GAIN1. Arraste
ainda um bloco de soma (Sum) e a seguir feche a janela da biblioteca linear.
Abra agora a biblioteca de blocos de operaes matemticas (Math Operations) e
arraste um bloco de produto (Dot Product) para a posio mostrada. Este bloco ser
utilizado para calcular o valor de x
2
.
Abra a seguir a biblioteca dispositivos de sada (Sinks) e arraste um bloco SCOPE
para a janela do modelo seguindo a posio mostrada.
A orientao padro dos blocos no SIMULINK posicionar as entradas esquerda e
as sadas direita. Porm, neste modelo, ser mais legvel os blocos de ganho e produto
forem invertidos. Iniciando com o bloco do Produto, deve-se primeiro clicar sobre ele de
modo a selecion-lo. Pequenos quadros pretos aparecero nas quinas do bloco indicando
seleo. Pressione o boto direito. No menu, escolha FORMAT: FLIP BLOCK. Agora
as entradas esto direita e as sadas esquerda. Repita a operao de inverso para
cada bloco de Ganho. O modelo agora deve estar semelhante gura que segue abaixo:
90
Figura 31: Integrador inserido no projeto
Figura 32: Blocos inseridos
Trace agora uma linha de sinal da sada do bloco de soma para a entrada do inte-
grador e outra da sada do integrador para a entrada do SCOPE.
A seguir necessrio conectar a linha que liga o integrador ao SCOPE at bloco
de ganho situado na parte inferior da janela, pois esta linha contm o valor de x. Para
faz-lo, pressione a tecla CTRL do teclado e clique na linha de sinal. O cursor do mouse
ir mudar para uma cruz. Conserve a tecla do mouse pressionada enquanto a ligao
feita e solte agora a tecla CTRL. Leve a linha at a entrada do bloco de ganho. O
SIMULINK automaticamente ajusta a linha com um ngulo de 90
o
. Se o mouse possuir
trs botes, as operaes de clicar e arrastar podem ser feitas utilizando o boto direito.
Repita a operao ligando a linha de sinal Integrator-SCOPE at a entrada superior
do bloco de produto. Da linha de sinal que liga a entrada superior do bloco de produto
91
Figura 33: Blocos inseridos aps rotao
repita a operao de ligao para a entrada inferior do mesmo bloco, de modo que o
bloco execute a operao x.x = x
2
. Conecte agora a sada do bloco de produto entrada
do ganho na parte superior da janela de modelo. Aps isso, necessario conectar a sada
do ganho superior entrada superior do bloco de soma e a sada do ganho inferior
entrada inferior do mesmo bloco de soma.
Figura 34: Blocos conectados
O modelo agora est completo, mas os blocos devem ser congurados (parametriza-
dos) para que este represente o sistema desejado. O Simulink tem o valor 1.0 como
padro(default) para os blocos de ganho, entradas positivas no bloco de soma e o valor
inicial 0.0 para o integrador. O valor inicial do integrador representa o nmero inicial de
bactrias presentes no pote. Para acessar as conguraes de um bloco, basta dar um
duplo clique sobre o bloco. Para parametrizar os blocos de ganho. D um duplo clique
92
no ganho da parte superior e mude o valor de 1.0 para 0.5 na caixa de dilogo que ir
aparecer, a seguir clique em Close. Note que o valor do ganho do bloco muda para 0.5
no diagrama em blocos.
Agora d um duplo clique no bloco de soma e no campo List of signs mude de ++
para + na caixa de dilogo que abrir. Os sinais representam os prprios sinais de
entrada no bloco. A seguir clique em Close.
Note agora que no bloco de soma o sinal superior negativo e o inferior positivo,
sendo ento a sada a diferena das entradas que representa x

de acordo com a equao


diferencial aps substituir os valores de p e b.
Para nalizar a congurao, deve-se denir o nmero inicial de bactrias. Para isto,
d um duplo clique no integrador e no campo "Initial condition"mude para 100, e aps
clique Close.
A durao da simulao , por padro, ajustada para ir de 0 a 10 segundos. Neste
caso, deseja-se saber o resultado aps 1 hora. Para mudar este tempo, seleciona-se na
barra de menu a opo SIMULATION:PARAMETERS e no campo "Start Time"digita-
se 3600. Dessa forma ser tomado os valores da simulao aps uma hora. Em "Stop
Time"o tempo nal da simulao. Por exemplo, 3610, para que a simulao dure 10
segundos.
O modelo agora est completo e pronto para ser executado. Para salvar, v barra
de menu e selecione FILE:SAVE e entre com o nome desejado. O modelo ser salvo com
93
Figura 35: Parmetros do bloco integrador
Figura 36: Parmetros da simulao
o nome digitado e a extenso .mdl, e seu nome aparecer na barra de ttulo da janela de
edio. Abra agora o SCOPE com um duplo clique e a seguir na barra de menu, clique
em SIMULATION:START para iniciar a execuo.
O SCOPE nem sempre mostra a gura numa boa escala para visualizao. O boto
Autoscale na barra de ferramentas do SCOPE redimensiona a escala para acomodar
todos os valores.
94
Figura 37: Resultado da simulao
Figura 38: Resultado da simulao redimensionado
13.3 Principais blocos do Simulink e suas funes
Conforme exemplicado, um modelo Simulink consiste basicamente de trs tipos de
componentes: fontes de sinais, o prprio sistema a ser modelado e as sadas. O modelo
de um sistema geralmente composto por mais de um bloco.
Figura 39: Fontes, sistema e sadas.
95
As fontes caracterizam-se por fornecer valores s entradas do sistema incluem blocos
que representam constantes, funes, valores aleatrios ou ainda sinais personalizados
pelo usurio. Estes blocos so encontrados na biblioteca de fontes (Sources). As sadas
do sistema possuem os resultados obtidos ao longo do processo. Em geral, h interesse
em se conhecer estes valores, de forma que o bloco SCOPE usualmente conectado a
uma sada para plotar um grco. Abaixo encontra-se uma lista com os principais blocos
e suas funes. importante observar que todos os blocos possuem parmetros que
podem ser congurados. Para isto, d um duplo clique sobre o bloco.
As entradas de um modelo so chamadas fontes (Sources) e podem ser encontradas
na biblioteca de fontes. Um bloco de fonte no possui entrada e deve possuir pelo
menos uma sada. A documentao detalhada de cada fonte pode ser encontrada no
help do Simulink. No texto que segue sero mencionadas somente os tipos mais comuns
e utilizados de fontes. Sero ainda discutidas as operaes de importao do MATLAB
e de arquivos que contenham dados os quais se deseja inserir no modelo. Tal facilidade
permite que se tenha qualquer tipo de sinal de entrada, exista ele no Simulink ou no.
Fontes Comuns
Exemplo: Impulso Unitrio
Um sinal muito utilizado para determinar o comportamento dinmico de sistemas
o Impulso Unitrio, tambm conhecido como Funo Delta ou Funo Delta de Dirac.
O Impulso Unitrio = (t-a) denido como um sinal de durao igual a zero, tendo
as seguintes propriedades:
(t a) = 0; t = a
_

(t)dt = 1
Embora o impulso unitrio seja um sinal que teoricamente no existe existem boas
aproximaes do caso ideal que so muito comuns. Exemplos fsicos so colises, como
uma roda se chocando com o meio-o ou um basto rebatendo uma bola ou ainda
mudanas instantneas de velocidade como a de uma bala sendo disparada de um ri-
e. Outra utilidade da funo impulso a determinao da dinmica do sistema. O
movimento causado em um sistema que sofre uma fora impulsional unitria a prpria
dinmica inerente ao sistema. Partindo disto, pode-se utilizar a resposta um impulso
unitrio de um sistema complexo para se determinar sua freqncia natural e suas car-
actersticas de vibrao.
Pode-se criar uma aproximao de um impulso unitrio utilizando duas fontes de
funo degrau e um bloco de soma. A idia produzir num tempo denido a um
pulso de durao muito curta d e de magnitude M, tal que M.d=1. A diculdade
consiste em se denir um valor apropriado para d. Deve ser um valor pequeno quando
comparado mais rpida dinmica do sistema Porm, se for muito curto, podem ocorrer
problemas numricos como erros de aproximao. Se for muito longo a simulao no
96
Figura 40: Um modelo para o impulso unitrio.
ser adequada um impulso verdadeiro. Usualmente, valores adequados podem ser
determinados experimentalmente.
O modelo na gura acima deve ser ajustado para simular um impulso unitrio ocorrido
aos 0.5 segundos de simulao com uma durao de 0.01 segundos e a magnitude de
100. A fonte degrau na parte superior deve ter a seguinte congurao: Step time: 0.5,
Initial value: 0, Final value: 100. J a fonte situada na parte inferior deve ser congurada
da seguinte forma: Step time: 0.51, Initial value: 0, Final value: 100. A simulao deve
ser congurada para terminar em 1 segundo.
13.3.1 Principais Fontes(Sources):
Essas so as principais fontes:
Constant - Fornece um valor constante.
Sin Wave - Funo seno. possvel congurar os parmetros.
Ramp - Uma reta linear. possvel congurar a inclinao.
Step - Funo degrau. Pode-se congurar o tempo, amplitude e valor inicial.
Pulse Generator - Gera uma onda quadrada.
Ramdon Number - Nmeros aleatrios no tempo.
Signal Generator - Gera as ondas tpicas de um gerador de sinais: quadrada, serra,
senide, etc.
13.3.2 Principais blocos usados na modelgem de sistemas dinmi-
cos
Os principais blocos so:
Derivative - Calcula a derivada da funo em relao ao tempo.
Integrator - Calcula a integral da funo em relao ao tempo.
Transfer Fcn - Adiciona uma funo de transferncia. Os valores podem ser ajustados
nas conguraes (duplo clique sobre o bloco).
Transport Delay e Variable Transport Delay - Adiciona um delay de tempo.
Zero-Pole - Semelhante a funo de transferncia.
Abs - Calcula o valor absoluto.
Add - Soma ou subtrai as entradas (inputs).
Sum - Soma ou subtrai valores, tais como em feedbacks.
Gain - Ganho. Multiplica a entrada pelo valor congurado.
Dot Product - Faz o produto escalar com as entradas.
97
Min - A sada deste bloco o valor mximo, ou mnimo da entrada, de acordo com a
congurao.
Product - Faz o produto entre as entradas.
Divide - Faz o produto e/ou a diviso entre as entradas.
Real-Imag to complex - Transforma dois nmeros em um nico nmero complexo.
13.3.3 Vericao do modelo
Os blocos para a vericao de modelo so teis quando se deseja saber se os valores
de entrada ou sada de um determinado bloco esto, por exemplo, dentro de uma faixa
de valores. Sempre que a condio no for satisfeita, aparecer uma mensagem de erro
durante a simualo.
Assertion - Verica se um valor diferente de zero.
Check Dynamic Gap: - Checa se um sinal menor ou maior que dois outros sinais.
Check Dynamic Lower Bound: - Checa se um sinal sempre menor que outro.
Check Dynamic Range: - Verica se um sinal sempre tem valores entre outros dois sinais.
Check Dynamic Upper Bound: - Verica se um sinal sempre maior que o outro.
Check Static Gap: Checa se um sinal menor ou maior que dois outros valores estticos.
Check Static Lower Bound: Verica se um sinal maior ou igual a um valor esttico
denido.
Check Static Range: - Verica se um sinal est sempre outros dois valores estticos.
Check Static Upper Bound: Checa se um sinal menor ou igual a um limite superior.
13.3.4 Blocos de sadas(Sinks)
Esses so os blocos de sadas:
Display - Mostra em uma tela os valores da entrada durante a simulao.
Scope - Exibe um grco dos valores de entrada em relo ao tempo.
Stop Simulation - Quando a entrada deste bloco for diferente de zero, a simulo ser
interrompida.
Terminator - Uma terminao. Pode ser usado para evitar erros gerados por blocos com
sadas no conectadas.
To le - Escreve os valores de sada em uma matriz.
13.3.5 Criando blocos de sub-sistemas
Um sub-sistema um sistema menor que est contido no sistema principal. Dessa
forma, ele tambm composto por blocos. Esta uma forma ecaz de organizar
um diagramas de blocos. Por exemplo, se um determinado processo bem denido
composto por dezenas de blocos, possvel substituir todos estes blocos por apenas um
bloco utilizando um sub-sistema. Para isso, selecione todos os blocos que deseja incluir
no sub-sistema e clique com boto direito do mouse. V at a opo Create Subsystem.
Assim ir surgir um nico bloco que contm em seu interior todos os outros blocos. Para
acess-lo, basta dar um duplo clique que o sub-sistema ser exibido em nova janela.
98
13.3.6 Blocos condicionais
possvel ainda utilizar-se de blocos condicionais, tais como o bloco If. Neste bloco
h entradas para sinais e uma comparao feita. Se for verdadeira, o bloco libera um
sinal de nvel alto na sada. Observe que este sinal no o valor da entrada do bloco
e sim um sinal que arma se verdadeira ou falsa a armativa. As sadas dos blocos
condicionais podem ser conectadas aos blocos If Action Subsystem. Estes blocos so
sub-sistemas que iro atuar quando for verdadeiro o sinal presente na entrada if. Dessa
forma, necessrio editar os blocos do If Action Subsystem para que as sadas sejam as
desejadas.
Exemplo: Construa o sequinte diagrama de blocos no Simulink. Este modelo limita
o valor de uma funo qualquer, por exemplo, uma senide. O valor da senide
comparado com outro valor estabelecido no bloco if. Se a condio for verdadeira,
ento um sub-sistema acionado. Este sub-sistema nada mais que uma entrada e
uma sada, porm ele pode ser modicado a m de atigir o resultado desejado.
Figura 41: Um diagrama de blocos condicional.
13.3.7 Personalizando o modelo e manipulando Blocos
possvel personalizar o modelo atravs da mudana de cores, tanto do background
como dos blocos em si. Esta uma forma de tornar mais visvel ou mesmo organizar
partes de um sistema complexo. Para alterar a cor do background, clique com o boto
direito em algum ponto da tela e v at "screen color"e selecione a cor desejada. O
mesmo pode ser feito para um bloco. Neste caso, clique com o boto sobre um bloco
e v em background color para mudar a cor do bloco; e em foreground color para
modicar as cores do contorno do bloco. A tabela a seguir contm as operaes bsicas
de manipulao de blocos como redimensionar, rotacionar, copiar e renomear blocos.
99
Ao Descrio
Seleo simples de objeto Clique no objeto com o boto esquerdo do mouse.
Seleo mltipla de objetos Pressione a tecla SHIFT e clique no outro objeto.
Selecionar com uma caixa de
seleo
Clique com o boto esquerdo do mouse no local onde
se deseja que seja uma das quinas da caixa de seleo.
Continue com a tecla do mouse pressionada e arraste
a caixa para encobrir a rea esejada.
Copiar um bloco de uma bib-
lioteca ou de outro modelo
Selecione o bloco e arraste para a janela do modelo
para a qual se quer copiar.
Inverter blocos Selecione o bloco e no menu Format:Flip Block.
Tecla de atalho: CTRLF.
Rotacionar blocos Selecione o bloco e no menu Format:Rotate Block.
Tecla de atalho: CTRLR.
Redimensionar blocos Selecione o bloco e arraste o canto.
Adicionar sombra Selecione o bloco e no menu Format:Show Drop
Shadow.
Editar o nome de um bloco Clique no nome.
Ocultar o nome de um bloco Selecione o nome, no menu Format:Hide Name
Inverter o nome de um bloco Selecione o nome, no menu Format:Flip Name
Apagar Objetos Selecione o objeto, no menu Edit:Clear. Tecla de
atalho: Del.
Copiar objetos para a rea de
transferncia
Selecione o objeto, no menu Edit:Copy. Tecla de
atalho: CTRLC.
Recortar objetos para a rea
de transferncia
Selecione o objeto, no menu Edit:Cut. Tecla de
atalho: CTRLX.
Colar objetos a partir da rea
de transferncia
No menu Edit:Paste. Tecla de atalho: CTRLV.
Traar uma linha de sinal Arrastar com o mouse da sada do bloco para a en-
trada do outro.
Traar uma linha de sinal em
segmentos
Arraste com o mouse da sada do bloco at o primeiro
ponto. Repetir deste ponto at o seguinte e assim por
diante.
Traar uma linha ligada a
outra
Mantenha a tecla CTRL pressionada e clique sobre a
linha de origem. Tecla de atalho: Clicar com o boto
direito do mouse a partir da linha de origem.
Separar uma linha Selecione a linha. Mantendo a tecla SHIFT pression-
ada, clique e arraste o novo vertex para a posio
desejada.
Mover um segmento de linha Clique e arraste o segmento desejado.
Mover um vertex de um seg-
mento.
Clique e arraste o vertex desejado.
Nomear uma linha de sinal Duplo clique na linha e digite o nome.
Mover o nome de uma linha
de sinal
Clique e arraste o nome para a posio desejada.
100
Ao Descrio
Copiar o nome de uma linha
de sinal
Mantendo a tecla CTRL pressionada, arraste o nome
para a posio desejada. Tecla de atalho: clique e
arraste com o boto direito do mouse para a posio
desejada.
Sinais de propagao numa
linha de sinal
D um nome aos sinais conhecidos (entrada) com um
nico caracter e nas linhas em que se deseja saber seu
contedo, deve-se digitar somente o caracter <.
Aps isso, no menu Edit:Update Diagram.
Acrescentar anotao ou ob-
servao no modelo
D um duplo clique no local em que se deseja e digite
o texto.
101
14
Referncias Bibliogrcas
Curso de MATLAB for Windows, Departamento de Engenharia Mecnica, UNESP,
Campus de Ilha Solteira.
Trindade, Marcelo A. e Sampaio, Rubens, Introduo ao MATLAB, Departamento
de Engenharia Mecnica, Laboratrio de Dinmica e Vibraes, PUC-Rio.
Noes Bsicas de Utilizao e Programao em Matlab, Curso de Matemtica,
Programa de Educao Tutorial, Universidade Federal de Santa Maria, 2008.
Hey, H. L., Caderno didtico de Sistemas de Controle I, Departamento de Eletrnica
e Computao, UFSM, Santa Maria.
www.mathworks.com.
102

Potrebbero piacerti anche