Sunteți pe pagina 1din 103

Sumrio

1 Apresentao
1.1 Soluo de Problemas . . . . . . . .
1.1.1 Enunciado do Problema . . .
1.1.2 Descrio Entrada/Sada . .
1.1.3 Exemplo Manual . . . . . . .
1.1.4 Soluo MATLAB . . . . . .
1.1.5 Testando . . . . . . . . . . .
1.2 Apresentao . . . . . . . . . . . . .
1.2.1 Ambiente de Trabalho . . . .
1.2.2 Editor de Linhas de Comando
2 Introduo
2.1 Introduo a Matrizes Simples . . .
2.2 Elementos de Matrizes . . . . . . .
2.3 Declarao de Variveis . . . . . . .
2.4 Informaes sobre a rea de Trabalho
2.5 Nmeros e Expresses Aritmticas . .
2.6 Nmeros e Matrizes Complexas . . .
2.7 Formatao de Sada . . . . . . . .
2.8 Utilizao do comando help . . . . .
2.9 Utilizao do comando lookfor . . . .
2.10 Funes . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

5
5
5
5
6
7
7
8
10
10

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

13
13
15
16
17
17
18
19
20
21
21

3 Manipulao de Matrizes e Vetores


3.1 Operaes com Matrizes . . . . . . . . . . . . . .
3.1.1 Transposio . . . . . . . . . . . . . . . .
3.1.2 Adio e Subtrao . . . . . . . . . . . .
3.1.3 Multiplicao . . . . . . . . . . . . . . .
3.1.4 Diviso . . . . . . . . . . . . . . . . . . .
3.1.5 Potenciao . . . . . . . . . . . . . . . .
3.2 Operaes Elemento a Elemento (Conjuntos) . .
3.2.1 Adio e Subtrao . . . . . . . . . . . .
3.2.2 Multiplicao e Diviso . . . . . . . . . .
3.2.3 Potenciao . . . . . . . . . . . . . . . .
3.3 Matrizes Elementares . . . . . . . . . . . . . . .
3.3.1 Gerao de Vetores . . . . . . . . . . . .
3.3.2 Matriz Identidade . . . . . . . . . . . . .
3.3.3 Matriz Composta por Elementos Unitrios
3.3.4 Matriz Nula . . . . . . . . . . . . . . . .
3.3.5 Matriz Aleatria . . . . . . . . . . . . . .
3.4 Elementos de Matrizes . . . . . . . . . . . . . . .
3.5 Manipulao de Matrizes . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

23
23
23
24
24
25
25
25
25
26
26
26
26
27
28
28
28
29
30

. . . .
. . . .
. . . .
. . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

3.5.1
3.5.2
3.5.3
3.5.4

Matriz Diagonal ou Diagonal de uma Matriz


Matrizes Triangulares . . . . . . . . . . . .
Redimensionamento de Matrizes . . . . . . .
Rotao dos Elementos da Matriz . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

30
31
31
32

4 Funes
4.1 Funes Escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Funes Vetoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Funes Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33
33
33
34

5 Polinmios

35

6 Anlise Polinomial
6.1 Avaliao do polinmio .
6.2 Comando polyval . . . . .
6.3 Operaes Aritmticas .
6.3.1 Soma e subtrao
6.3.2 Multiplicao . . .
6.3.3 Diviso . . . . . .
6.4 Razes de polinmios . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

37
37
37
38
38
39
39
39

7 Grficos
7.1 Grficos X-Y . . . . . . . . . . .
7.1.1 Acessrios para os Grficos
7.1.2 Nmeros Complexos . . . .
7.2 Grficos Polares . . . . . . . . . .
7.3 Grficos 3D . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

42
42
44
46
46
46

.
.
.
.
.
.
.
.
.

51
51
51
52
52
53
54
55
55
56

.
.
.
.

58
58
59
60
60

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

8 Programao
8.1 Arquivo.m . . . . . . . . . . . .
8.2 Operadores Lgicos e Relacionais
8.2.1 Operadores Relacionais .
8.2.2 Operadores Lgicos . . .
8.3 Comandos For, While e If . . . .
8.3.1 Ciclo For . . . . . . . . .
8.3.2 Comando If . . . . . . .
8.3.3 Ciclo While . . . . . . . .
8.4 Declarando Funes . . . . . . .
9 Sistemas de Equaes Lineares
9.1 Interpretao grfica . . . . .
9.2 Soluo usando operao com
9.3 Diviso de matrizes . . . . .
9.4 Matriz inversa . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

. . . . .
matrizes
. . . . .
. . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

10 Clculo
10.1 Zeros de Funes . . . . . . . . . . . . . . .
10.2 Minimizao de Funes . . . . . . . . . . . .
10.3 Limites . . . . . . . . . . . . . . . . . . . . .
10.4 Limites esquerda e direita . . . . . . . . .
10.5 Integrao . . . . . . . . . . . . . . . . . . .
10.5.1 Soluo Simblica . . . . . . . . . . .
10.5.2 Soluo Numrica . . . . . . . . . . .
10.6 Diferenciao . . . . . . . . . . . . . . . . . .
10.6.1 Derivao por expresses de diferenas
10.6.2 Comando diff . . . . . . . . . . . . . .
10.6.3 Derivadas de ordem superior . . . . . .
10.6.4 Derivadas Trigonomtricas: . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

