Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1 Apresentao 5
1.1 Soluo de Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1 Enunciado do Problema . . . . . . . . . . . . . . . . . . . . . . 5
1.1.2 Descrio Entrada/Sada . . . . . . . . . . . . . . . . . . . . . 5
1.1.3 Exemplo Manual . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.4 Soluo MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.5 Testando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Apresentao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1 Ambiente de Trabalho . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.2 Editor de Linhas de Comando . . . . . . . . . . . . . . . . . . . 10
2 Introduo 13
2.1 Introduo a Matrizes Simples . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Elementos de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Declarao de Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Informaes sobre a rea de Trabalho . . . . . . . . . . . . . . . . . . 17
2.5 Nmeros e Expresses Aritmticas . . . . . . . . . . . . . . . . . . . . . 17
2.6 Nmeros e Matrizes Complexas . . . . . . . . . . . . . . . . . . . . . . 18
2.7 Formatao de Sada . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.8 Utilizao do comando help . . . . . . . . . . . . . . . . . . . . . . . . 20
2.9 Utilizao do comando lookfor . . . . . . . . . . . . . . . . . . . . . . . 21
2.10 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3 Manipulao de Matrizes e Vetores 23
3.1 Operaes com Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.1 Transposio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.2 Adio e Subtrao . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.3 Multiplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.4 Diviso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.5 Potenciao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Operaes Elemento a Elemento (Conjuntos) . . . . . . . . . . . . . . 25
3.2.1 Adio e Subtrao . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.2 Multiplicao e Diviso . . . . . . . . . . . . . . . . . . . . . . 26
3.2.3 Potenciao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Matrizes Elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.1 Gerao de Vetores . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.2 Matriz Identidade . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.3 Matriz Composta por Elementos Unitrios . . . . . . . . . . . . 28
3.3.4 Matriz Nula . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.5 Matriz Aleatria . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4 Elementos de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5 Manipulao de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 30
2
3.5.1 Matriz Diagonal ou Diagonal de uma Matriz . . . . . . . . . . . 30
3.5.2 Matrizes Triangulares . . . . . . . . . . . . . . . . . . . . . . . 31
3.5.3 Redimensionamento de Matrizes . . . . . . . . . . . . . . . . . . 31
3.5.4 Rotao dos Elementos da Matriz . . . . . . . . . . . . . . . . 32
4 Funes 33
4.1 Funes Escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 Funes Vetoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3 Funes Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5 Polinmios 35
6 Anlise Polinomial 37
6.1 Avaliao do polinmio . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2 Comando polyval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.3 Operaes Aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.3.1 Soma e subtrao . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.3.2 Multiplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.3.3 Diviso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.4 Razes de polinmios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7 Grcos 42
7.1 Grcos X-Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.1.1 Acessrios para os Grcos . . . . . . . . . . . . . . . . . . . . 44
7.1.2 Nmeros Complexos . . . . . . . . . . . . . . . . . . . . . . . . 46
7.2 Grcos Polares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.3 Grcos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8 Programao 51
8.1 Arquivo.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8.2 Operadores Lgicos e Relacionais . . . . . . . . . . . . . . . . . . . . . 51
8.2.1 Operadores Relacionais . . . . . . . . . . . . . . . . . . . . . . 52
8.2.2 Operadores Lgicos . . . . . . . . . . . . . . . . . . . . . . . . 52
8.3 Comandos For, While e If . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.3.1 Ciclo For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.3.2 Comando If . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.3.3 Ciclo While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.4 Declarando Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
9 Sistemas de Equaes Lineares 58
9.1 Interpretao grca . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
9.2 Soluo usando operao com matrizes . . . . . . . . . . . . . . . . . . 59
9.3 Diviso de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
9.4 Matriz inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3
10 Clculo 61
10.1 Zeros de Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
10.2 Minimizao de Funes . . . . . . . . . . . . . . . . . . . . . . . . . . 61
10.3 Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
10.4 Limites esquerda e direita . . . . . . . . . . . . . . . . . . . . . . . 63
10.5 Integrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.5.1 Soluo Simblica . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.5.2 Soluo Numrica . . . . . . . . . . . . . . . . . . . . . . . . . 64
10.6 Diferenciao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
10.6.1 Derivao por expresses de diferenas . . . . . . . . . . . . . . 68
10.6.2 Comando di . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
10.6.3 Derivadas de ordem superior . . . . . . . . . . . . . . . . . . . . 70
10.6.4 Derivadas Trigonomtricas: . . . . . . . . . . . . . . . . . . . . 71
11 Ajuste de Curvas 72
11.1 Ajuste de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
11.2 Interpolao Unidimensional . . . . . . . . . . . . . . . . . . . . . . . . 73
12 Transformadas 76
12.1 Funes Degrau e Impulso . . . . . . . . . . . . . . . . . . . . . . . . . 76
12.2 Transformada de Laplace . . . . . . . . . . . . . . . . . . . . . . . . . 77
12.3 Transformada de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . 77
12.4 Transformada Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
12.5 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
12.5.1 Exerccio 1: Sistemas Lineares . . . . . . . . . . . . . . . . . . . 78
12.5.2 Exerccio 2: Equaes Diferenciais e Transformadas . . . . . . . 79
12.5.3 Exerccio 3: Transformada de Fourier . . . . . . . . . . . . . . . 81
13 SIMULINK 85
13.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
13.1.1 Diagrama de Blocos . . . . . . . . . . . . . . . . . . . . . . . . 86
13.1.2 Smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
13.2 Conhecendo o Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . 87
13.2.1 Iniciando o Simulink . . . . . . . . . . . . . . . . . . . . . . . . 87
13.2.2 Construindo e analisando um modelo simples . . . . . . . . . . . 88
13.2.3 Exemplo: Modelo de um processo biolgico . . . . . . . . . . . . 89
13.3 Principais blocos do Simulink e suas funes . . . . . . . . . . . . . . . 95
13.3.1 Principais Fontes(Sources): . . . . . . . . . . . . . . . . . . . . 97
13.3.2 Principais blocos usados na modelgem de sistemas dinmicos . . 97
13.3.3 Vericao do modelo . . . . . . . . . . . . . . . . . . . . . . . 98
13.3.4 Blocos de sadas(Sinks) . . . . . . . . . . . . . . . . . . . . . . 98
13.3.5 Criando blocos de sub-sistemas . . . . . . . . . . . . . . . . . . 98
13.3.6 Blocos condicionais . . . . . . . . . . . . . . . . . . . . . . . . 99
13.3.7 Personalizando o modelo e manipulando Blocos . . . . . . . . . 99
14 Referncias Bibliogrcas 102
4
1
Apresentao
1.1 Soluo de Problemas
A soluo de problemas parte essencial no somente dos cursos de engenharia, mas
tambm dos cursos de Matemtica, Fsica, Qumica e Cincia da Computao. Logo,
importante uma base slida em soluo de problemas. Tambm de grande auxlio um
embasamento suciente para trabalhar em todas estas reas, para que no tenhamos
que aprender uma tcnica para problemas de matemtica, e uma tcnica diferente para
problemas de fsica, e assim por diante.
O processo ou metodologia para resoluo de problemas que usaremos ao longo do
texto possui cinco passos:
1. Enunciar o problema claramente.
2. Descrever a informao de entrada e sada.
3. Trabalhar o problema manualmente.
4. Desenvolver uma soluo MATLAB.
5. Testar a soluo usando uma variedade de grupo de dados.
Descreveremos cada um dos passos usando o exemplo do clculo da distncia entre
dois pontos em um plano.
1.1.1 Enunciado do Problema
O primeiro passo enunciar o problema claramente. extremamente importante que
o enunciado seja conciso para evitar desentendimentos. Para este exemplo, o enunciado
do problema :
Calcule a distncia em linha reta entre dois pontos num plano.
1.1.2 Descrio Entrada/Sada
O segundo passo descrever cuidadosamente a informao que dada para resolver o
problema e ento identicar os valores a serem calculados. Estes itens representam a en-
trada e a sada para o problema e agregadamente podem ser chamados entrada/sada,
ou I/0. Para muitos problemas, til usar um diagrama que mostra a entrada e a
sada. Algumas vezes, este tipo de diagrama chamado de caixa preta porque no
estamos denindo para este ponto todos os passos para determinar a sada, mas es-
tamos mostrando a informao que usada para calcular a sada. Para este exemplo,
poderamos usar o diagrama na Figura 1.
5
Figura 1: Diagrama I/0
1.1.3 Exemplo Manual
O terceiro passo trabalhar o problema manualmente ou com uma calculadora, us-
ando um pequeno grupo de dados. um passo muito importante e no deve ser ignorado
por mais simples que seja o problema. um item no qual voc trabalha os detalhes da
soluo do problema. Se voc no pode pegar um simples grupo de nmeros e calcular
a sada (seja manualmente ou com uma calculadora), ento voc no est pronto para
executar o prximo passo; voc deve reler o problema e talvez consultar material de
referncia. Uma vez que pode trabalhar o problema de um simples grupo de dados,
ento voc est pronto para desenvolver um algoritmo ou um esboo passo a passo da
soluo. Este esboo convertido para os comandos MATLAB para que possamos usar
o computador para fazer todos os clculos. O exemplo manual para este exemplo
mostrado a seguir:
Suponha que os pontos p
1
e p
2
tenham as seguintes coordenadas:
p
1
= (1, 5)
p
2
= (4, 7)
Queremos calcular a distncia entre dois pontos, que a hipotenusa de um tringulo
retngulo, conforme mostra a Figura 2. Usando o Teorema de Pitgoras, podemos cal-
cular a distncia d com a seguinte equao:
d =
_
S
2
1
+ S
2
2
d =
_
(4 1)
2
+ (7 5)
2
d =
13
d = 3.61
6
Figura 2: Triangulo retngulo
1.1.4 Soluo MATLAB
No prximo captulo, falaremos sobre os comandos MATLAB. Contudo da soluo
voc pode ver que os comandos so muito similares s equaes que foram usadas no
exemplo manual. O sinal de percentagem usado para anteceder comentrios que ex-
plicam os comandos MATLAB.
%
% Este programa calcula e imprime
% distncia, em linha reta, entre dois pontos.
p1 = [1,5]; % ponto 1 inicial
p2 = [4,7]; % ponto2 inicial
d = sqrt (sum ((p2-p1).^2)) % calcular distncia
1.1.5 Testando
O passo nal em nosso processo de soluo de problemas testar a soluo. Primeira-
mente, devemos testar a soluo com os dados do exemplo manual, j que calculamos
a soluo. Quando os comandos MATLAB na soluo so executados, o computador
mostra a seguinte sada:
d = 3.6056
Esta sada coincide com o valor que calculamos no exemplo manual. Se a soluo
MATLAB no coincidir com o exemplo manual, devemos rever ambas solues a m
de encontrar o erro. Uma vez que a soluo trabalha com o exemplo manual, devemos
tambm test-la com vrios grupos de dados para certicar que a soluo vlida para
outras sries de dados.
7
1.2 Apresentao
O MATLAB
R
pode ser usado como uma linguagem de programao ou como uma
ferramenta de clculo interativa. Em ambos os casos, o ambiente MATLAB permite a
realizao de clculos, visualizao de resultados e desenvolvimento de algoritmos usando
uma sintaxe muito prxima da notao matemtica usual.
O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de
funcionamento. Todas as variveis so denidas de forma matricial, o que faz com
que este ambiente seja ideal para resolver problemas de clculo envolvendo matrizes e
vetores.
Um arquivo de programa MATLAB recebe a extenso .m e, por isso, tambm
chamado de m-le ou arquivo .m. Ele pode ser criado e/ou modicado no editor prprio
do MATLAB - MATLAB Editor/Debugger - que possui caractersticas que auxiliam
bastante na edio de programas como auto-colorizao de palavras de acordo com a
sintaxe e interao com o ambiente de clculo do MATLAB. Existem tambm os arquivos
.mat que so arquivos binrios que contm as variveis da Workspace. Estes arquivos
so gerados indo em
File-> Save Workspace -> nomedoarquivo.mat
importante diferenciar, portanto, arquivos .m dos arquivos .mat. Os arquivos .m
contm uma srie de comandos que, ao serem chamados no Workspace, so executados.
J os arquivos .mat contm somente as variveis e os seus valores armazenados.
Uma das grandes virtudes do MATLAB que todas as suas funes so escritas em
m-les, sendo que algumas delas podem ser modicadas e vrias outras criadas. Este
fato possibilitou a criao de diversos conjuntos de funes especcas para determi-
nadas reas, como controle, anlise de sinais, nanas, entre outras. Estes conjuntos de
funes, ou de m-les, so chamados de toolbox.
Toolboxes direcionados para diversas reas so distribudos pela The MathWorks
Inc. - empresa que desenvolve o software MATLAB (http://www.mathworks.com) - e
inmeros outros so desenvolvidos em todo o mundo, com e sem reconhecimento da
MathWorks, e podem geralmente ser encontrados na internet.
Um dos toolboxes desenvolvidos pela MathWorks chamado Simulink. Ele uma
ferramenta interativa para desenvolvimento, simulao e anlise de sistemas dinmicos
atravs da criao de modelos baseados em diagramas de blocos. Conjuntos de blocos
podem ser usados para modelar sistemas especcos. Esses conjuntos de blocos so
chamados Blocksets.
Assim como ocorre com os toolboxes, blocksets direcionados a vrias reas so tam-
bm desenvolvidos em todo o mundo. Para ilustrar a vastido do campo de aplicao do
MATLAB, abaixo segue uma pequena listagem de toolboxes e blocksets desenvolvidos
pela MathWorks.
Aerospace Blockset
Biblioteca que utiliza os fundamentos do SIMULINK para prover ferramentas espe-
cializadas para o desenvolvimento de ferramentas de modelagem, integrao e simulao
de aeronaves, naves espaciais, msseis sistemas de propulso ou subsistemas.
Bioinformatics Toolbox
8
Aplicativo MATLAB que possui ferramentas especializadas para anlise de genoma,
visualizao e normalizao de micro vetores e anlise das propriedades de protenas.
Communications Blockset
Aplicativo SIMULINK composto por cerca de 150 blocos do SIMULINK dedicados
s reas de desenvolvimento de projeto, simulao e anlise de sistemas de comunicao
digitais e analgicos.
Control System Toolbox
Aplicativo MATLAB para rea de modelagem e anlise de sistemas automticos de
controle. Este Toolbox permite modelar, simular e analisar sistemas contnuos e discre-
tos, com mltiplas entradas e mltiplas sadas (MIMO).
Data Acquisition Toolbox
Aplicativo MATLAB composto por funes para importao de dados obtidos a par-
tir de placas de aquisio de dados.
Curve Fitting Toolbox
Aplicativo MATLAB de ajuste de curvas. Este Toolbox permite modelar, simular e
analisar sosticados mtodos de ajuste de curvas de forma prtica e exvel.
Financial Toolbox
Aplicativo MATLAB para rea nanceira (estudo de preos, clculo de juros e inves-
timentos, anlise de derivativos e otimizao de portiflios).
Statistics e Optimization Toolboxes so necessrios para o funcionamento do Finan-
cial Toolbox.
Image Processing Toolbox
Aplicativo MATLAB para rea de processamento de imagens (estudo, tratamento e
anlise de sinais analgicos/digitais transformados em imagens grcas). Signal Pro-
cessing Toolbox necessrio para o funcionamento deste Toolbox.
Mapping Toolbox
Aplicativo MATLAB composto por funes para tratamento de mapas e informaes
cartogrcas (por exemplo: coordenadas cartogrcas, deformaes, representaes tri-
dimensionais).
Partial Dierential Equation Toolbox
Aplicativo MATLAB composto por funes para resoluo de equaes diferenciais
parciais em espao bidimensional utilizando mtodo de elementos nitos.
Statistics Toolbox
Aplicativo MATLAB para rea de estatstica, incluindo alm de ferramentas estats-
ticas bsicas de anlise de dados, recurso de modelagem e anlise estatstica de modelos
lineares e no-lineares.
SimMechanics
9
Biblioteca de blocos do SIMULINK que possibilita a modelagem e simulao de sis-
temas mecnicos, tais como: componentes mecnicos (corpos e juntas), simulao de
movimentos, etc.
1.2.1 Ambiente de Trabalho
Quando o MATLAB inicializado, trs janelas so exibidas: a Workspace, a Com-
mand History e a Janela de Comando (Command Window). Na aba Workspace aparecem
as variveis, seu tamanho e valor atual, as variveis so arrays onde cada elemento tem
8 bytes e podem ser editadas utilizando o Array Editor atravs de um clique duplo no
nome da varivel. Na janela Command History so armazenados todos os comandos j
utilizados, sendo que estes podem ser reescritos na Command Window apenas utilizando
as teclas UP e DOWN do teclado, sem necessidade de serem digitados novamente. Por
sua vez, a Janela de Comando a parte principal do MATLAB, onde sero escritos os
cdigos, funes e demais comandos. Nessa janela, o prompt padro (>>) exibido
na tela e, a partir deste ponto, o MATLAB espera as instrues do utilizador. Para
introduzir uma pequena matriz, por exemplo, utiliza-se:
>> A = [1 2 3; 4 5 6; 7 8 7]
Colocam-se colchetes em torno dos dados e separam-se as linhas por ponto e vrgula.
Quando se pressiona a tecla <enter> o MATLAB responde com:
A =
1 2 3
4 5 6
7 8 7
Para inverter esta matriz, utiliza-se:
>> B = inv(A)
B =
-2.1667 1.6667 -0.5000
2.3333 -2.3333 1.0000
-0.5000 1.0000 -0.5000
1.2.2 Editor de Linhas de Comando
As setas para cima e para baixo do teclado podem ser usadas para navegar entre
comandos usados anteriormente, para nova execuo ou reedio. No caso de pretender
10
efetuar o clculo de:
log
_
tan
_
5
_
_
Introduz-se na janela de comando:
>> log (sqt(tan(pi/5)))
Como para calcular a raiz quadrada o comando certo sqrt, o MATLAB responde
com uma mensagem de erro:
??? Undefined function or variable sqt.
O comando com a resposta apropriada seria:
>> log (sqrt(tan(pi/5)))
ans=
-0.1597
NOTA: Todas as funes que utilizam algum tipo de ngulo em seus argumentos
interpretam tal ngulo como sendo em radianos.
O Matlab possui diversas variveis predenidas, incluindo pi, Inf, NaN, i e j. Trs
exemplos so mostrados abaixo:
>> z = 3 + 4*i
z =
3.0000 + 4.0000i
>> Inf
ans =
Inf
>> 0/0
Warning: Divide by zero.
ans =
NaN
O termo NaN signica, em ingls, Not-a-Number (smbolo de indeterminao) e
resulta de operaes de valor indeterminado. Inf representa + e pi representa . A
varivel i =
1 usada para representar nmeros complexos. A varivel j =
1
11
pode ser usada em vez de i nas operaes aritmticas com nmeros complexos por
aqueles que a preferem. Estas variveis predenidas podem ser redenidas. claro
que elas podem ser redenidas intencionalmente a m de liberar o nome da varivel
para outros usos. Por exemplo, pode-se querer usar i como inteiro e reservar j para
a aritmtica com nmeros complexos. Seja cauteloso e deixe estes nomes de variveis
predenidas intocados, pois h uma innidade de nomes alternativos que podem ser
usados. As variveis predenidas podem ser realocadas aos seus valores default usando
o comando clear nome da varivel (por exemplo, clear pi).
12
2
Introduo
O MATLAB trabalha essencialmente com um tipo de objeto: uma matriz numrica
retangular podendo conter elementos complexos. Observa-se que um escalar uma
matriz de dimenso 1x1 e que um vetor uma matriz que possui somente uma linha ou
uma coluna.
2.1 Introduo a Matrizes Simples
As matrizes podem ser introduzidas no MATLAB de diferentes modos:
- Introduzida na Janela de Comando (lista explcita de elementos).
- Geradas por comandos e funes.
- Criadas em arquivos .m.
- Carregadas a partir de um arquivo de dados externo.
O mtodo mais fcil de introduzir pequenas matrizes no MATLAB utilizando uma
lista explcita. Os elementos de cada linha da matriz so separados por espaos em
branco ou vrgulas e as colunas separadas por ponto e vrgula, colocando-se colchetes
em volta do grupo de elementos que formam a matriz com o objetivo de limit-la. Por
exemplo, introduzindo-se a expresso:
>> A=[1 2 3; 4 5 6; 7 8 7]
A =
1 2 3
4 5 6
7 8 7
A matriz A guardada na memria RAM do computador, cando armazenada para
uso posterior. As matrizes podem, tambm, ser introduzidas linha a linha, o que indi-
cado para matrizes de grande dimenso. Por exemplo:
A=
[1 2 3
4 5 6
7 8 7]
Outra maneira para introduzir matrizes no MATLAB atravs de um arquivo no
formato texto com extenso .m. Por exemplo, se um arquivo chamado matriz.m
contiver estas trs linhas de texto:
13
A=
[1 2 3
4 5 6
7 8 7]
Ento a expresso matriz ler o arquivo e introduzir a matriz A.
>>matriz
O comando load pode ler matrizes geradas pelo MATLAB e armazenadas em arquivos
binrios ou matrizes geradas por outros programas armazenadas em arquivos ASCII. As-
sim, para ler um arquivo .mat chamado matriz.mat segue-se a seguinte estrutura: load
matriz.mat, e as variveis salvas no arquivo binrio matriz.mat sero carregadas na
Workspace.
NOTA: Em todos os exemplos, m e n so inteiros positivos.
Para especicar um nico elemento da matriz utilizam-se os ndices referentes ao
nmero de linha e nmero de coluna entre parnteses da matriz onde se encontra o
elemento: A(m,n).
Outra forma de gerar matrizes atravs de ciclos for. Por exemplo, para gerar uma
matriz M com i linhas e j colunas, a seguinte estrutura pode ser utilizada:
>> for i = 1:3,
for j = 1:3,
M(i,j) = i+j;
end
end
E obtemos como resultado a matriz:
>> M
M =
2 3 4
3 4 5
4 5 6
OBS: o ndice das matrizes comea em 1, no em 0.
14
2.2 Elementos de Matrizes
Os elementos das matrizes podem ser quaisquer expresses do MATLAB. Por exem-
plo:
>> x = [-1.3 sqrt(2) ((1+2+3)*4/5)^2]
x =
-1.3000 1.4142 23.0400
Um elemento individual da matriz pode ser referenciado com ndice entre parnteses.
Continuando o exemplo:
>> x(6) = abs(x(1))
x =
-1.3000 1.4142 23.0400 0 0 1.3000
Nota-se que a dimenso do vetor x aumentada automaticamente de 1x3 para 1x6
de modo a acomodar o novo elemento, e que os elementos indenidos do intervalo so
estabelecidos como zero.
Matrizes de maior dimenso podem ser construdas a partir de pequenas matrizes.
Por exemplo, pode-se anexar outra linha matriz A usando:
>> r= [ 10 11 12];
>> A= [A;r]
A =
1 2 3
4 5 6
7 8 7
10 11 12
Nota-se que o vetor r no foi listado porque ao seu nal foi acrescentado ;.
Podem ser extradas matrizes pequenas da matriz original utilizando :.
Por exemplo:
>> A = A(1:3,:)
A =
1 2 3
4 5 6
7 8 7
15
Seleciona da linha 1 at a linha 3 e todas as colunas da matriz A atual.
2.3 Declarao de Variveis
O MATLAB uma linguagem de expresses. As expresses usadas so interpretadas
e avaliadas pelo sistema. As declaraes no MATLAB so freqentemente da forma:
>> variavel = expressao
Ou simplesmente:
>> expressao
As expresses so compostas de operadores e outros caracteres especiais, de funes
e dos nomes das variveis. As avaliaes das expresses produzem matrizes, que so
ento mostradas na tela e atribudas s variveis para uso futuro. Se o nome da varivel
e o sinal de igualdade = so omitidos, a varivel com o nome ans, que representa a
palavra answer (resposta), automaticamente criada. Por exemplo, introduzindo a
expresso:
>> 1900/81
ans=
23.4568
Se o ltimo caractere da declarao um ponto e vrgula, ;, a impresso na tela
suprimida, mas a tarefa realizada. Esse procedimento usado em arquivos com
extenso .m e em situaes onde o resultado uma matriz de grandes dimenses e h
interesse em apenas alguns dos seus elementos.
Se a expresso to grande que no cabe em apenas uma linha, pode-se continuar
a expresso na prxima linha usando um espao em branco e trs pontos, ..., ao nal
das linhas incompletas. Por exemplo:
>> s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ...
- 1/8 + 1/9 - 1/10 + 1/11 - 1/12 + 1/13;
Calcula o resultado da srie, atribuindo o somatrio varivel s, mas no imprime o
resultado na tela.
As variveis e funes podem ser formadas por um conjunto de letras, ou por um
conjunto de letras e nmeros, onde somente os primeiros 19 caracteres do conjunto so
identicados. O MATLAB faz distino entre letras maisculas e minsculas,
16
assim a e A no so as mesmas variveis, exceto para os argumentos do comando
help . Todas as funes devem ser escritas em letras minsculas: inv(A) calcula a
inversa de A, mas INV(A) uma funo indenida.
2.4 Informaes sobre a rea de Trabalho
Os exemplos de declaraes mostrados nos itens acima criaram variveis que so
armazenadas na rea de Trabalho do MATLAB. Executando:
>> who
Obtm-se uma lista das variveis armazenadas na rea de Trabalho:
Your variables are:
A B ans r s x
que mostra as seis variveis geradas nos exemplos, incluindo ans.
Observe que o comando who est em letras minsculas. Todo comando no MATLAB
deve ser inserido dessa forma.
Uma informao mais detalhada que indica a dimenso de cada uma das variveis
correntes obtida com whos, que para o exemplo produz:
>> whos
Name Size Bytes Class
A 4x3 96 double array
B 3x3 72 double array
ans 3x3 72 double array
r 1x3 24 double array
s 1x1 8 double array
x 1x3 24 double array
Grand total is 37 elements using 296 bytes
Cada elemento de uma matriz real requer 8 bytes de memria, assim a matriz A de
dimenso 4x3 faz uso de 96 bytes e todas as variveis utilizadas um total de 296 bytes.
2.5 Nmeros e Expresses Aritmticas
A notao decimal convencional, com ponto decimal opcional e o sinal negativo,
usada para nmeros. A potncia de dez pode ser includa como um suxo. A seguir so
17
mostrados alguns exemplos de nmeros aceitos:
3 -99 0.00001
9.637458638 1.602E-20 6.06375e23
As expresses podem ser construdas atravs dos operadores aritmticos usuais e das
regras de precedncia:
1
Potenciao
2 / Diviso direita
2 \ Diviso esquerda
3 * Multiplicao
4 + Adio
4 - Subtrao
Deve-se notar que existem dois smbolos para diviso: as expresses 1/4 e 4\1 pos-
suem o mesmo valor numrico, isto , 0.25.
So usados parnteses na sua forma padro para alterar a procedncia usual dos
operadores aritmticos.
2.6 Nmeros e Matrizes Complexas
Os Nmeros Complexos so permitidos em todas as operaes e funes no MAT-
LAB. Os nmeros complexos so introduzidos utilizando as funes especiais i ou j que
correspondem parte imaginria de um nmero complexo. Por exemplo:
>> z= 3 + 4*i
ou
>> z= 3 + 4*j
Sabendo que um nmero complexo constitudo por uma parte real Re e por uma
parte imaginria Im, tal que:
z = Re + Im*i
ele pode ser expresso na forma:
18
>> z= r*exp(i*theta)
em que:
>> r = abs(z)
>> theta = angle(z)*180/pi
As seguintes declaraes mostram dois caminhos convenientes para se introduzir ma-
trizes complexas no MATLAB:
>> A= [1 2; 3 4]+i*[5 6;7 8]
ou
>> A= [1+5*i 2+6*i; 3+7*i 4+8*i]
Ambas produzem o mesmo resultado.
Se quisermos determinar a parte real da matriz A usamos a funo real(A), j a parte
imaginria pode ser visualizada com a funo imag(A) como pode ser visualizado abaixo:
>> real(A)
ans =
1 2
3 4
>> imag(A)
ans =
5 6
7 8
2.7 Formatao de Sada
O formato numrico exibido na tela pode ser modicado utilizando o comando for-
mat, que afeta somente o modo como as matrizes so mostradas, e no como elas so
calculadas ou guardadas (o MATLAB efetua todas as operaes em dupla preciso).
Se todos os elementos da matriz so inteiros exatos, a matriz mostrada num for-
mato sem qualquer ponto decimal. Por exemplo:
19
>> x = [-1 0 1]
x =
-1 0 1
Se pelo menos um dos elementos da matriz no inteiro exato, existem vrias pos-
sibilidades de formatar a sada. O formato padro, chamado de formato short, mostra
aproximadamente 5 dgitos signicativos ou usam notao cientca. Para modicar o
formato da sada, devemos inserir o comando format. A tabela abaixo mostra os princi-
pais formatos:
short 5 dgitos signicativos
short e 5 dgitos signicativos em notao cientca
long 15 dgitos signicativos
long e 15 dgitos signicativos em notao cientca
hex em sistema hexadecimal
rat em formato de nmero racional
bank duas casas aps a vrgula
+ Mostra o sinal do nmero sem o seu valor,
a parte imaginria do nmero ignorada
Com o formato short e long, se o maior elemento da matriz superior a 1000 ou
inferior a 0.001, aplicado um fator de escala comum para que a matriz completa seja
mostrada. Por exemplo:
>> X = 1e20*x
X =
1.0e+020 *
1.3333 0 0.0000
Com o comando format + os smbolos +, -, e espao em branco so mostra-
dos, respectivamente para representar elementos positivos, elementos negativos e zeros.
2.8 Utilizao do comando help
O MATLAB possui um comando de ajuda: help , que fornece informaes sobre a
maior parte dos tpicos:
>> help
Para obter informaes sobre um tpico especco, referir help tpico. Por exemplo,
20
>> help plot
fornece uma lista de todos os comandos relacionados com grcos bidimensionais.
A mesma sintaxe usada para obter informaes sobre um comando especco.
Temos como usar, alm da linha de comando, o boto F1, que chama o MATLAB
help, que se localiza nos tpicos de ajuda
2.9 Utilizao do comando lookfor
Embora o comando help fornea permita-lhe conseguir uma ajuda, ele pode no
ser a maneira mais conveniente, a menos que voc saiba o tpico exato sobre o qual
necessita de informaes.
Para isso, o comando lookfor fornece ajuda fazendo uma busca em toda primeira
linha dos tpicos de ajuda e retornando aqueles que contm as palavras-chave que voc
especicou. O mais importante que a palavra-chave no precisa ser um comando MAT-
LAB. Por exemplo, faz-se uma busca por funes relacionadas palavra-chave "fourier":
FFT Discrete Fourier transform.
FFT2 Two-dimensional discrete Fourier Transform.
FFTN N-dimensional discrete Fourier Transform.
IFFT Inverse discrete Fourier transform.
IFFT2 Two-dimensional inverse discrete Fourier transform.
IFFTN N-dimensional inverse discrete Fourier transform.
lookfor laplace
DFTMTX Discrete Fourier transform matrix.
SPECGRAM Spectrogram using a Short-Time Fourier Transform (STFT).
TDAFDFT Transform-domain adaptive filter using discrete Fourier
transform.
FFT Quantized Fast Fourier Transform.
FREQS Laplace-transform (s-domain) frequency response.
2.10 Funes
As potencialidades do MATLAB residem no seu extenso conjunto de funes. O
MATLAB possui um grande nmero de funes intrnsecas que no podem ser alteradas
pelo utilizador. Outras funes esto disponveis numa biblioteca externa distribuda
com o programa original (MATLAB TOOLBOX), que so na realidade arquivos com a
extenso .m criados a partir das funes intrnsecas. As categorias gerais de funes
matemticas disponveis no MATLAB incluem:
- Matemtica elementar;
- Funes especiais;
21
- Matrizes elementares;
- Matrizes especiais;
- Decomposio e fatorao de matrizes;
- Anlise de dados;
- Polinmios;
- Soluo de equaes diferenciais;
- Equaes no-lineares e otimizao;
- Integrao numrica;
- Processamento de sinais;
- Entre outras
As sees subseqentes mostram mais detalhadamente as diferentes categorias de
funes. Qualquer informao adicional sobre os contedos das diversas categorias
poder ser encontrado no arquivo de ajuda de cada funo obtido digitando o comando
help na janela de comando.
22
3
Manipulao de Matrizes e Vetores
3.1 Operaes com Matrizes
O MATLAB possui dois tipos diferentes de operaes aritmticas. As operaes arit-
mticas matriciais so denidas pelas regras da lgebra Linear. As operaes aritmticas
com arrays (conjuntos) so efetuadas elemento por elemento. O caractere de ponto dec-
imal . distingue as operaes matriciais das operaes com arrays. No entanto, como
as operaes matriciais e com arrays so iguais para a soma e para a subtrao, o par
de caracteres .+ e .- no usado para estas.
As operaes com matrizes no MATLAB so as seguintes:
- Transposio;
- Adio;
- Subtrao;
- Multiplicao;
- Diviso direita;
- Diviso esquerda;
- Potenciao.
A seguir cada uma destas operaes apresentada com maior detalhe.
3.1.1 Transposio
O caractere apstrofo ( ) indica a transposta de uma matriz, por exemplo:
>> B = A % A varivel B recebe a matriz transposta de A
Se Z for uma matriz complexa, Z ser a matriz conjugada complexa transposta.
>>Z = [1 2; 3 4] + [5 6; 7 8]*i
Z =
1.0000+ 5.0000i 2.0000+ 6.0000i
3.0000+ 7.0000i 4.0000+ 8.0000i
>>Z1 = Z
Z1 =
1.0000- 5.0000i 3.0000- 7.0000i
2.0000- 6.0000i 4.0000- 8.0000i
Para obter simplesmente a transposta de Z deve-se usar Z., como mostra o exemplo:
23
>>Z2 = Z.
Z2 =
1.0000+ 5.0000i 3.0000+ 7.0000i
2.0000+ 6.0000i 4.0000+ 8.0000i
Caso desejar apenas a matriz complexa conjugada de Z deve-se usar Z.
>> Z3 = Z.
Z3 =
1.0000 - 5.0000i 2.0000 - 6.0000i
3.0000 - 7.0000i 4.0000 - 8.0000i
3.1.2 Adio e Subtrao
A adio e a subtrao de matrizes so indicadas, respectivamente, por + e -.
As operaes so denidas somente se as matrizes possurem as mesmas dimenses.
A adio e a subtrao tambm so denidas se um dos operadores for um escalar,
ou seja, uma matriz 1x1. Neste caso, o escalar adicionado ou subtrado de todos os
elementos do outro operador. Por exemplo:
>> y = [1 2; 3 8] - 1
y =
0 1
2 7
3.1.3 Multiplicao
A multiplicao de matrizes indicada por *. A multiplicao x*y denida
somente se a segunda dimenso de x for igual primeira dimenso de y.
Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.
Por exemplo:
>> x=[-1; 0; 2];
>> pi*x
ans=
-3.1416
0
6.2832
24
Se os tamanhos das matrizes forem incompatveis para a operao matricial, ser
gerada uma mensagem de erro, com exceo do caso de operaes entre escalares e
matrizes (para adio, subtrao, diviso e multiplicao).
3.1.4 Diviso
A diviso de matrizes requer especial ateno, pois existem dois smbolos para diviso
de matrizes no MATLAB \ e /". Se A for uma matriz inversvel quadrada e b for um
vetor coluna (ou linha) compatvel, ento A\b e b/A correspondero respectivamente
multiplicao esquerda e direita da matriz b pela inversa da matriz A, ou inv(A)*b
e b*inv(A), mas o resultado obtido diretamente:
X = A\b a soluo de A*X = b
X = b/A a soluo de X*A = b
Deve-se ter o cuidado de observar as dimenses das matrizes que esto envolvidas
na operao, o nmero de colunas de A deve ser igual ao nmero de linhas de b em
A\b, j em b/A o nmero de linhas de A deve ser igual ao nmero de colunas de b em
A\b. A diviso direita denida em termos da diviso esquerda por:
b/A = (A\b)
3.1.5 Potenciao
A expresso A
e . ).
3.2.1 Adio e Subtrao
Para a adio e a subtrao, as operaes com conjuntos e as operaes com matrizes
so iguais. Deste modo os caracteres + e - so empregados do mesmo modo e
considerando as mesmas restries de utilizao.
25
3.2.2 Multiplicao e Diviso
A multiplicao de conjuntos indicada por .*. Se A e B so matrizes com as
mesmas dimenses, ento A.*B indica um conjunto cujos elementos so simplesmente
o produto dos elementos individuais de A e B. As expresses A./B e A.\B formam um
conjunto cujos elementos so simplesmente os quocientes dos elementos individuais de
A e B. Assim:
>> a=[1 2 3];
>> b=[2 4 6];
>> x=a./b >> x=b./a
x = x =
0.5000 0.5000 0.5000 2 2 2
3.2.3 Potenciao
A potenciao de conjuntos indicada por .
x + 1
(x 1)
3
lim
x3
+
x
x 3
>> syms x
>> limit((x/(x-3)),x,3,right)
ans=
inf
>> limit(((x+1)/(x-1)^3),x,1,left)
ans =
-inf
10.5 Integrao
10.5.1 Soluo Simblica
Na integrao de funes, o comando que o MATLAB reconhece para tal operao
int(f(x)).
Exemplo: Integrar as funes abaixo:
_
x(1 x)
2
dx
_
2x
4
3x
3
+ 5
7x
2
dx
Utilizando o comando acima explicado:
63
>> syms x
>> f=((x^1/2)*(1-x)^2);
>> int(f)
ans =
1/8*x^4-1/3*x^3+1/4*x^2
>> f=(((2*x^4)-(3*x^3)+5)/(7*x^2));
>> int(f)
ans =
2/21*x^3-3/14*x^2-5/7/x
Integrais Denidas As integrais denidas podem ser calculadas com o comando
int(f(x),a,b), onde a o limite inferior e b, o limite superior da integral.
Exemplos:
_
2
0
2x
(x 3)
2
dx
_
1
0
(1 2x 3x
2
)dx
>> syms x
>> int(((2*x)/(x-3)^2),0,2)
ans =
4-2*log(3)
>> int((1-2*x-3*x^2),0,1)
ans =
-1
10.5.2 Soluo Numrica
As integrais denidas podem ser aproximadas usando a regra de Simpson com o
comando quad ou usando a regra trapezoidal com o comando trapz. Os dois comandos
trabalham de maneira bem diferente.
Regra Trapezoidal Quando a rea sob a curva pode ser representada por trapzios
e o intervalo [a,b], dividido em n partes iguais, a rea aproximada poder ser calculada
atravs da seguinte frmula:
K
t
=
b a
2n
(f(x
0
) + 2f(x
1
) + ... + 2f(x
n1
) + f(x
n
))
64
onde os valores de xi representam os pontos no nal da cada trapzio e x
0
= a
e x
n
= b. A estimativa da integral melhora quando usarmos um maior nmero de
componentes ( como por exemplo trapzios), para aproximar a rea sob a curva, pois
quanto menor for o intervalo da funo a curva tende a uma reta.
O comando trapz aproxima a integral usando os pontos da funo denidos pelo
usurio. Assim, para usar este comando primeiro deve-se denir os vetores x, no inter-
valo [a, b], e f, os valores da funo correspondentes aos valores denidos no vetor x.
Considere, por exemplo, a seguinte integral.
I =
_
1
0
2xe
x
2
dx
A aproximao para esta integral pode ser calculada atravs do seguinte programa:
function I = Integral(dx);
x = 0:dx:1;
y = 2*x.*exp(-x.^2);
I = trapz(x,y);
Este programa cria um vetor x de a = 0 at b = 1, com incremento dx denido pelo
usurio, calcula os valores de f (x) nestes pontos e usa o comando trapz para aproximar
a integral de f (x). O clculo da integral feito no MATLAB, usando a recm-denida
funo Integral, da seguinte maneira.
>> integral(.1)
ans =
0.6298
Para um dx menor.
>> integral(.02)
ans =
0.6320
Observe que as aproximaes da integral para dx = 0.1 e dx = 0.02 so diferentes.
De fato, usando o incremento menor dx = 0.02 aproxima-se melhor a rea sob a curva
f(x). O valor exato desta integral
I
exato
= 1 exp (1)
ou, calculando no MATLAB I = 0.63212055882856.
A gura seguinte mostra gracamente a funo para dx = 0.1 e para dx = 0.02. A
rea sob a curva a integral denida da funo f(x).
65
Figura 10: Integral - rea abaixo da curva
Observando o grco da funo, fcil imaginar porque a diminuio do incremento
dx melhora a aproximao da integral. No entanto, na prxima seo, um mtodo mais
eciente para o clculo da integral apresentado.
Regra de Simpson O comando quad permite que se calcule a integral I usando a
Regra de Simpson. A sintaxe deste comando a seguinte:
quad(fc,a,b,tol)
Entre os argumentos, fc um arquivo.m em que se dene a funo da qual se quer
calcular a integral, a e b so os limites de integrao e tol a tolerncia de erro exigida
para a aproximao da integral. Mostra-se mais adiante que, quanto menor a tolerncia
de erro exigida, mais preciso o clculo da integral.
Primeiro cria-se o programa func2.m que dene a funo f (x).
function y=func2(x)
y=2*x.*exp(-x.^2);
O clculo da integral I pode ser efetuado usando a tolerncia usual que de 10
3
.
Neste caso, desnecessrio denir tol no comand window.
>> quad(func2,0,1)
ans =
0.63212053454568
66
Calculando agora com uma tolerncia de 10
8
.
>> quad(func2,0,1,1e-8)
ans =
0.63212055882677
Note que, comparando-se com o valor exato apresentado na seo anterior, quando
se diminui a tolerncia melhora-se a aproximao da integral.
Regra de Newton-Cotes O comando quad8 usa uma forma adaptada da regra de
Newton-Cotes. Este comando funciona melhor em certas funes com certos tipos de
singularidades como, por exemplo:
k =
_
1
0
xdx
Lembrando que uma singularidade um ponto no qual uma funo ou sua derivada
no denida ou tende para o innito.
Tanto quad8 quanto quad8 escrevem na tela uma mensagem quando detectam uma
singularidade, mas ainda assim o valor estimado da integral retornado.
Exerccio:
Seja a funo f(x) = |x|. Resolva as integrais abaixo usando o MATLAB e compare
com os resultados obtidos a mo.
a. int[0.6,0.5] f(x) dx
b. int[0.5,-0.5] f(x) dx
c. int[0.0,-1.0] f(x) dx
10.6 Diferenciao
A derivada de uma funo f em um ponto pode ser descrita gracamente como
a inclinao da reta que tangencia a funo naquele ponto. Pontos da funo onde a
derivada zero so chamados pontos crticos. So pontos onde a tangente representada
por uma linha horizontal e que, por isso, denem o local de mximo e de mnimo
da funo. Podemos perceber ao analisar uma determinada funo num determinado
intervalo que o sinal da derivada pode mudar, e, se esse sinal muda, signica que dentro
deste intervalo existe local de mximo e local de mnimo. Podemos tambm analisar
uma funo pela sua derivada segunda. De modo que, se a derivada segunda de um
ponto crtico positiva, ento o valor da funo naquele ponto signica um local de
mnimo. Da mesma forma, se a derivada segunda de um ponto crtico negativa, ento
a funo possui um local de mximo.
67
10.6.1 Derivao por expresses de diferenas
As tcnicas de diferenciao numrica estimam a derivada de uma funo em um
ponto x
k
atravs da aproximao da inclinao da reta tangente curva neste ponto
usando valores que a funo assume em pontos perto de x
k
. Essa aproximao pode
ser feita de vrios modos.
Assim, dependendo dos pontos, temos trs tcnicas:
A derivada segunda pode ser achada atravs da frmula:
f
(x) =
f
(x
k
) f
(x
k
1)
x
k
(x
k
1)
68
10.6.2 Comando di
Para o clculo de derivadas, o comando no MATLAB diff(f(x)), onde f(x) a
funo que se quer determinar a derivada.
Exemplo: Derivar as funes abaixo:
f(x) = 2x
2
+ 3x
f(x) =
1
3 x
Utilizando o comando acima explicado:
>> syms x
>>diff((2*x^2)+3*x)
ans =
4*x+3
>>diff((1/(3-x)))
ans =
1/(3-x)^2
69
10.6.3 Derivadas de ordem superior
As derivadas superiores podem ser calculadas atravs do comando diff(f(x), 2),
onde essa representao para a derivada segunda da funo f(x), para derivada terceira,
coloca-se 3 no lugar do nmero 2, para derivada quarta, o nmero 4 e assim por diante.
Exemplo: Achar a derivada segunda das seguintes funes:
f(x) =
1
3 x
f(x) = x
1
x
Utilizando o comando acima explicado:
>> syms x
>> diff((1/(3-x)),2)
ans =
2/(3-x)^3
>>diff((x-(1/x)),2)
ans =
-2/x^3
70
10.6.4 Derivadas Trigonomtricas:
Exemplo: Derivar as seguintes funes:
f(x) = sen(x)
f(x) = cos(2x)
f(x) = tan(3x + 5)
Utilizando o comando acima explicado:
>> syms x
>> diff(sin|x|)
ans =
cos(x)
>>diff(cos|2*x|)
ans =
-2*sin|2*x|
>>diff(tan|3*x+5|)
ans =
3+3*tan(3*x+5)^2
71
11
Ajuste de Curvas
Em numerosas reas, precisa-se do uso de uma equao para se resolver um problema.
O que fazer se ns s estivermos com os dados na mo? Nesse caso, o uso do ajustamento
e interpolao poder nos facilitar essa resoluo.
11.1 Ajuste de Curvas
No MATLAB, a funo polyt pode resolver quando voc tem os dados e tem que
transformar em polinmios. A ilustrao abaixo, permite-nos ver o uso dessa funo.
Depois, vamos plotar para ver se o ajustamento est certo:
x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];
y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
Para usar o comando polyt deve-se indicar qual o grau do polinmio para se tentar
ajustar. Por exemplo, se n=1, ele tentar ajustar para uma reta.
Agora, se for n=2, como o nosso caso, ele indicar um polinmio de grau 2.
Exemplo:
n=2;
p=polyfit(x,y,n)
p =
-9.8108 20.1293 -0.0317
O resultado do nosso ajuste : 9.8108x
2
+ 20.1293x 0.0317 . Vamos agora
vericar se o ajuste est certo:
xi=linspace(0,1,100);
z=polyval(p,xi);
plot(x,y,o,x,y,xi,z,:)
xlabel(x),ylabel(y)
title(Ajuste para uma curva quadrtica)
72
Figura 11: Ajuste para uma curva quadrtica
11.2 Interpolao Unidimensional
Para ilustrar uma interpolao unidimensional, vamos considerar o seguinte exemplo:
fazendo parte de um projeto cientco, foram coletadas informaes sobre temperaturas
durante um dia, num perodo de doze horas.
Como saber a temperatura em uma hora qualquer?
Vamos plotar esses dados:
horas=1:12;
temps=[5 8 9 15 25 29 31 30 22 25 27 24];
plot(horas,temps,horas,temps,+)
title(Temperaturas)
xlabel(Hora),ylabel(GrausCelcius)
Para estimar a temperatura numa determinada hora, usamos a funo interp1.
Exemplo:
73
Figura 12: Ajuste para uma curva quadrtica
t=interp1(horas,temps,9.3) % Estimar a hora 9,3
t =
22.9000
t=interp1(horas,temps,4.7) % Estimar a hora 4,7
t =
22
t=interp1(horas,temps,[3.2 6.5 7.1 11.7])
t =
10.2000
30.0000
30.9000
24.9000
Para se ter uma preciso ainda maior, deve-se usar o argumento spline.
Exemplo:
74
t=interp1(horas,temps,9.3,spline)
t =
21.8577
t=interp1(horas,temps,4.7,spline)
t =
22.3143
t=interp1(horas,temps,[3.2 6.5 7.1 11.7],spline)
t =
9.6734
30.0427
31.1755
25.3820
A interpolao tipo spline diferente da linear, pois emprega o conceito diferencial,
sendo por isso que os resultados diferem. O tipo spline mais indicado quando se quer
utilizar para grcos.
Exemplo:
h=1:0.1:12;
t=interp1(horas,temps,h,spline);
plot(horas,temps,--,horas,temps,+,h,t,r)
title(Temperaturas);
xlabel(Hora),ylabel(Graus Celcius) ;
Figura 13: Interpolao tipo spline
75
12
Transformadas
As transformadas so manipulaes matemticas para representar os mesmos elemen-
tos em diferentes domnios por meio de transformaes nos mesmos. Na Engenharia, elas
so usadas com muita freqncia para mudar o campo de referncia entre o domnio do
tempo e o domnio s, domnio da freqncia ou domnio Z. H muitas tcnicas para anal-
isar estados de equilbrio e sistemas que sofrem mudanas muito suaves no domnio do
tempo, mas os sistemas complexos quase sempre podem ser analisados mais facilmente
em outros domnios.
A funo impulso (t) a derivada da funo Degrau u(t). A funo Degrau K
(t-a) denida como K (t-a) = 0 para t<a e
_
f(t)e
jwt
dt
f(t) =
_
F(w)e
jwt
dw
O MATLAB usa um w para representar em expresses simblicas.
Exemplo:
syms t
f= sym(t*exp(-t^2))
F= fourier(f)
invfourier(F)
12.4 Transformada Z
As transformadas de Laplace e Fourier so usadas para analisar sistemas de tempo
contnuos. A Transformada Z, por outro lado, usadas para analisar sistemas de tempo
discreto. A Transformada Z denida como:
F(z) =
k=0
f(k)z
k
,
onde z um nmero complexo.
A Transformada Z e a Transformada Inversa de Z so obtidas usando-se as funes
ztrans e iztrans. O formato similar ao das funes de Transformadas de Laplace e
Fourier.
12.5 Exerccios
12.5.1 Exerccio 1: Sistemas Lineares
O circuito mostrado abaixo possui uma fonte de tenso contnua de 60V e quatro
resistores distribudos em trs malhas. Utilize o MATLAB para resolver o sistema linear
e achar as correntes no circuito.
7I
1
+ 12(I
1
I
2
) = 60
12(I
2
I
1
) + 6(I
2
I
3
) = 0
6(I
2
I
3
) + 12I
3
= 0
78
Figura 16: Circuito eltrico do exerccio 1
Aplicando as leis de Kirchho no circuito, tm-se trs equaes para trs incgnitas
linearmente independentes (I
1
, I
2
e I
3
).
19I
1
12I
2
= 60
12I
1
+ 18I
2
6I
3
= 0
6I
2
+ 18I
3
= 0
Reorganizado as equaes, tem-se o sistema pronto para ser passado para forma
matricial e ento ser resolvido, sendo, no caso do sistema eltrico R
3X3
.I
3X1
= V
3X1
.
Comandos utilizados em sistemas lineares:
x=A\B Diviso esquerda para sistemas Ax=B
x=B/A Diviso esquerda para sistemas xA=B
inv(A) Inverso de A
det(A) Determinante de A
rank(A) Oposto de A
12.5.2 Exerccio 2: Equaes Diferenciais e Transformadas
Achar a equao para a tenso no capacitor no circuito abaixo utilizando soluo por
equaes diferenciais considerando nulas as condies iniciais, ou seja, v
C
(0).
Figura 17: Circuito eltrico do exerccio 2
Aplicando a lei das malhas de Kirchho, tem-se
79
Ri(t) + v
C
V
S
(t) = 0 (1.1)
Como os elementos esto todos em srie, a corrente que ui pelo resistor a mesma
que ui pelo capacitor:
i(t) = i
C
(t) = C
d
dt
v
C
dt (1.2)
Substituindo (1.2) em (1.1) tem-se a equao diferencial de 1
a
ordem para um circuito
RC srie:
RC
d
dt
v
C
dt + v
C
(t) V = 0 (1.3)
A tenso no capacitor dada pela equaao diferencial, que mostrada na equaao
abaixo:
v
C
(t) = V (1 e
1t
RC
) (1.4)
a. Funo dsolve
A funao dsolve fornece soluo simblica para equaes diferenciais ordinrias.
Basta simplesmente entrar com uma ou mais equaes diferenciais e suas respectivas
condies iniciais que a resposta fornecida. Por exemplo, para resolver a equao
d
2
dt
2
y = t com condies iniciais y(0) = 2 e y
= bx px
2
Partindo desta equeo ser ento construdo um modelo para este sistema dinmico.
Supondo que b=1 bactria/hora e p=0,5 bactria/hora, ser determinado o nmero de
bactrias contidas no pote aps 1 hora, admitindo que inicialmente existiam 100 bactrias
presentes. Crie uma nova janela de modelo na barra de menu escolhendo FILE:NEW.
Este um sistema de primeira ordem, o que quer dizer que requer somente um
integrador para resolver a equao diferencial. A entrada do integrador x
e a sada
x. Abra o biblioteca linear e arraste o integrador para a janela do modelo, seguindo a
posio mostrada na gura:
Ainda na biblioteca Linear, arraste dois blocos de ganhos (Gain) para a janela do
modelo e posicione-os como na gura seguinte. O Simulink exige que cada bloco tenha
seu nome nico. Devido a isto, o segundo bloco de ganho ser nomeado GAIN1. Arraste
ainda um bloco de soma (Sum) e a seguir feche a janela da biblioteca linear.
Abra agora a biblioteca de blocos de operaes matemticas (Math Operations) e
arraste um bloco de produto (Dot Product) para a posio mostrada. Este bloco ser
utilizado para calcular o valor de x
2
.
Abra a seguir a biblioteca dispositivos de sada (Sinks) e arraste um bloco SCOPE
para a janela do modelo seguindo a posio mostrada.
A orientao padro dos blocos no SIMULINK posicionar as entradas esquerda e
as sadas direita. Porm, neste modelo, ser mais legvel os blocos de ganho e produto
forem invertidos. Iniciando com o bloco do Produto, deve-se primeiro clicar sobre ele de
modo a selecion-lo. Pequenos quadros pretos aparecero nas quinas do bloco indicando
seleo. Pressione o boto direito. No menu, escolha FORMAT: FLIP BLOCK. Agora
as entradas esto direita e as sadas esquerda. Repita a operao de inverso para
cada bloco de Ganho. O modelo agora deve estar semelhante gura que segue abaixo:
90
Figura 31: Integrador inserido no projeto
Figura 32: Blocos inseridos
Trace agora uma linha de sinal da sada do bloco de soma para a entrada do inte-
grador e outra da sada do integrador para a entrada do SCOPE.
A seguir necessrio conectar a linha que liga o integrador ao SCOPE at bloco
de ganho situado na parte inferior da janela, pois esta linha contm o valor de x. Para
faz-lo, pressione a tecla CTRL do teclado e clique na linha de sinal. O cursor do mouse
ir mudar para uma cruz. Conserve a tecla do mouse pressionada enquanto a ligao
feita e solte agora a tecla CTRL. Leve a linha at a entrada do bloco de ganho. O
SIMULINK automaticamente ajusta a linha com um ngulo de 90
o
. Se o mouse possuir
trs botes, as operaes de clicar e arrastar podem ser feitas utilizando o boto direito.
Repita a operao ligando a linha de sinal Integrator-SCOPE at a entrada superior
do bloco de produto. Da linha de sinal que liga a entrada superior do bloco de produto
91
Figura 33: Blocos inseridos aps rotao
repita a operao de ligao para a entrada inferior do mesmo bloco, de modo que o
bloco execute a operao x.x = x
2
. Conecte agora a sada do bloco de produto entrada
do ganho na parte superior da janela de modelo. Aps isso, necessario conectar a sada
do ganho superior entrada superior do bloco de soma e a sada do ganho inferior
entrada inferior do mesmo bloco de soma.
Figura 34: Blocos conectados
O modelo agora est completo, mas os blocos devem ser congurados (parametriza-
dos) para que este represente o sistema desejado. O Simulink tem o valor 1.0 como
padro(default) para os blocos de ganho, entradas positivas no bloco de soma e o valor
inicial 0.0 para o integrador. O valor inicial do integrador representa o nmero inicial de
bactrias presentes no pote. Para acessar as conguraes de um bloco, basta dar um
duplo clique sobre o bloco. Para parametrizar os blocos de ganho. D um duplo clique
92
no ganho da parte superior e mude o valor de 1.0 para 0.5 na caixa de dilogo que ir
aparecer, a seguir clique em Close. Note que o valor do ganho do bloco muda para 0.5
no diagrama em blocos.
Agora d um duplo clique no bloco de soma e no campo List of signs mude de ++
para + na caixa de dilogo que abrir. Os sinais representam os prprios sinais de
entrada no bloco. A seguir clique em Close.
Note agora que no bloco de soma o sinal superior negativo e o inferior positivo,
sendo ento a sada a diferena das entradas que representa x
(t)dt = 1
Embora o impulso unitrio seja um sinal que teoricamente no existe existem boas
aproximaes do caso ideal que so muito comuns. Exemplos fsicos so colises, como
uma roda se chocando com o meio-o ou um basto rebatendo uma bola ou ainda
mudanas instantneas de velocidade como a de uma bala sendo disparada de um ri-
e. Outra utilidade da funo impulso a determinao da dinmica do sistema. O
movimento causado em um sistema que sofre uma fora impulsional unitria a prpria
dinmica inerente ao sistema. Partindo disto, pode-se utilizar a resposta um impulso
unitrio de um sistema complexo para se determinar sua freqncia natural e suas car-
actersticas de vibrao.
Pode-se criar uma aproximao de um impulso unitrio utilizando duas fontes de
funo degrau e um bloco de soma. A idia produzir num tempo denido a um
pulso de durao muito curta d e de magnitude M, tal que M.d=1. A diculdade
consiste em se denir um valor apropriado para d. Deve ser um valor pequeno quando
comparado mais rpida dinmica do sistema Porm, se for muito curto, podem ocorrer
problemas numricos como erros de aproximao. Se for muito longo a simulao no
96
Figura 40: Um modelo para o impulso unitrio.
ser adequada um impulso verdadeiro. Usualmente, valores adequados podem ser
determinados experimentalmente.
O modelo na gura acima deve ser ajustado para simular um impulso unitrio ocorrido
aos 0.5 segundos de simulao com uma durao de 0.01 segundos e a magnitude de
100. A fonte degrau na parte superior deve ter a seguinte congurao: Step time: 0.5,
Initial value: 0, Final value: 100. J a fonte situada na parte inferior deve ser congurada
da seguinte forma: Step time: 0.51, Initial value: 0, Final value: 100. A simulao deve
ser congurada para terminar em 1 segundo.
13.3.1 Principais Fontes(Sources):
Essas so as principais fontes:
Constant - Fornece um valor constante.
Sin Wave - Funo seno. possvel congurar os parmetros.
Ramp - Uma reta linear. possvel congurar a inclinao.
Step - Funo degrau. Pode-se congurar o tempo, amplitude e valor inicial.
Pulse Generator - Gera uma onda quadrada.
Ramdon Number - Nmeros aleatrios no tempo.
Signal Generator - Gera as ondas tpicas de um gerador de sinais: quadrada, serra,
senide, etc.
13.3.2 Principais blocos usados na modelgem de sistemas dinmi-
cos
Os principais blocos so:
Derivative - Calcula a derivada da funo em relao ao tempo.
Integrator - Calcula a integral da funo em relao ao tempo.
Transfer Fcn - Adiciona uma funo de transferncia. Os valores podem ser ajustados
nas conguraes (duplo clique sobre o bloco).
Transport Delay e Variable Transport Delay - Adiciona um delay de tempo.
Zero-Pole - Semelhante a funo de transferncia.
Abs - Calcula o valor absoluto.
Add - Soma ou subtrai as entradas (inputs).
Sum - Soma ou subtrai valores, tais como em feedbacks.
Gain - Ganho. Multiplica a entrada pelo valor congurado.
Dot Product - Faz o produto escalar com as entradas.
97
Min - A sada deste bloco o valor mximo, ou mnimo da entrada, de acordo com a
congurao.
Product - Faz o produto entre as entradas.
Divide - Faz o produto e/ou a diviso entre as entradas.
Real-Imag to complex - Transforma dois nmeros em um nico nmero complexo.
13.3.3 Vericao do modelo
Os blocos para a vericao de modelo so teis quando se deseja saber se os valores
de entrada ou sada de um determinado bloco esto, por exemplo, dentro de uma faixa
de valores. Sempre que a condio no for satisfeita, aparecer uma mensagem de erro
durante a simualo.
Assertion - Verica se um valor diferente de zero.
Check Dynamic Gap: - Checa se um sinal menor ou maior que dois outros sinais.
Check Dynamic Lower Bound: - Checa se um sinal sempre menor que outro.
Check Dynamic Range: - Verica se um sinal sempre tem valores entre outros dois sinais.
Check Dynamic Upper Bound: - Verica se um sinal sempre maior que o outro.
Check Static Gap: Checa se um sinal menor ou maior que dois outros valores estticos.
Check Static Lower Bound: Verica se um sinal maior ou igual a um valor esttico
denido.
Check Static Range: - Verica se um sinal est sempre outros dois valores estticos.
Check Static Upper Bound: Checa se um sinal menor ou igual a um limite superior.
13.3.4 Blocos de sadas(Sinks)
Esses so os blocos de sadas:
Display - Mostra em uma tela os valores da entrada durante a simulao.
Scope - Exibe um grco dos valores de entrada em relo ao tempo.
Stop Simulation - Quando a entrada deste bloco for diferente de zero, a simulo ser
interrompida.
Terminator - Uma terminao. Pode ser usado para evitar erros gerados por blocos com
sadas no conectadas.
To le - Escreve os valores de sada em uma matriz.
13.3.5 Criando blocos de sub-sistemas
Um sub-sistema um sistema menor que est contido no sistema principal. Dessa
forma, ele tambm composto por blocos. Esta uma forma ecaz de organizar
um diagramas de blocos. Por exemplo, se um determinado processo bem denido
composto por dezenas de blocos, possvel substituir todos estes blocos por apenas um
bloco utilizando um sub-sistema. Para isso, selecione todos os blocos que deseja incluir
no sub-sistema e clique com boto direito do mouse. V at a opo Create Subsystem.
Assim ir surgir um nico bloco que contm em seu interior todos os outros blocos. Para
acess-lo, basta dar um duplo clique que o sub-sistema ser exibido em nova janela.
98
13.3.6 Blocos condicionais
possvel ainda utilizar-se de blocos condicionais, tais como o bloco If. Neste bloco
h entradas para sinais e uma comparao feita. Se for verdadeira, o bloco libera um
sinal de nvel alto na sada. Observe que este sinal no o valor da entrada do bloco
e sim um sinal que arma se verdadeira ou falsa a armativa. As sadas dos blocos
condicionais podem ser conectadas aos blocos If Action Subsystem. Estes blocos so
sub-sistemas que iro atuar quando for verdadeiro o sinal presente na entrada if. Dessa
forma, necessrio editar os blocos do If Action Subsystem para que as sadas sejam as
desejadas.
Exemplo: Construa o sequinte diagrama de blocos no Simulink. Este modelo limita
o valor de uma funo qualquer, por exemplo, uma senide. O valor da senide
comparado com outro valor estabelecido no bloco if. Se a condio for verdadeira,
ento um sub-sistema acionado. Este sub-sistema nada mais que uma entrada e
uma sada, porm ele pode ser modicado a m de atigir o resultado desejado.
Figura 41: Um diagrama de blocos condicional.
13.3.7 Personalizando o modelo e manipulando Blocos
possvel personalizar o modelo atravs da mudana de cores, tanto do background
como dos blocos em si. Esta uma forma de tornar mais visvel ou mesmo organizar
partes de um sistema complexo. Para alterar a cor do background, clique com o boto
direito em algum ponto da tela e v at "screen color"e selecione a cor desejada. O
mesmo pode ser feito para um bloco. Neste caso, clique com o boto sobre um bloco
e v em background color para mudar a cor do bloco; e em foreground color para
modicar as cores do contorno do bloco. A tabela a seguir contm as operaes bsicas
de manipulao de blocos como redimensionar, rotacionar, copiar e renomear blocos.
99
Ao Descrio
Seleo simples de objeto Clique no objeto com o boto esquerdo do mouse.
Seleo mltipla de objetos Pressione a tecla SHIFT e clique no outro objeto.
Selecionar com uma caixa de
seleo
Clique com o boto esquerdo do mouse no local onde
se deseja que seja uma das quinas da caixa de seleo.
Continue com a tecla do mouse pressionada e arraste
a caixa para encobrir a rea esejada.
Copiar um bloco de uma bib-
lioteca ou de outro modelo
Selecione o bloco e arraste para a janela do modelo
para a qual se quer copiar.
Inverter blocos Selecione o bloco e no menu Format:Flip Block.
Tecla de atalho: CTRLF.
Rotacionar blocos Selecione o bloco e no menu Format:Rotate Block.
Tecla de atalho: CTRLR.
Redimensionar blocos Selecione o bloco e arraste o canto.
Adicionar sombra Selecione o bloco e no menu Format:Show Drop
Shadow.
Editar o nome de um bloco Clique no nome.
Ocultar o nome de um bloco Selecione o nome, no menu Format:Hide Name
Inverter o nome de um bloco Selecione o nome, no menu Format:Flip Name
Apagar Objetos Selecione o objeto, no menu Edit:Clear. Tecla de
atalho: Del.
Copiar objetos para a rea de
transferncia
Selecione o objeto, no menu Edit:Copy. Tecla de
atalho: CTRLC.
Recortar objetos para a rea
de transferncia
Selecione o objeto, no menu Edit:Cut. Tecla de
atalho: CTRLX.
Colar objetos a partir da rea
de transferncia
No menu Edit:Paste. Tecla de atalho: CTRLV.
Traar uma linha de sinal Arrastar com o mouse da sada do bloco para a en-
trada do outro.
Traar uma linha de sinal em
segmentos
Arraste com o mouse da sada do bloco at o primeiro
ponto. Repetir deste ponto at o seguinte e assim por
diante.
Traar uma linha ligada a
outra
Mantenha a tecla CTRL pressionada e clique sobre a
linha de origem. Tecla de atalho: Clicar com o boto
direito do mouse a partir da linha de origem.
Separar uma linha Selecione a linha. Mantendo a tecla SHIFT pression-
ada, clique e arraste o novo vertex para a posio
desejada.
Mover um segmento de linha Clique e arraste o segmento desejado.
Mover um vertex de um seg-
mento.
Clique e arraste o vertex desejado.
Nomear uma linha de sinal Duplo clique na linha e digite o nome.
Mover o nome de uma linha
de sinal
Clique e arraste o nome para a posio desejada.
100
Ao Descrio
Copiar o nome de uma linha
de sinal
Mantendo a tecla CTRL pressionada, arraste o nome
para a posio desejada. Tecla de atalho: clique e
arraste com o boto direito do mouse para a posio
desejada.
Sinais de propagao numa
linha de sinal
D um nome aos sinais conhecidos (entrada) com um
nico caracter e nas linhas em que se deseja saber seu
contedo, deve-se digitar somente o caracter <.
Aps isso, no menu Edit:Update Diagram.
Acrescentar anotao ou ob-
servao no modelo
D um duplo clique no local em que se deseja e digite
o texto.
101
14
Referncias Bibliogrcas
Curso de MATLAB for Windows, Departamento de Engenharia Mecnica, UNESP,
Campus de Ilha Solteira.
Trindade, Marcelo A. e Sampaio, Rubens, Introduo ao MATLAB, Departamento
de Engenharia Mecnica, Laboratrio de Dinmica e Vibraes, PUC-Rio.
Noes Bsicas de Utilizao e Programao em Matlab, Curso de Matemtica,
Programa de Educao Tutorial, Universidade Federal de Santa Maria, 2008.
Hey, H. L., Caderno didtico de Sistemas de Controle I, Departamento de Eletrnica
e Computao, UFSM, Santa Maria.
www.mathworks.com.
102