61
61
61
62
63
63
63
64
67
68
69
70
71

11 Ajuste de Curvas
72
11.1 Ajuste de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
11.2 Interpolao Unidimensional . . . . . . . . . . . . . . . . . . . . . . . . 73
12 Transformadas
12.1 Funes Degrau e Impulso . . . . . . . . . . . . . . . . . .
12.2 Transformada de Laplace . . . . . . . . . . . . . . . . . .
12.3 Transformada de Fourier . . . . . . . . . . . . . . . . . . .
12.4 Transformada Z . . . . . . . . . . . . . . . . . . . . . . .
12.5 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.5.1 Exerccio 1: Sistemas Lineares . . . . . . . . . . . .
12.5.2 Exerccio 2: Equaes Diferenciais e Transformadas
12.5.3 Exerccio 3: Transformada de Fourier . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

76
76
77
77
78
78
78
79
81

13 SIMULINK
13.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.1.1 Diagrama de Blocos . . . . . . . . . . . . . . . . . . . . . .
13.1.2 Smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2 Conhecendo o Simulink . . . . . . . . . . . . . . . . . . . . . . . .
13.2.1 Iniciando o Simulink . . . . . . . . . . . . . . . . . . . . . .
13.2.2 Construindo e analisando um modelo simples . . . . . . . . .
13.2.3 Exemplo: Modelo de um processo biolgico . . . . . . . . . .
13.3 Principais blocos do Simulink e suas funes . . . . . . . . . . . . .
13.3.1 Principais Fontes(Sources): . . . . . . . . . . . . . . . . . .
13.3.2 Principais blocos usados na modelgem de sistemas dinmicos
13.3.3 Verificao do modelo . . . . . . . . . . . . . . . . . . . . .
13.3.4 Blocos de sadas(Sinks) . . . . . . . . . . . . . . . . . . . .
13.3.5 Criando blocos de sub-sistemas . . . . . . . . . . . . . . . .
13.3.6 Blocos condicionais . . . . . . . . . . . . . . . . . . . . . .
13.3.7 Personalizando o modelo e manipulando Blocos . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

85
86
86
87
87
87
88
90
96
98
98
98
99
99
99
99

14 Referncias Bibliogrficas

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

103

1
1.1

Apresentao

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 suficiente 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.
2.
3.
4.
5.

Enunciar o problema claramente.


Descrever a informao de entrada e sada.
Trabalhar o problema manualmente.
Desenvolver uma soluo MATLAB.
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 identificar os valores a serem calculados. Estes itens representam a entrada 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 definindo para este ponto todos os passos para determinar a sada, mas estamos mostrando a informao que usada para calcular a sada. Para este exemplo,
poderamos usar o diagrama na Figura 1.

Figura 1: Diagrama I/0

1.1.3

Exemplo Manual

O terceiro passo trabalhar o problema manualmente ou com uma calculadora, usando 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 p1 e p2 tenham as seguintes coordenadas:
p1 = (1, 5)
p2 = (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 calcular a distncia d com a seguinte equao:

d=

d=

S12 + S22

(4 1)2 + (7 5)2

d=

13

d = 3.61

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 explicam 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 final em nosso processo de soluo de problemas testar a soluo. Primeiramente, 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 fim
de encontrar o erro. Uma vez que a soluo trabalha com o exemplo manual, devemos
tambm test-la com vrios grupos de dados para certificar que a soluo vlida para
outras sries de dados.
7

1.2

Apresentao

R
O MATLAB
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 definidas 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-file ou arquivo .m. Ele pode ser criado e/ou modificado 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-files, sendo que algumas delas podem ser modificadas e vrias outras criadas. Este
fato possibilitou a criao de diversos conjuntos de funes especficas para determinadas reas, como controle, anlise de sinais, finanas, entre outras. Estes conjuntos de
funes, ou de m-files, 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 especficos. Esses conjuntos de blocos so
chamados Blocksets.
Assim como ocorre com os toolboxes, blocksets direcionados a vrias reas so tambm 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 especializadas 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 discretos, com mltiplas entradas e mltiplas sadas (MIMO).
Data Acquisition Toolbox
Aplicativo MATLAB composto por funes para importao de dados obtidos a partir de placas de aquisio de dados.
Curve Fitting Toolbox
Aplicativo MATLAB de ajuste de curvas. Este Toolbox permite modelar, simular e
analisar sofisticados mtodos de ajuste de curvas de forma prtica e flexvel.
Financial Toolbox
Aplicativo MATLAB para rea financeira (estudo de preos, clculo de juros e investimentos, anlise de derivativos e otimizao de portiflios).
Statistics e Optimization Toolboxes so necessrios para o funcionamento do Financial Toolbox.
Image Processing Toolbox
Aplicativo MATLAB para rea de processamento de imagens (estudo, tratamento e
anlise de sinais analgicos/digitais transformados em imagens grficas). Signal Processing Toolbox necessrio para o funcionamento deste Toolbox.
Mapping Toolbox
Aplicativo MATLAB composto por funes para tratamento de mapas e informaes
cartogrficas (por exemplo: coordenadas cartogrficas, deformaes, representaes tridimensionais).
Partial Differential Equation Toolbox
Aplicativo MATLAB composto por funes para resoluo de equaes diferenciais
parciais em espao bidimensional utilizando mtodo de elementos finitos.
Statistics Toolbox
Aplicativo MATLAB para rea de estatstica, incluindo alm de ferramentas estatsticas 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 sistemas 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 Command 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:


s

log

 !

tan

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 predefinidas, 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 significa, 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 predefinidas podem ser redefinidas. claro
que elas podem ser redefinidas intencionalmente a fim 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
predefinidas intocados, pois h uma infinidade de nomes alternativos que podem ser
usados. As variveis predefinidas podem ser realocadas aos seus valores default usando
o comando clear nome da varivel (por exemplo, clear pi).

12

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, ficando armazenada para
uso posterior. As matrizes podem, tambm, ser introduzidas linha a linha, o que indicado 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. Assim, 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 especificar 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 exemplo:

>> 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 indefinidos 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 final 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 final
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
identificados. 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 indefinida.

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
A
B
ans
r
s
x

Size Bytes Class


4x3
3x3
3x3
1x3
1x1
1x3

96
72
72
24
8
24

double
double
double
double
double
double

array
array
array
array
array
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 sufixo. 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
2
2
3
4
4

Potenciao
/
Diviso direita
\ Diviso esquerda
*
Multiplicao
+
Adio
Subtrao

Deve-se notar que existem dois smbolos para diviso: as expresses 1/4 e 4\1 possuem 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 MATLAB. 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 matrizes 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 modificado utilizando o comando format, 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 formato 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 possibilidades de formatar a sada. O formato padro, chamado de formato short, mostra
aproximadamente 5 dgitos significativos ou usam notao cientfica. Para modificar o
formato da sada, devemos inserir o comando format. A tabela abaixo mostra os principais formatos:
short
short e
long
long e
hex
rat
bank
+

5 dgitos significativos
5 dgitos significativos em notao cientfica
15 dgitos significativos
15 dgitos significativos em notao cientfica
em sistema hexadecimal
em formato de nmero racional
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 mostrados, 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 especfico, referir help tpico. Por exemplo,

20

>> help plot


fornece uma lista de todos os comandos relacionados com grficos bidimensionais.
A mesma sintaxe usada para obter informaes sobre um comando especfico.
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
especificou. O mais importante que a palavra-chave no precisa ser um comando MATLAB. 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 aritmticas matriciais so definidas pelas regras da lgebra Linear. As operaes aritmticas
com arrays (conjuntos) so efetuadas elemento por elemento. O caractere de ponto decimal . 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+
3.0000+ 7.0000i 4.0000+
>>Z1 = Z
Z1 =
1.0000- 5.0000i 3.00002.0000- 6.0000i 4.0000-

6.0000i
8.0000i

7.0000i
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 definidas somente se as matrizes possurem as mesmas dimenses.
A adio e a subtrao tambm so definidas 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 definida


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 definida em termos da diviso esquerda por:
b/A = (A\b)

3.1.5

Potenciao

A expresso A p eleva A p-sima potncia e definida 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 =
0.5000 0.5000 0.5000

3.2.3

>> x=b./a
x =
2 2 2

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. Produzindo:

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 10x1 at ao valor
final 10x2 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 entre parnteses. Por exemplo, dada a matriz A:

A =
1 2 3
4 5 6
7 8 9
A declarao:

>> A(3,3)
A =
1 2
4 5
7 8

= A(1,3) + A(3,1)
3
6
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
11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44
51 52 53 54
61 62 63 64
71 72 73 74
81 82 83 84
91 92 93 94
>> 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

5
15
25
35
45
55
65
75
85
95

6
16
26
36
46
56
66
76
86
96

7
17
27
37
47
57
67
77
87
97

8
18
28
38
48
58
68
78
88
98

9
19
29
39
49
59
69
79
89
99

10
20
30
40
50
60
70
80
90
100

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
>> diag(x)
ans =
1 0 0
0 2 0
0 0 3
0 0 0
0 0 0
0 0 0

-1 4];

0 0
0 0
0 0
1 0
0 -1
0 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 superior 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 redimensionada, 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 90o no sentido anti-horrio (ou rodados k*90o ) 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
4.1

Funes

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
ebs
log
log10
sqrt
sin
asin
cos
acos
tan
atan
round
floor
ceil
rem
sign

4.2

Exponencial;
Valor absoluto;
Logaritmo natural;
Logaritmo base 10;
Raiz quadrada;
Seno;
Arco seno;
Coseno;
Arco Coseno;
Tangente;
Arco Tangente;
Arredondamento ao inteiro mais prximo;
Arredondamento ao inteiro mais prximo na direo de menos infinito;
Arredondamento ao inteiro mais prximo na direo de mais infinito;
Resto da diviso;
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

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
sum
median
any
min
prod
all
sort
std

Valor mximo dos elementos de cada coluna;


Soma dos elementos de cada coluna;
Valor mediano dos elementos de cada coluna;
Devolve 1 se qualquer elemento da coluna for diferente de 0;
Valor mnimo dos elementos de cada coluna;
Produto dos elementos de cada coluna;
Devolve 1 se todos os elementos de cada coluna forem diferentes de 0;
Organizao dos elementos da coluna por ordem decrescente de valor;
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
chol
svd
inv
lu
qr
hess
schur
expm
sqrtm
poly
det
size
norm
cond
rank

Valores prprios e vetores prprios;


Fatorizao de Cholesky
Decomposio em fator singular;
Inversa;
Fatorizao triangular LU;
Fatorizao ortogonal QR;
Forma de Hessenberg;
Decomposio de Schur;
Matriz Exponencial;
Matriz de raiz quadrada;
Polinmio caracterstico;
Determinante;
Tamanho;
Norma 1, Norma 2, Norma F, Norma Infinita;
Nmero de condio na norma 2;
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

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
coeficientes das sucessivas potncias do polinmio ordenados por ordem significativa decrescente. 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 definimos um polinmio qualquer p sendo (p = s3 6s2 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 coeficiente diferente de 1 para o maior grau (s3 ) quando aplicssemos a
funo poly sobre as razes o novo polinmio seria com coeficiente 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.
x2 + 2x + 4 = 0
ax2 + 2ax + 4a = 0
ax2 + 2ax + 4a = 0
Alm das duas operaes j citadas h ainda as bsicas, soma, subtrao, multiplicao 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

6Anlise 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 comportamento. Uma aplicao deste conceito est na modelagem da altitude e velocidade
de um balo. A seguir definiremos 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) = 3x4 0.5x3 + 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 coeficientes


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) = x5 + 3x3 2.5x2 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 coeficientes 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 coeficientes. O MATLAB no apresenta um comando especfico 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) = x4 3x2 x + 2.4
h(x) = 4x3 2x2 + 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 convoluo 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 filtro
digital.
Se assumirmos que os coeficientes (a1, , ...) de um polinmio so valores reais,
poderemos encontrar razes complexas. Se um polinmio fatorado em termos lineares,
fica fcil de identificar suas razes, igualando cada termo a zero.
Um exemplo consiste no polinmio:
f (x) = x2 + 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 grfico, 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 coeficientes
em ordem decrescente. Observe que os termos com coeficiente 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) = x3 2x2 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 grfico, com seu eixo apropriado, com o objetivo de verificar se o polinmio atravessa o eixo x bem nos locais das
razes.
a. f (x) = x3 5x2 + 2x + 8
40

b. g(x) = x2 + 4x + 4
c. h(x) = x5 + 3x4 11x3 + 27x2 + 10x 24
d. i(x) = x5 3x3 + 4x2 1

41

Grficos

A construo de grficos no MATLAB mais uma das potencialidades do sistema.


Atravs de comandos simples pode-se obter grficos bidimensionais ou tridimensionais
com qualquer tipo de escala e coordenada. No MATLAB existe uma vasta biblioteca de
comandos grficos.

7.1

Grficos X-Y

Comandos de gerao de grficos bidimensionais:


plot
loglog
semilogx
semilogy
fill
polar
bar
stem
stairs
errorbar
hist
rose
compass
feather
fplot
comet

Grfico linear.
Grfico em escala logartmica.
Grfico em escala semi-logartmica (eixo x).
Grfico em escala semi-logartmica (eixo y).
Desenhar polgono 2D.
Grfico em coordenadas polar.
Grfico de barras.
Grfico de seqncia discreta.
Grfico em degrau.
Grfico do erro.
Histograma.
Histograma em ngulo.
Grfico em forma de bssola.
Grfico em forma de pena.
Grfico da funo.
Grfico com trajetria de cometa.

Se Y um vetor, plot(Y) produz um grfico 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 grfico. Existem 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 grficos com mltiplas linhas faz uso do
comando plot com mltiplos argumentos. Vamos explor-lo em um exemplo mais detalhado. 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 grfico:

>> figure(1)
O comando figure abre uma janela grfica intitulada Figure No.1". Este comando
opcional; se no for utilizado, o MATLAB abrir uma janela grfica padro. Agora
utilizaremos a funo plot para plotar os trs grficos 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 grfico plotado (neste caso, h um vetor de
referncias). Atravs do comando set, aps os grficos 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 Grficos

Definamos 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 grfico, como identificao dos eixos, ttulo e legenda, usamos os seguintes comandos:
Eixos:

>> xlabel(Tempo); ylabel(Amplitude);


Legenda e ttulo:

>> legend(h,Primeiro,Segundo,Terceiro); title(Resposta no


Tempo);
Obs.: Se dois grficos tiverem sido adicionados separadamente em uma janela grfica,
o argumento de referncia no utilizado no comando legend.
E eis o grfico resultante:
Para plotar mais de um grfico 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 grficos,
44

Figura 3: Resultante

inserindo os comando separadamente.

>> hold on
Dessa forma, os grficos sero sobrepostos em uma mesma janela grfica. No entanto, se no desejarmos mais essa funo ativa, basta digitar:

>> hold off


E por ltima opo temos o comando subplot, que divide uma janela grfica em
vrias janelas no seu interior.
>>subplot(2,2,3)
Este comando divide a janela grfica em uma matriz 2x2 (4 elementos portanto) e
prepara o terceiro elemento (linha 2, coluna 1) para receber futuros grficos.

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

Grficos Polares

Grficos 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 fixando 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 grficos polares com ngulo (em radiano)
e magnitude r correspondente.
Exemplo: Os comando para a construo do grfico da figura 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 = x2 + y 2 ; q = atan (y/x);

7.3

Grficos 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 grficos 3D mesh(z).
O comando meshgrid tem os argumentos do vetor x e y, ou seja transforma o domnio
especificado pelos vetores x e y em vetores que podem ser usados em clculos de funes

46

Figura 4: Grfico em coordenadas polares

de 2 variveis e construo de grfico 3D.


Exemplo: Gerar o grfico 3D da funo -0.5 < x < 0.5 ; -0.5 < y < 0.5 ;
f (x, y) = z = 1 x2 y 2
1 = |x2 + 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: Grfico em 3D

Estes so alguns dos comandos de exibio de grficos tridimensionais e de contornos:


plot3
fill3
comet3
contour
contour3
clabel
quiver
mesh
meshc
surf
surfc
surfil
slice
cylinder
sphere

Exibio do grfico em espao 3D.


Desenhar polgono 3D.
Exibir em 3D com trajetria de cometa.
Exibir contorno 2D.
Exibir contorno 3D.
Exibir contorno com valores.
Exibir gradiente.
Exibir malha 3D.
Combinao mesh/contour.
Exibir superfcie 3D.
Combinao surf/contour.
Exibir superfcie 3D com iluminao.
Plot visualizao volumtrica.
Gerar cilindro.
Gerar esfera.

Quando geramos redes de superfcie 3D podemos querer escolher a posio de viso


que ser definida com os termos azimuth ( rotao horizontal) e vertical elevation que
especifica os graus (rotao vertical ).

48

Exemplo: Rotao horizontal:


f (x, y) = z = 1 x2 y 2
1 = |x2 + 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: Grfico em 3D, Rotao horizontal

49

Exemplo: Rotao vertical:


f (x, y) = z = 1 x2 y 2
1 = |x2 + 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: Grfico em 3D, Rotao vertical

50

8
8.1

Programao

Arquivo.m

Os comandos do MATLAB so normalmente introduzidos atravs da janela de comando, onde uma nica linha de comando introduzida e processada imediatamente.
O MATLAB , no entanto, capaz tambm de executar seqncias de comandos armazenadas 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 MFile 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:
%
clear
input

Usado para inserir comentrios no texto;


Apaga todo os dados da memria;
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
figure(n) Mostra a janela grfica de nmero n;
close all Fecha todas as janelas grficas.

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 =
0
x=5;
y =
3
x=5;
y =
0
x=5;
y =
3

8.2.2

y=3*(x= =3)

y=3*(x= =5)

y=3*(x~ =5)

y=3*(x~ =3)

Operadores Lgicos

Smbolo
&
|

xor

Descrio
AND
OR
NOT
XOR

Esses operadores operam da mesma forma que os operadores relacionais, dando como
52

resposta verdadeiro ou falso. Exemplo:


INPUTS
AB
00
01
10
11

AND
&
0
0
0
1

OR
|
0
1
1
1

XOR
xor
0
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 operadores aritmticos e relacionais.
A precedncia entre os operadores lgicos se d da seguinte maneira:
NOT
AND e OR

8.3

Maior precedncia
Tm igual precedncia aps NOT

Comandos For, While e If

Os comandos FOR, WHILE e IF controlam o fluxo e especificam 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 fluxo 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 +
B(i,j) = i end
end
C= A + B
C =
2 2 2 2 2
4 4 4 4 4
6 6 6 6 6
8 8 8 8 8
10 10 10 10 10
12 12 12 12 12
14 14 14 14 14
16 16 16 16 16

j;
j;

2
4
6
8
10
12
14
16

2
4
6
8
10
12
14
16

2
4
6
8
10
12
14
16

Neste exemplo fizemos duas matrizes atravs de dois ciclos variando de 1 a 8 e ao


fim disso fizemos 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 verdadeira 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 fizemos 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-file


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 fique 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 significa 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 grfica

A interpretao grfica 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 possamos corrigir e interpretar os resultados do computador. Uma equao linear com duas
variveis, semelhante a 2x - y = 3, define uma linha reta e escrita na forma y = mx
+ b, onde m o coeficiente angular e b o coeficiente 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 identificadas porque possuem diferentes coeficientes angulares.
Exemplo:
58

y = 2x 3

y = x + 3

Equaes que representam duas retas paralelas possuem o mesmo coeficiente angular
e coeficientes lineares diferentes.
Exemplo:
y = 2x 3

y = 2x + 1

Equaes que representam a mesma reta so equaes com mesmo coeficiente angular e mesmo coeficiente 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
-1 3 2
1 -1 -1

x = x
y
z

B = 10
5
-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 confirmar 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 assumimos que A, x, B so matrizes definidas a seguir:

A = 3 2 -1
-1 3 2
1 -1 -1

x = x
y
z

B = 10
5
-1

Ento A x = B. Suponha que multiplicamos ambos os lados da equao da matriz


por A1 ento temos:
A1 Ax = A1 B
Mas A1 A igual a matriz identidade I, ento temos:
I x = A1 B
ou
x = A1 B;
No MATLAB podemos calcular essa expresso usando o comando:

X = inv(A)*B;

60

10
10.1

Clculo

Zeros de Funes

O MATLAB encontra zeros de funes usando o comando fzero. A funo, da qual


deseja-se encontrar os zeros, deve ser definida em um arquivo .m como definido previamente. 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 MATLAB 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 verificados no grfico 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: Verificao grfica 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:
1 + x2
x2 1 x2
lim

>> 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
x3

>> syms x
>> limit((x/(x-3)),x,3,right)
ans=
inf
>> limit(((x+1)/(x-1)^3),x,1,left)
ans =
-inf

10.5
10.5.1

Integrao
Soluo Simblica

Na integrao de funes, o comando que o MATLAB reconhece para tal operao


int(f(x)).
Exemplo: Integrar as funes abaixo:
Z

x(1 x)2 dx

2x4 3x3 + 5
dx
7x2

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 Definidas As integrais definidas podem ser calculadas com o comando


int(f(x),a,b), onde a o limite inferior e b, o limite superior da integral.
Exemplos:
Z 2
0

Z 1

2x
dx
(x 3)2

(1 2x 3x2 )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 definidas 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:
Kt =

ba
(f (x0 ) + 2f (x1 ) + ... + 2f (xn1 ) + f (xn ))
2n
64

onde os valores de xi representam os pontos no final da cada trapzio e x0 = a


e xn = 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 definidos pelo
usurio. Assim, para usar este comando primeiro deve-se definir os vetores x, no intervalo [a, b], e f, os valores da funo correspondentes aos valores definidos no vetor x.
Considere, por exemplo, a seguinte integral.
I=

Z 1

2xex 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 definido 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-definida
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
Iexato = 1 exp (1)
ou, calculando no MATLAB I = 0.63212055882856.
A figura seguinte mostra graficamente a funo para dx = 0.1 e para dx = 0.02. A
rea sob a curva a integral definida da funo f(x).
65

Figura 10: Integral - rea abaixo da curva

Observando o grfico da funo, fcil imaginar porque a diminuio do incremento


dx melhora a aproximao da integral. No entanto, na prxima seo, um mtodo mais
eficiente 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 define 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 define 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 103 .
Neste caso, desnecessrio definir tol no comand window.

>> quad(func2,0,1)
ans =
0.63212053454568

66

Calculando agora com uma tolerncia de 108 .


>> 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=

Z 1

xdx

Lembrando que uma singularidade um ponto no qual uma funo ou sua derivada
no definida ou tende para o infinito.
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 graficamente 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, definem 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, significa 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 significa 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 xk atravs da aproximao da inclinao da reta tangente curva neste ponto
usando valores que a funo assume em pontos perto de xk . 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 00 (x) =

f 0 (xk ) f 0 (xk 1)
xk (xk 1)

68

10.6.2

Comando diff

Para o clculo de derivadas, o comando no MATLAB dif f (f (x)), onde f(x) a


funo que se quer determinar a derivada.
Exemplo: Derivar as funes abaixo:
f (x) = 2x2 + 3x
f (x) =

1
3x

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 dif f (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
3x

f (x) = 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

1
x

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

11Ajuste 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 polyfit 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 polyfit 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.8108x2 + 20.1293x 0.0317 . Vamos agora


verificar 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 cientfico, 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 grficos.
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 elementos 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 analisar 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
R
(t-a) definida como K (t-a) = 0 para t<a e
k(t a)dt para t =a. Quando
representada em grfico ela comumente representada como uma seta de amplitude K
em t = a:

Figura 14: Grfico 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, definida como Ku(t - a) = 0 para t < a e Ku(t - a) = K para t >a e
representada na figura a seguir.
Exemplo:

syms t k a
u = k*Heaviside(t-a)
d = diff(u)
int(d)

76

Figura 15: Grfico da funo Degrau Ku(t - a)

12.2

Transformada de Laplace

A Transformada de Laplace realiza a operao


F (s) =

f (t)est dt

Para transformar f(t), no domnio do tempo, em F(s), no domnio de s. A Transformada de Laplace da funo cosseno amortecido eat 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, usandose 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 expresses entre domnios. A Transformada de Fourier e sua inversa so definidas por:

77

F (s) =
f (t) =

f (t)ejwt dt

F (w)ejwt 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 definida como:
F (z) =

f (k)z k

k=0

,
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
12.5.1

Exerccios
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.

7I1 + 12(I1 I2 ) = 60
12(I2 I1 ) + 6(I2 I3 ) = 0
6(I2 I3 ) + 12I3 = 0

78

Figura 16: Circuito eltrico do exerccio 1

Aplicando as leis de Kirchhoff no circuito, tm-se trs equaes para trs incgnitas
linearmente independentes (I1 , I2 e I3 ).
19I1 12I2 = 60
12I1 + 18I2 6I3 = 0
6I2 + 18I3 = 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 R3X3 .I3X1 = V3X1 .
Comandos utilizados em sistemas lineares:
x=A\B
x=B/A
inv(A)
det(A)
rank(A)

12.5.2

Diviso esquerda para sistemas Ax=B


Diviso esquerda para sistemas xA=B
Inverso de A
Determinante de A
Oposto de A

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, vC (0).

Figura 17: Circuito eltrico do exerccio 2

Aplicando a lei das malhas de Kirchhoff, tem-se


79

Ri(t) + vC VS (t) = 0 (1.1)


Como os elementos esto todos em srie, a corrente que flui pelo resistor a mesma
que flui pelo capacitor:
i(t) = iC (t) = C dtd vC dt (1.2)
Substituindo (1.2) em (1.1) tem-se a equao diferencial de 1a ordem para um circuito
RC srie:
RC dtd vC dt + vC (t) V = 0 (1.3)
A tenso no capacitor dada pela equaao diferencial, que mostrada na equaao
abaixo:
1t

vC (t) = V (1 e 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
d2
y = t com condies iniciais y(0) = 2 e y 0 (0) = 0, entra-se no MATLAB com
dt2

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 VC (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(VC (s) vC (0)) + VC (s)

V
s

= 0 (1.5)

A partir dessa simples manipulao algbrica da equao para isolar a varivel VC (s)
e expanso em fraes parciais, pode-se ento aplicar a Transformada Inversa de Laplace
para achar vC (t)utilizando a funo ilaplace do MATLAB.
VC (s) =

V
s

V
1
s+ 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 1a
ordem:
1t

L1 {VC (s)} = vC (t) = V (1 e 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 fft.

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): definir valor de uma freqncias quaisquer que comporo o sinal a ser analisado. O sinal ser da forma
y(t) = 100 (sin(2..f 1.t + 2..f 2.t + 2..f 3.t)
2) Construa o vetor do tempo para a funo y a partir da gerao de um vetor da
k
.
seguinte forma: t = (0 : passo : ttotal ) sendo passo = F1s e ttotal = min([f 1,f
2,f 3])
3) Tendo gerado o vetor do tempo e declarado as constantes na 1a etapa, plote a
funo y(t). Um exemplo para freqncias de 100, 200 e 300 Hz est na figura 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 fft da seguinte forma: "Y = f f t(y)".
5) Construa um vetor de freqncias para a plotagem da seguinte forma: "F = (0 :
Fs
length(y) 1) 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 fim, 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 figura 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 ifft.
OBS: A ttulo de curiosidade, verifique como ficaria 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 discretos 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-definidas 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 configuraes que do flexibilidade ao usurio, permitindo, por exemplo, a escolha entre os mtodos numricos empregados durante as simulaes. Dessa
forma, possvel adequadar uma simulao de acordo com s necessidades de um determinado sistema. Conforme ser visto neste curso, a anlise de sistemas compe-se
85

de um conjunto de ferramentas tais como: linearizao, blocos de verificao e grficos.

13.1
13.1.1

Introduo
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
13.2.1

Conhecendo o Simulink
Iniciando o Simulink

Para acessar o SIMULINK deve-se, inicialmente, abrir o Matlab, pois apesar do


Simulink ser uma aplicao especfica, 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,
87

Figura 25: Janela destinada criao do modelo

Figura 26: Biblioteca de blocos

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.

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


verificar se a soluo est correta. Para exemplificar essa idia, um modelo ser densenvolvido para resolver a seguinte equao diferencial, que o problema em questo.
x0 = 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.

88

Figura 27: Fonte senoidal inserida no projeto

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.

Figura 28: Blocos utilizados no exemplo.

A seguir, conecte os blocos para completar o modelo como na figura a seguir:

Figura 29: Conexes entre os blocos.

Aps adicionar os blocos ao modelo, possvel configur-los atravs de um duplo


clique sobre eles. No bloco da funo seno, por exemplo, possvel configurar, entre
outros parmetros, a amplitude da funo, a frequncia e a fase. O valor inicial da
funo x(t) configurado 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 SIMULATION:START. A simulao ser executada, resultando no grfico gerado no bloco
SCOPE, mostrado a seguir:
Para verificar se o grfico gerado representa a soluo da equao diferencial desejada,
deve-se resolver a mesma analiticamente, cujo resultado : x(t) = 1 cos(t), que
89

Figura 30: Grfico gerado no Scope.

corresponde ao grfico apresentado. interessante alterar o valor inicial de x(t) no


bloco da integral e verificar 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
ao quadrado do nmero de bactrias presentes. Se x representa o nmero de bactrias
presentes, a taxa em que as bactrias nascem definida por:
Taxa de Natalidade = bx; Taxa de Mortalidade = px2
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: x0 = bx px2
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 x0 e a sada
x. Abra o biblioteca linear e arraste o integrador para a janela do modelo, seguindo a
posio mostrada na figura:
Ainda na biblioteca Linear, arraste dois blocos de ganhos (Gain) para a janela do
modelo e posicione-os como na figura 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 x2 .

90

Figura 31: Integrador inserido no projeto

Abra a seguir a biblioteca dispositivos de sada (Sinks) e arraste um bloco SCOPE


para a janela do modelo seguindo a posio mostrada.

Figura 32: Blocos inseridos

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 figura que segue abaixo:
Trace agora uma linha de sinal da sada do bloco de soma para a entrada do integrador e outra da sada do integrador para a entrada do SCOPE.
91

Figura 33: Blocos inseridos aps rotao

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 90o . 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
repita a operao de ligao para a entrada inferior do mesmo bloco, de modo que o
bloco execute a operao x.x = x2 . 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.
O modelo agora est completo, mas os blocos devem ser configurados (parametrizados) 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 configuraes de um bloco, basta dar um
duplo clique sobre o bloco. Para parametrizar os blocos de ganho. D um duplo clique
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 x0 de acordo com a equao
92

Figura 34: Blocos conectados

diferencial aps substituir os valores de p e b.

Para finalizar a configurao, deve-se definir o nmero inicial de bactrias. Para isto,
d um duplo clique no integrador e no campo "Initial condition"mude para 100, e aps
93

clique Close.

Figura 35: Parmetros do bloco integrador

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"digitase 3600. Dessa forma ser tomado os valores da simulao aps uma hora. Em "Stop
Time"o tempo final da simulao. Por exemplo, 3610, para que a simulao dure 10
segundos.

Figura 36: Parmetros da simulao

94

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
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.

Figura 37: Resultado da simulao

O SCOPE nem sempre mostra a figura numa boa escala para visualizao. O boto
Autoscale na barra de ferramentas do SCOPE redimensiona a escala para acomodar
todos os valores.

95

Figura 38: Resultado da simulao redimensionado

13.3

Principais blocos do Simulink e suas funes

Conforme exemplificado, 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.

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 grfico. Abaixo encontra-se uma lista com os principais blocos
e suas funes. importante observar que todos os blocos possuem parmetros que
podem ser configurados. 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
96

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) definido como um sinal de durao igual a zero, tendo
as seguintes propriedades:
(t a) = 0; t 6= a
Z

(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-fio ou um basto rebatendo uma bola ou ainda
mudanas instantneas de velocidade como a de uma bala sendo disparada de um rifle. 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 caractersticas 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 definido a um
pulso de durao muito curta d e de magnitude M, tal que M.d=1. A dificuldade
consiste em se definir 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
ser adequada um impulso verdadeiro. Usualmente, valores adequados podem ser
determinados experimentalmente.

Figura 40: Um modelo para o impulso unitrio.


O modelo na figura 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 configurao: Step time: 0.5,
Initial value: 0, Final value: 100. J a fonte situada na parte inferior deve ser configurada
da seguinte forma: Step time: 0.51, Initial value: 0, Final value: 100. A simulao deve
ser configurada para terminar em 1 segundo.
97

13.3.1

Principais Fontes(Sources):

Essas so as principais fontes:


Constant - Fornece um valor constante.
Sin Wave - Funo seno. possvel configurar os parmetros.
Ramp - Uma reta linear. possvel configurar a inclinao.
Step - Funo degrau. Pode-se configurar 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 dinmicos

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 configuraes (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 configurado.
Dot Product - Faz o produto escalar com as entradas.
Min - A sada deste bloco o valor mximo, ou mnimo da entrada, de acordo com a
configurao.
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

Verificao do modelo

Os blocos para a verificao 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 - Verifica 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: - Verifica se um sinal sempre tem valores entre outros dois sinais.
Check Dynamic Upper Bound: - Verifica 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: Verifica se um sinal maior ou igual a um valor esttico
definido.

98

Check Static Range: - Verifica 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 grfico 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 file - 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 eficaz de organizar
um diagramas de blocos. Por exemplo, se um determinado processo bem definido
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.

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 afirma se verdadeira ou falsa a afirmativa. 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 modificado a fim de atigir o resultado desejado.

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
99

Figura 41: Um diagrama de blocos condicional.

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 modificar
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.

100

Ao
Seleo simples de objeto
Seleo mltipla de objetos
Selecionar com uma caixa de
seleo

Descrio
Clique no objeto com o boto esquerdo do mouse.
Pressione a tecla SHIFT e clique no outro objeto.
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- Selecione o bloco e arraste para a janela do modelo
lioteca ou de outro 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 Selecione o objeto, no menu Edit:Copy. Tecla de
transferncia
atalho: CTRLC.
Recortar objetos para a rea Selecione o objeto, no menu Edit:Cut. Tecla de
de transferncia
atalho: CTRLX.
Colar objetos a partir da rea No menu Edit:Paste. Tecla de atalho: CTRLV.
de transferncia
Traar uma linha de sinal
Arrastar com o mouse da sada do bloco para a entrada do outro.
Traar uma linha de sinal em Arraste com o mouse da sada do bloco at o primeiro
segmentos
ponto. Repetir deste ponto at o seguinte e assim por
diante.
Traar uma linha ligada a Mantenha a tecla CTRL pressionada e clique sobre a
outra
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 pressionada, 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- Clique e arraste o vertex desejado.
mento.
Nomear uma linha de sinal
Duplo clique na linha e digite o nome.
Mover o nome de uma linha Clique e arraste o nome para a posio desejada.
de sinal

101

Ao
Copiar o nome de uma linha
de sinal

Descrio
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 D um nome aos sinais conhecidos (entrada) com um
linha de sinal
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- D um duplo clique no local em que se deseja e digite
servao no modelo
o texto.

102

14
Referncias Bibliogrficas
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.

103

S-ar putea să vă placă și