You are on page 1of 127

Introduo ao MATLAB

2


1. Apresentao...................................................................................................5
1.1. Soluo de Problemas...................................................................................... 5
1.1.1. Enunciado do Problema ............................................................................ 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................................................................ 11
2. Introduo......................................................................................................13
2.1. Introduo a Matrizes Simples....................................................................... 13
2.2. Elementos de Matrizes.................................................................................... 14
2.3. Decarao de Variveis.................................................................................. 15
2.4. Informaes sobre a rea de Trabalho........................................................ 16
2.5. Nmeros e Expresses Aritmticas.............................................................. 17
2.6. Nmeros e Matrizes Complexas ................................................................... 18
2.7. Formatao de Sada...................................................................................... 19
2.8. Utilizao do Help (Ajuda).......................................................................... 20
2.9. Funes............................................................................................................. 20
3. Manipulao de Matrizes e Vetores......................................................................21
3.1 . Operaes com Matrizes ......................................................................... 21
3.1.2 Adio e Subtrao ............................................................................. 22
3.1.3 Multiplicao......................................................................................... 22
3.1.4 Diviso................................................................................................... 23
3.1.5 Potenciao.......................................................................................... 23
3.2 Operaes Elemento a Elemento (Conjuntos) ................................... 23
3.2.1 Adio e Subtrao ............................................................................. 23
3.2.2 Multiplicao e Diviso ....................................................................... 24
3.2.3 Potenciao.......................................................................................... 24
3.3. Matrizes Elementares...................................................................................... 24
3.3.1 Gerao de Vetores ............................................................................ 24
3.3.2 . Matriz Identidade ............................................................................... 25
3.3.3 Matriz Composta por Elementos Unitrios...................................... 25
3.3.4 Matriz Nula............................................................................................ 25
3.3.5 Matriz Aleatria .................................................................................... 26
3.4 Elementos de Matrizes ............................................................................... 26
3.5 Manipulao de Matrizes............................................................................ 27
3.5.1 Matriz Diagonal ou Diagonal de uma Matriz ......................................... 27
3.5.2 Matrizes Triangulares.......................................................................... 28
3.5.3 Redimensionamento de Matrizes...................................................... 28
3.5.4 Rotao dos Elementos da Matriz.................................................... 29
4. Funes..........................................................................................................30
4.1 Funes Escalares ...................................................................................... 30
4.2. Funes Vetoriais ............................................................................................ 30
Sumrio

Introduo ao MATLAB

3
4.3 Funes Matriciais....................................................................................... 31
5. Polinmios......................................................................................................33
6. Grficos..........................................................................................................35
6.1 Grficos X-Y ................................................................................................... 35
6.1.1 Acessrios para os Grficos .............................................................. 37
6.1.2 Nmeros Complexos........................................................................... 38
6.2 Grficos Polares................................................................................................ 39
6.3. Grficos 3D....................................................................................................... 39
7. Programao..................................................................................................43
7.1 Arquivo.m........................................................................................................... 43
7.2 Operadores Lgicos e Relacionais........................................................... 44
7.2.1 Operadores Relacionais ..................................................................... 44
7.2.2 Operadores Lgicos ............................................................................ 44
7.3. Comandos For While - If............................................................................. 46
7.3.1. Comando If ........................................................................................... 46
7.3.2. Ciclo For ................................................................................................ 47
7.3.3 Ciclo While............................................................................................ 48
7.4. Declarando Funes ....................................................................................... 48
8. Sistemas de Equaes Lineares....................................................................56
8.1. Interpretao grfica ................................................................................... 56
8.2. Soluo usando operao com matrizes................................................. 58
8.3. Diviso de matrizes ..................................................................................... 58
9. Cculo............................................................................................................61
9.1. Zeros de Funes........................................................................................ 61
9.2. Minimizao de Funes........................................................................... 62
9.3. Limites ........................................................................................................... 62
9.4. Limites esquerda e direita.................................................................... 62
10. Integrao Numrica....................................................................................64
10.1. Integrais..................................................................................................... 64
10.2. Integrais Definidas................................................................................... 64
10.3. Integrais Definidas (outros mtodos).................................................... 65
10.2.1 Regra Trapezoidal ............................................................................... 65
10.2.2 Regra de Simpson............................................................................... 66
10.2.3 Regra de Newton-Cotes ..................................................................... 67
11. Diferenciao Numrica...............................................................................70
11.1. Derivao por expresses de diferenas............................................. 70
11.2. Comando diff ............................................................................................ 71
11.3. Derivadas Superiores.............................................................................. 72
11.4. Derivadas Trigonomtricas: ................................................................... 72
12. Ajuste de Curvas..........................................................................................73
12.1. Ajuste de Curvas............................................................................................ 73
12.2. Interpolao Unidimensional.................................................................. 74
13. Anlise Polinomial........................................................................................78
13.1. Avaliao do polinmio........................................................................... 78
13.2. Comando polyval ..................................................................................... 78
13.3. Operaes Aritmticas........................................................................... 79
13.3.1 Soma e subtrao ................................................................................... 79
13.3.2. Multiplicao............................................................................................ 80

Introduo ao MATLAB

4
13.3.3. Diviso...................................................................................................... 80
13.4. Razes de polinmios.............................................................................. 81
15. Transformadas.............................................................................................84
15.1. Funes Degrau e Impulso.................................................................... 84
15.3. Transformada de Fourier........................................................................ 85
15.4. Transformada Z........................................................................................ 85
16. SIMULINK....................................................................................................86
16.1. Introduo ....................................................................................................... 88
16.1.1. Diagrama de Blocos............................................................................... 88
16.1.2. Smbolos .................................................................................................. 90
16.2. Conhecendo o SIMULINK............................................................................ 90
16.2.1. Acessando o SIMULINK........................................................................ 90
16.2.2. Construindo um Modelo Simples......................................................... 91
16.3. Construindo Modelos no SIMULINK......................................................... 104
16.3.1 - Elementos de Modelos....................................................................... 104
16.3.2. Manipulando Blocos............................................................................. 105
16.3.3. Fontes..................................................................................................... 105
16.3.3.1. Fontes Comuns ............................................................................. 107
16.3.4. Importando do MATLAB (From Workspace Block)......................... 108
16.3.4.1. Importando Arquivos Gerados no MATLAB (From File Input Block) ....... 110
16.3.5. Dispositivos de Sada .......................................................................... 110
16.3.6. Osciloscpio (Scope) ........................................................................... 110
16.3.6.1. Ferramenta Zoom na tela do Osciloscpio............................... 112
16.3.6.2. Propriedades do Osciloscpio .................................................... 113
16.3.7. Grfico XY ............................................................................................ 114
16.3.8. Configurando a Simulao.................................................................. 115
16.3.8.1. Solver Page.................................................................................... 116
16.3.9. Executando uma Simulao............................................................... 117
16.4. Exemplos Prticos....................................................................................... 118
16.4.1. Viso geral do Simulink....................................................................... 118
16.4.2. Simulando um salto de bungee jumping........................................... 123
Apndice A. Lista de Exerccios.......................................................................126
Referncias Bibliogrficas................................................................................127
















Introduo ao MATLAB

5
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 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. A tcnica de soluo de problemas que
apresentamos trabalhos para problemas de engenharia e pode ser seguida de
perto para resolver problemas em outras reas; mas, supe-se que estamos
usando o MATLAB para ajudar a resolv-los.

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 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.1.
Soluo de Problemas

Introduo ao MATLAB

6



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 1.2. Usando o Teorema de
Pitgoras, podemos calcular a distncia d com a seguinte equao:

2 1 s s d + =

( ) ( )
2 2
5 7 1 4 + = d

13 = d

61 , 3 = d


Introduo ao MATLAB

7




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.




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.




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


Introduo ao MATLAB

8
1.2. Apresentao

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.

Apresentao

Introduo ao MATLAB

9
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 e
sistemas de propulso ou subsistemas.

Bioinformatics Toolbox
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 tri-dimensionais).


Introduo ao MATLAB

10


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



Introduo ao MATLAB

11
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 teclas UP e DOWN podem ser usadas para se encontrar comandos
usados anteriormente, para nova execuo ou reedio. No caso de pretender
efetuar o clculo de:

5
tan log


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 faam uso de um argumento em ngulo so
calculadas com o dito argumento expresso 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

Introduo ao MATLAB

12
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 1 = i usada para representar nmeros
complexos. A varivel 1 = j pode ser usada em vez de i nas operaes
aritmticas com nmeros complexos por aqueles que a preferem. Estas
variveis predefinidas podem ser inadvertidamente 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).































Introduo ao MATLAB

13


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

A=
[1 2 3
4 5 6
7 8 7]

Introduo

Introduo ao MATLAB

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


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


Introduo ao MATLAB

15

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

Seleciona da linha 1 at a linha 3 e todas as colunas da matriz A atual.


2.3. Decarao 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:

>> varivel = expresso


Introduo ao MATLAB

16
Ou simplesmente:

>> expresso

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, assim a e A no so as mesmas variveis. 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:


Introduo ao MATLAB

17
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
sufixo. A seguir so 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 possuem o mesmo valor numrico, isto , 0.25.

Introduo ao MATLAB

18
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:

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


Introduo ao MATLAB

19
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:

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











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

short 5 dgitos significativos
short e 5 dgitos significativos em notao cientfica
long 15 dgitos significativos
long e 15 dgitos significativos em notao cientfica
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

Introduo ao MATLAB

20
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 Help (Ajuda)

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,

>> help plot
fornece uma lista de todos os comandos relacionados com grficos
bidimensionais. A mesma sintaxe usada para obter informaes sobre um
comando especfico.

2.9. 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;
- 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 respectivo help.

Introduo ao MATLAB

21


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:
- Transposta;
- Adio;
- Subtrao;
- Multiplicao;
- Diviso direita;
- Diviso esquerda;
- Potenciao;

A seguir cada uma destas operaes apresentada com maior detalhe.

3.1.1 Transposta

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.




Para obter simplesmente a transposta de Z deve-se usar Z., como
mostra o exemplo:
>>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
>>Z
1
= Z'
Z
1
=
1.0000- 5.0000i 3.0000- 7.0000i
2.0000- 6.0000i 4.0000- 8.0000i

Manipulao de matrizes e vetores

Introduo ao MATLAB

22



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

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
>>Z2 = Z.'
Z2 =
1.0000+ 5.0000i 3.0000+ 7.0000i
2.0000+ 6.0000i 4.0000+ 8.0000i

Introduo ao MATLAB

23

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.





3.2.2 Multiplicao e Diviso

Introduo ao MATLAB

24

A multiplicao de conjuntos indicada por ".*". Se A e B so matrizes
com as mesmas dimenses, ento A.*B indica um conjunto cujos elementos
so simplesmente o produto dos elementos individuais de A e B.
As expresses A./B e A.\B formam um conjunto cujos elementos so
simplesmente os quocientes dos elementos individuais de A e B. Assim:

>> a=[1 2 3];
>> b=[2 4 6];
>> x=a./b >> x=b./a
x = x =
0.5000 0.5000 0.5000 2 2 2

3.2.3 Potenciao

A potenciao de conjuntos indicada por ".^". A seguir so mostrados
alguns exemplos utilizando os vetores x e y. A expresso:
A potenciao pode usar um escalar:

>> x=[1 2 3];
>> a=x.^3
a =
1 8 27


Ou a base pode ser um escalar:

>> 2.^x
ans =
1 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:

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

Introduo ao MATLAB

25

>> y = 0 : pi/4 : pi
y =
0 0.7854 1.5708 2.3562 3.1416

Tambm so possveis incrementos decrescentes (negativos).
Pode-se, tambm, gerar vetores linearmente espaados fazendo uso da
funo linspace. Por exemplo,

>> k = linspace (0, 1, 6)
k =
0 0.2000 0.4000 0.6000 0.8000 1.0000

Cria um vetor linearmente espaado de 0 a 1, contendo 6 elementos.
Ao pretender-se um espaamento logartmico desde o valor inicial 10
x1

at ao valor final 10
x2
do vetor composto por k elementos, a funo a utilizar
ser:

>> logspace (x1 , x2 , k)

A exceo para essa funo quando x2 = . Caso isso ocorra, os k
pontos estaro espaados desde 10
x1
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):

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


Introduo ao MATLAB

26
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 devio 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).

>>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,3) + A(3,1)
A =
1 2 3
4 5 6
7 8 10


Um subscrito pode ser um vetor. Se X e V so vetores, ento X(V)
[X(V(1)), X(V(2)), .... X(V(n))]. Para as matrizes, os subscritos vetores permitem
o acesso s submatrizes contnuas e descontnuas. Por exemplo, suponha que
A uma matriz 10x10.


Introduo ao MATLAB

27
A =
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100

>> A(1:5,7:10)
ans =
7 8 9 10
17 18 19 20
27 28 29 30
37 38 39 40
47 48 49 50

uma submatriz 5x4 que consiste nas primeiras cinco linhas e nas
ltimas quatro colunas.
Utilizando os dois pontos no lugar de um subscrito denota-se todos
elementos da linha ou coluna. Por exemplo,

>> A(1:2:5,:)
ans =
1 2 3 4 5 6 7 8 9 10
21 22 23 24 25 26 27 28 29 30
41 42 43 44 45 46 47 48 49 50


uma submatriz 3x10 que consiste da primeira, terceira e quinta linhas
e todas colunas da matriz A.


3.5 Manipulao de Matrizes


Do mesmo modo, esto implementadas no cdigo diversas funes que
permitem a manipulao e construo de matrizes genricas.


3.5.1 Matriz Diagonal ou Diagonal de uma Matriz


Se x for um vetor, diag(x) ser a matriz diagonal com x na diagonal;


>> x=[1 2 3 1 -1 4];
>> diag(x)
ans =
1 0 0 0 0 0

Introduo ao MATLAB

28
0 2 0 0 0 0
0 0 3 0 0 0
0 0 0 1 0 0
0 0 0 0 -1 0
0 0 0 0 0 4

Se A for uma matriz quadrada, ento diag(A) ser um vetor cujos
componentes so os elementos da diagonal de A.

>> A=[3 11 5; 4 1 -3; 6 2 1]
A =
3 11 5
4 1 -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
triangular superior e triangular inferior de uma matriz quadrada. So elas,
respectivamente:

triu(A);
tril(A);

3.5.3 Redimensionamento de Matrizes

Dada a matriz A composta por m linhas e n colunas A(m,n); poder ser
redimensionada, atravs do comando reshape (A,n,m), desde que o produto
de mxn se mantenha constante.

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


Introduo ao MATLAB

29
Os elementos da matriz A podero ser rodados 90 no sentido anti-
horrio (ou rodados k*90) 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





















4. Funes
Funes

Introduo ao MATLAB

30

4.1 Funes Escalares

Algumas funes no MATLAB operam essencialmente sobre escalares,
mas operam sobre cada elemento se aplicadas a uma matriz. As funes
escalares mais comuns so:

Exp Exponencial;
Abs Valor absoluto;
Log Logaritmo natural;
Log10 Logaritmo base 10;
sqrt Raiz quadrada;
sin Seno;
asin Arco seno;
cos Coseno;
acos Arco Coseno;
tan Tangente;
atan Arco Tangente;
round Arredondamento ao inteiro mais prximo;
floor Arredondamento ao inteiro mais prximo na
direo de menos infinito;
ceil Arredondamento ao inteiro mais prximo na
direo de mais infinito;
rem Resto da diviso;
sign Para cada elemento de x, sign(x) retorna 1 se o
elemento maior que zero, 0 se igual a zero
e
-1 se ele menor que zero

4.2. Funes Vetoriais

Opera com elementos de colunas desejadas, caso seja desejado operar
com linhas ao invs de colunas deve-se transpor a matriz e ento oper-la com
a sua coluna que antes era sua linha. Abaixo esto alguns exemplos de
funes:



Introduo ao MATLAB

31


4.3 Funes Matriciais


Uma boa aplicao do MATLAB suas funes matriciais. Dentre as
mais usadas esto essas:


eig Valores prprios e vetores prprios;
chol Fatorizao de Cholesky;
Svd Decomposio em fator singular;
inv Inversa;
lu Fatorizao triangular LU;
qr Fatorizao ortogonal QR;
hess Forma de Hessenberg;
schur Decomposio de Schur;
expm Matriz Exponencial;
sqrtm Matriz de raiz quadrada;
poly Polinmio caracterstico;
det Determinante;
size Tamanho;
norm Norma 1, Norma 2, Norma F, Norma
Infinita;
cond Nmero de condio na norma 2;
rank Nmero de linhas linearmente
independentes.


Vamos dar um exemplo para ilustrar algumas funes:

max Valor mximo dos elementos de cada
coluna;
sum Soma dos elementos de cada coluna;
Median Valor mediano dos elementos de cada
coluna;
any Devolve 1 se qualquer elemento da coluna
for diferente de 0;
min Valor mnimo dos elementos de cada
coluna;
prod Produto dos elementos de cada coluna;
all Devolve 1 se todos os elementos de cada
coluna forem diferentes de 0;
sort Organizao dos elementos da coluna por
ordem decrescente de valor;
Std Desvio padro dos elementos de cada
coluna.

Introduo ao MATLAB

32
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



























5. Polinmios

Polinmios

Introduo ao MATLAB

33
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 = s -
6s -72s -27) 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 (s)
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.

x+2x+4=0 ax+2ax+4a=0a ax+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.
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



Introduo ao MATLAB

34







































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

Grficos

Introduo ao MATLAB

35
6.1 Grficos X-Y

Comandos de gerao de grficos bidimensionais:

plot Grfico linear.
loglog Grfico em escala logartmica.
semilogx Grfico em escala semi-logartmica (eixo x).
semilogy Grfico em escala semi-logartmica (eixo y).
fill Desenhar polgono 2D.
polar Grfico em coordenadas polar.
bar Grfico de barras.
stem Grfico de seqncia discreta.
stairs Grfico em degrau.
errorbar Grfico do erro.
hist Histograma.
rose Histograma em ngulo.
compass Grfico em forma de bssola.
feather Grfico em forma de pena.
fplot Grfico da funo.
comet 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.
- 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. Exploremo-lo em um
exemplo mais detalhado.
Primeiramente, preparemos os dados, escolhendo o domnio e as
funes a serem mostradas:

>> x = 0:0.3:30;

Introduo ao MATLAB

36
>> 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).
Vejamos resumidamente os principais tipos de linhas e cores:




6.1.1 Acessrios para os Grficos

Definamos agora os limites dos eixos, pelo comando axis. Linhas em
grelha podem ser ativadas pela propriedade grid:

>> axis([0 20 -1 1]);
>> grid on



Introduo ao MATLAB

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


Introduo ao MATLAB

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

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

6.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 geralmente dado
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);


Introduo ao MATLAB

39


Transformao retangular / polar ; polar / retangular: As vezes,
devido a praticidade interessante transformarmos coordenadas de um
sistema para outro.
As equaes abaixo relacionam os sistemas polar e retangular:
polar / retangular _________________________ x = r cos q ; y = r sin q ;
retangular / polar _________________________ r = x + y ; q = atan (y/x);

6.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 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 - x- y
1 = |x + y + z|

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);


Introduo ao MATLAB

40




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

















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

Exemplo: Rotao horizontal:

plot3 Exibio do grfico em espao 3D.
fill3 Desenhar polgono 3D.
comet3 Exibir em 3D com trajetria de cometa.
contour Exibir contorno 2D.
contour3 Exibir contorno 3D.
clabel Exibir contorno com valores.
quiver Exibir gradiente.
mesh Exibir malha 3D.
meshc Combinao mesh/contour.
surf Exibir superfcie 3D.
surfc Combinao surf/contour.
surfil Exibir superfcie 3D com iluminao.
slice Plot visualizao volumtrica.
cylinder Gerar cilindro.
sphere Gerar esfera.

Introduo ao MATLAB

41
f(x ,y) = z = 1 - x- y
1 = |x + y + z|

Soluo:























Exemplo: Rotao vertical:

f(x ,y)= z = _1 - x- y
1 = |x + y + z|

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]);
>> [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]);


Introduo ao MATLAB

42

































Introduo ao MATLAB

43





7. Programao
7.1 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 M-File para criar um novo arquivo ou Open M-File para editar
um arquivo .m j existente, a partir do menu File.
Os arquivos podem, tambm, ser editados fora do MATLAB utilizando
qualquer editor de texto. Para isso, basta salvar os arquivos com a extenso
.m.
Para executar um programa do tipo M-File, deve-se selecionar Run
Script, tambm a partir do menu File.
Existem alguns comandos e declaraes especiais para serem usadas
nos arquivos.
Alguns comandos importantes para se trabalhar com arquivos.m so:



% Usado para inserir comentrios no texto;
clear Apaga todo os dados da memria;
input Usado quando se deseja adicionar um dado
ao problema pela janela de comando;
pause Causa uma pausa na execuo do
programa at que uma tecla seja digitada;
clc Limpa a janela de comando
figure(n) Mostra a janela grfica de nmero n;
close all Fecha todas as janelas grficas.


7.2 Operadores Lgicos e Relacionais

Os operadores usados para a comparao de duas matrizes com as
mesmas dimenses so expressos por:


7.2.1 Operadores Relacionais
Programao

Introduo ao MATLAB

44

Smbolo Descrio
< Menor
< = Menor ou igual
> Maior
> = Maior ou igual
= = Igual
~ = Diferente

A comparao feita entre os pares de elementos correspondentes e o
resultado uma matriz composta de nmeros um(1) e zero(0), representando
respectivamente verdadeiro e falso. Por exemplo:

2+2 ~ = 4
ans =
0

Observao: Apenas os operadores = = e ~ = testam tanto a parte
real como a imaginria, os demais, apenas a parte real.

x=5; y=3*(x= =3)
y =
0
x=5; y=3*(x= =5)
y =
3
x=5; y=3*(x~ =5)
y =
0
x=5; y=3*(x~ =3)
y =
3

7.2.2 Operadores Lgicos

Smbolo Funo
& AND
| OR
~ NOT
xor XOR



Esses operadores operam da mesma forma que os operadores
relacionais, dando como resposta verdadeiro ou falso. Exemplo:



INPUTS AND OR XOR

Introduo ao MATLAB

45
A B & | xor
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

A = [ 1 0 1
0 0 0
1 1 1]
A =
1 0 1
0 0 0
1 1 1

B= [ 0 1 0
0 0 1
-1 10 0]

B =
0 1 0
0 0 1
1 1 0
A&B
ans =
0 0 0
0 0 0
1 1 0

Note que foi aplicado o operador lgico AND e esse comparou cada
elemento da matriz A com cada elemento da matriz B, sendo que sua resposta
pode ser apenas 0 ou 1. Sendo que qualquer nmero diferente de 0, inclusive
os negativos, considerado 1 pois o MATLAB trabalha na linguagem binria.
Os operadores lgicos possuem a precedncia mais baixa relativamente
aos operadores aritmticos e relacionais.
A precedncia entre os operadores lgicos se d da seguinte maneira:

NOT Maior precedncia;
AND e OR Tm igual precedncia aps NOT;

7.3. Comandos For While - 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 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.

7.3.1. Comando If


Introduo ao MATLAB

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




7.3.2. Ciclo For


Introduo ao MATLAB

47
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:
1. i =1 realizado antes do ciclo comear.
2. Testando a condio que controla o ciclo (i<=5). Se for o ciclo
executado.
3. Se o teste do ciclo for falso o ciclo termina devido ao comando end.

Exemplo:

for i = 1:8
for j = 1:8,
A(i,j) = i + j;
B(i,j) = i - j;
end
end
C= A + B
C =
2 2 2 2 2 2 2 2
4 4 4 4 4 4 4 4
6 6 6 6 6 6 6 6
8 8 8 8 8 8 8 8
10 10 10 10 10 10 10 10
12 12 12 12 12 12 12 12
14 14 14 14 14 14 14 14
16 16 16 16 16 16 16 16

Neste exemplo 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


7.3.3 Ciclo While

No ciclo while apenas a condio testada. Vamos fazer um exemplo
agora utilizando o arquivo.m:
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

Introduo ao MATLAB

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


7.4. Declarando Funes


Para criarmos funes necessitamos trabalhar na janela de M-Files, para
tanto, como voc j sabe, v em FileNewM-File. Antes de apresentarmos
vamos dar as 3 regras principais para a criao de funes no MATLAB:
1. Deve-se ter ao menos o nome da funo, a varivel de entrada e a
funo f.
2. O arquivo .m deve ser salvo com o mesmo nome da funo.
3. 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 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 =

Introduo ao MATLAB

49
1

No caso, est digitado exatamente o valor de um ano em horas, portanto
a resposta 1.


Aplicao Soluo de Problemas:
Fibras ticas

Se a luz est direcionada para o extremo de uma longa haste de vidro
ou plstico, a luz ser totalmente refletida pelas paredes, ziguezagueando e
segue adiante at chegar a outra extremidade. Este interessante fenmeno
tico pode ser usado para transmitir luz e imagens regulares, de um lugar para
outro. Se guia de luz, a luz seguir a forma da haste e emergir somente na
extremidade, como mostramos na figura a seguir:



A fibra tica uma fibra de vidro muito fina. Se os extremos das fibras
so polidos e o arranjo espacial o mesmo em ambos extremos (um feixe
coerente), a fibra pode ser usada para transmitir uma imagem, e o feixe
chamado condutor de imagem. Se as fibras no tm o mesmo arranjo para
ambos extremos (feixe incoerente), a luz transmitida em vez da imagem, e
por esta razo chamada guia de luz. Por causa da flexibilidade das fibras
ticas, as guias de luz e condutores de imagens so usadas em instrumentos
projetados para permitir a observao visual de objetos ou reas que de outro
modo seriam inacessveis. Por exemplo, um endoscpio um instrumento
usado por fsicos para examinar o interior do corpo de um paciente com
somente um pequeno corte. Um endoscpio usa uma fibra tica para transmitir
a luz necessria dentro do corpo de um paciente. As fibras ticas podem ser
usadas para transmitir feixes de luz LASER, o qual pode ser usado para
desobstruir artrias, quebrar pedras nos rins, e limpar cataratas.
Este fenmeno de reflexo total interna origina-se da lei de Snell e
depende unicamente dos ndices de refrao para os material considerados
para guias de luz. Um guia de luz composto de dois materiais o ncleo
central e o material que o envolve, denominado de blindagem. O material que
compe o ncleo tem o ndice de refrao mais alto que o meio que o envolve.
Quando a luz incide em uma interface entre dois meios com ndices de refrao
diferentes, parte dela refletida a outra parte refratada. A quantidade de luz

Introduo ao MATLAB

50
refratada depende dos ndices de refrao dos materiais e o ngulo de
incidncia da luz. Se a luz incidente na interface entre dois meios provm de
um material com maior ndice de refrao, ento parte da luz atravessa a
interface. O ngulo de incidncia onde a luz totalmente refletida pela
superfcie chamado de ngulo crtico qc. Como o ngulo crtico depende dos
ndices de refrao de dois materiais, podemos calcular este ngulo e
determinar se a luz que entra em uma haste a um ngulo particular
permanecer no interior da mesma. Suponha que n2 o ndice de refrao do
meio envolvente, e n1 o ndice de refrao da haste. Se n2 maior que n1, a
haste no transmitir luz; caso contrrio, o ngulo crtico pode ser determinado
pela equao:


2 1
n n sen
c
+ =


Escreva um programa MATLAB que determina se a luz ser ou no
transmitida por dois materiais que forma um guia. Suponha que um arquivo de
dados ASCII denominado indices.dat contenha o nmero de possveis ndices
de refrao da fibra seguido pelo ndice de refrao do meio que o envolve. O
programa deve determinar se os materiais formaro um guia de luz e, ento,
para quais ngulos a luz entra no guia.



1. ENUNCIADO DO PROBLEMA

Determine se os materiais especificados formaro ou no um guia de
luz. Se eles no formarem, calcule os ngulos para o qual a luz pode entra na
haste e ser transmitida.



2. DESCRIO ENTRADA \ SADA

Como mostramos na figura abaixo, a entrada ao programa um arquivo
de dados contendo os ndices de refrao para os guias de luz em potencial. A
sada uma mensagem indicando se a luz ou no transmitida e o ngulos
para quais pode entrar no guia.

Introduo ao MATLAB

51

3. EXEMPLO MANUAL

O ndice de refrao do ar 1,0003 e o ndice do vidro 1,5. Se
formarmos um guia de luz de vidro envolvido pelo ar, o ngulo crtico qc pode
ser calculado como mostramos a seguir:

( ) = =

=

82 , 41 66687 , 0
5 , 1
003 , 1
1 1
1
2 1
sen sen
n
n
sen
c


O guia de luz transmitir luz para todos os ngulos de incidncia maiores
que 41,820 .

4. SOLUO DO MATLAB


5. TESTANDO




Aplicao Soluo de Problemas:
Equilbrio de Temperatura

O projeto de novos materiais para o aperfeioamento das caractersticas
do fluxo de ar acerca dos veculos envolve a anlise dos materiais para no
somente o fluxo de ar mas tambm para propriedades como a distribuio de
temperatura. Neste problema, consideramos a distribuio em uma fina placa
metlica tal que esta alcance um ponto de equilbrio trmico. A placa
projetada para ser usada em uma aplicao na qual as temperaturas de todos
os quatro lados da placa metlica estejam a temperaturas constantes ou a
temperaturas isotrmicas. A temperatura para os outros pontos da placa
uma funo da temperatura dos pontos envolventes. Se considerarmos as
placas para serem semelhantes a uma grade, ento uma matriz poderia ser

Introduo ao MATLAB

52
usada para armazenar as temperaturas dos pontos correspondentes sobre a
placa. A figura abaixo mostra uma grade para uma placa que est sendo
analisada com seis medidas de temperatura ao longo dos lados e oito
temperaturas ao longo das partes superior e inferior. Os pontos isotrmicos
nos quatros lados so sombreados. Um total de 48 valores de temperaturas
est representado.





Grade de uma placa metlica




As temperaturas isotrmicas sobre os quatro lados seriam especificadas;
supomos que os lados superior, esquerdo e direito so mantidos mesma
temperatura enquanto que o lado inferior da placa mantida a uma
temperatura diferente. Os pontos restantes so inicialmente selecionados para
uma temperatura arbitrria, normalmente zero. A nova temperatura de cada
ponto interno calculado como a mdia das quatro temperaturas envolventes
(veja a figura a seguir) e dada por:


4
4 3 2 1
0
T T T T
T
+ + +
=






Introduo ao MATLAB

53



Depois de calcular a nova temperatura para um ponto interno, a
diferena entre a antiga e a temperatura recente calculada. Se a mudana
de temperatura for maior que algum valor de tolerncia especificado, a placa j
no est em equilbrio trmico, e o processo inteiro repetido.

Usamos as duas matrizes para as temperaturas, uma das antigas
temperaturas e uma das recentes temperaturas. Precisamos de duas matrizes
porque supomos que a temperatura muda para todos os pontos que ocorrem
simultaneamente, sempre que as calculamos. Se usarmos uma nica matriz,
estaramos atualizando informao sem que antes estivssemos com a
informao antiga. Por exemplo, suponha que estamos calculando a nova
temperatura para a posio (3, 3). O novo valor a mdia das temperaturas
nas posies (2, 3), (3, 2), (3, 4), e (4, 3). Quando calculamos a nova
temperatura para a posio (3, 4), novamente calculamos uma mdia, mas
queremos usar o antigo valor na posio (3, 3), e no o seu valor atualizado.
Portanto, usamos uma matriz de temperaturas antigas para calcular uma matriz
de novas temperaturas e para determinar se alguma temperatura muda acima
da tolerncia. Quando movemos as novas temperaturas para o conjunto
antigo. Quando nenhuma das temperaturas muda acima da tolerncia,
supomos que o equilbrio foi alcanado, e imprimimos as temperaturas finais.

1. ENUNCIADO DO PROBLEMA

Determine os valores de equilbrio para uma placa de metal com lados
isotrmicos.

2. DESCRIO ENTRADA / SADA


Introduo ao MATLAB

54
Como mostra a figura abaixo, a entrada o tamanho da grade da placa,
as temperaturas isotrmicas e o valor de tolerncia. A sada o grupo de
temperaturas de equilbrio para a placa de metal.




3. EXEMPLO MANUAL

Tenha a certeza que compreende o processo, examinamos um simples
caso, estudando cada iterao. Supondo que a matriz contm quatro linhas e
quatro colunas. As temperaturas isotrmicas so 100 e 50, e ns iniciamos
todos os pontos restantes do zero. Usamos uma tolerncia de 40. O grupo
inicial de temperaturas e as sucessivas iteraes ao equilbrio trmico so
mostradas a seguir:

Temperaturas Iniciais
50 50 50 50
100 0 0 100
100 0 0 100
100 100 100 100


Primeira Iterao
50 50 50 50
100 5 , 37 5 , 37 100
100 50 50 100
100 100 100 100


Segunda Iterao
50 50 50 50
100 375 , 59 375 , 59 100
100 875 , 71 875 , 71 100
100 100 100 100



Introduo ao MATLAB

55
Como nenhuma das temperaturas alteradas entre a primeira e segunda
interao ultrapassa a tolerncia de 400, as temperaturas na segunda iterao
esto tambm em equilbrio.


4. SOLUO DO MATLAB

5. TESTANDO







































Introduo ao MATLAB

56


8. Sistemas de Equaes Lineares

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

Sistemas de Equaes Lineares


Introduo ao MATLAB

57




Equaes que representam duas retas que se interceptam podem ser
facilmente identificadas porque possuem diferentes coeficientes angulares.

Exemplo:

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;


Introduo ao MATLAB

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

8.2. Soluo usando operao com matrizes

Considerando o sistema seguinte de trs equaes com trs variveis
desconhecidas.

3x +2y -z = 10
-x +3y +2z = 5
x -y -z = -1

Podemos reescrever os sistemas de equaes usando as seguintes matrizes:

A = 3 2 -1 x = x B = 10
-1 3 2 y 5
1 -1 -1 z -1

Usando multiplicao de matrizes, o sistemas de equaes pode ser
escrito na forma:

Ax = B

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


Introduo ao MATLAB

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

8.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 x = x B = 10
-1 3 2 y 5
1-1 -1 z -1

Ento A*x = B. Suponha que multiplicamos ambos os lados da equao
da matriz por A^-1 ento temos:

A^-1*A*x =A^ -1*B]

Mas A^-1*A igual a matriz identidade I, ento temos:

I*x=A^-1*B ou
x = A^-1*B;

No MATLAB podemos calcular essa expresso usando o comando:

X = inv(A)*B;



Aplicao soluo de problemas:
Anlise de circuito eltrico


A anlise de circuito eltrico freqentemente envolve o encontro de
solues de conjunto de equaes. Essas equaes so usadas para
descrever as correntes que entram e que saem dos ns, ou a voltagem em
cada malha.
A figura abaixo nos mostra um circuito com duas fontes de tenso. As trs
equaes que descrevem a tenso ao redor dos trs laos so:


Introduo ao MATLAB

60



( R1+R2 )i1 -R2i2 +0i3 = V1

-R2i1 +(R2+R3+R4) i2 -R4i3 = 0

0i1 -R4i2 +(R4+R5)i3 = -V2


Problema: Calcular as trs correntes do circuito da figura 8.2
considerando os valores da figura para R1, R2, R3, R4, R5, V1 e V2.

Entrada / Sada:




3. SOLUO NO MATLAB

4. TESTANDO




Introduo ao MATLAB

61


9. Cculo
9.1. Zeros de Funes

O MATLAB encontra zeros de funes usando o comando fzero. A
funo, da qual deseja-se encontrar os zeros, deve ser 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;

Clculo

Introduo ao MATLAB

62



9.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 funo fminbnd.


>> [xmin ymin] = fminbnd('func1',0,2*pi)
xmin =
5.49778788018538
ymin =
-1.41421356237271



9.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 ) ( a x .
Exemplo: Achar o limite abaixo:
a.
2
2
2
1
1
lim
x
x
x

+



>> syms x
>> limit(((1+x^2)/(1-x^2)),x,2)

ans=

-5/3


9.4. Limites esquerda e direita


Introduo ao MATLAB

63
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 o limite abaixo:

a.
3
1
) 1 (
1
lim

x
x
x

b.
3
lim
3
+

x
x
x


>> syms x
>> limit((x/(x-3)),x,3,right)

ans=

inf

>> limit(((x+1)/(x-1)^3),x,1,left)

ans =

-inf




























Introduo ao MATLAB

64



10. Integrao Numrica

10.1. Integrais

Na integrao de funes, o comando que o MATLAB reconhece para
tal operao int(f(x)).
Exemplo: Integrar as funes abaixo:

a.

dx x x
2
) 1 (
b. dx
x
x x

+
2
3 4
7
5 3 2


Utilizando o comando acima explicado:

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


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

a.


2
0
2
) 3 (
2
dx
x
x

b.


1
0
2
) 3 2 1 ( dx x x

>> syms x
>> it(((2*x)/(x-3)^2),0,2)

ans =
4-2*log(3)

>> int((1-2*x-3*x^2),0,1)
Integrao Numrica

Introduo ao MATLAB

65

ans =
-1


10.3. Integrais Definidas (outros mtodos)


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.

10.2.1 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:


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.



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.


Introduo ao MATLAB

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



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.


10.2.2 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

Introduo ao MATLAB

67
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 10-3. Neste caso, desnecessrio definir tol no comand window.

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

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.


10.2.3 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:


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 1

Seja a funo f(x) = | x |. Resolva as integrais abaixo usando o MATLAB e
compare com os resultados obtidos a mo.


Introduo ao MATLAB

68
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



Problema Aplicado:
Anlise de Escoamento de um leo num Oleoduto

A anlise do fluxo de um lquido em duto tem aplicao em muitos
sistemas diferentes, incluindo o estudo em veias e artrias no corpo humano, o
sistema hidrulico de uma cidade, o sistema de irrigao de uma fazenda, o
sistema de jato de tinta de uma impressora, etc. O atrito de um fluxo ao passar
num oleoduto circular gera a chamada velocidade de perfil no fluido.
O leo que est em contato com as paredes do duto no est se
movendo na mesma velocidade que o leo no centro do fluido. O diagrama
abaixo mostra como a velocidade do leo varia de acordo com o dimetro do
duto e define as variveis usadas para esta anlise:



A velocidade de perfil definida pela seguinte equao:



onde n um nmero inteiro entre 5 e 10 que define o contorno do
escoamento do leo. A velocidade mdia de escoamento do leo pode ser
calculada integrando-se a velocidade de perfil no intervalo de 0 a r0.


Introduo ao MATLAB

69

Os valores de vmax e de n podem ser medidos experimentalmente, e o
valor de r0 o prprio raio do tubo. Escreva um programa no MATLAB para
integrar a velocidade de perfil e assim determinar a velocidade mdia do leo
no duto.

Mtodo Para a Resoluo do Problema

1. O PROBLEMA EM SI
Calcular a velocidade mdia do leo em um duto.

2. DESCRIO DA ENTRADA E SADA
Os dados experimentais que sero tomados como entrada em nosso
programa so a velocidade mxima vmax, o raio do duto r0, e o valor de n.A
sada de nosso programa ser a velocidade mdia do leo no duto.




3. FORMA QUE AJUDAR NA QUESTO

Plotar um grfico da funo r (1 - r / r0) 1 / n e estimar o valor da integral
atravs do clculo da rea sob a curva.


4. SOLUO NO MATLAB











Introduo ao MATLAB

70




11. Diferenciao Numrica

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.



11.1. Derivao por expresses de diferenas

As tcnicas de diferenciao numrica estimam a derivada de uma
funo em um ponto
k
x atravs da aproximao da inclinao da reta tangente
curva neste ponto usando valores que a funo assume em pontos perto de
k
x . Essa aproximao pode ser feita de vrios modos.
Assim, dependendo dos pontos, temos trs tcnicas:

Diferenciao Numrica

Introduo ao MATLAB

71




A derivada segunda pode ser achada atravs da frmula:






11.2. Comando diff

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:

a. x x x f 3 2 ) (
2
+ =
b.
x
x f

=
3
1
) (

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)^3


Introduo ao MATLAB

72
11.3. Derivadas Superiores

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:

a.
x
x f

=
3
1
) (
b.
x
x x f
1
) ( =

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


11.4. Derivadas Trigonomtricas:

Exemplo: Derivar as seguintes funes:

a. ) sen( ) ( x x f =
b. ) 2 cos( ) ( x x f =
c. ) 5 3 tan( ) ( + = x x f

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


Introduo ao MATLAB

73



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

12.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 : 0317 . 0 1293 . 20 8108 . 9
2
+ x x . 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')

Ajuste de Curvas e Interpolao

Introduo ao MATLAB

74


12.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')


0 2 4 6 8 10 12
5
10
15
20
25
30
35
Temperaturas
Hora
G
r
a
u
s
C
e
l
c
i
u
s



Introduo ao MATLAB

75
Para estimar a temperatura numa determinada hora, usamos a funo
interp1.

Exemplo:

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:

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, da os resultados serem deferentes. 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')


Introduo ao MATLAB

76
0 2 4 6 8 10 12
5
10
15
20
25
30
35
Temperaturas
Hora
G
r
a
u
s
C
e
l
c
i
u
s




Aplicao Soluo de Problemas : Brao Robtico


Assim como este sistema de manipulao existem vrios outros usados
em vrios tipos de robs, que se utilizam de um avanado sistema de controle
para guiar um brao robtico para a posio desejada. Um dos anseios de um
sistema de controle que o caminho percorrido pelo brao ao se mover de um
local para o outro, ao pegar ou soltar um objeto, seja feito regularmente,
evitando assim possveis trancos durante o percurso.

O caminho percorrido pelo brao ser definido atravs de coordenadas
de pontos por onde o brao ir se mover. Ento podemos utilizar a interpolao
para definir uma curva suave, regida por estas coordenadas, para mostrar o
comportamento desse brao ao longo de uma trajetria.

Uma parte importante no desenvolvimento do algoritmo ou da soluo
deste problema est na considerao de situaes especiais. Neste problema
ns assumimos que pontos nos quais o brao ir passar precisaro estar na
ordem para mover o brao na trajetria desejada que ser: posio inicial,
posio intermediria, posio para pegar o objeto, posio para colocar o
objeto no local desejado e finalmente posio inicial. E, consideraremos
tambm que cada ponto conter trs coordenadas: x, y(que sero as
coordenadas relativas a posio inicial), e uma terceira coordenada dizendo o
cdigo da respectiva posio, de acordo com a tabela abaixo:


Introduo ao MATLAB

77


Queremos ento utilizar uma spline para visualizarmos o comportamento
do brao robtico.

Mtodo para a resoluo do problema

1. PROBLEMA EM SI
Desenhar uma curva suave utilizando a interpolao por spline que pode
ser usada para guiar um brao robtico para uma determinada trajetria.

2. DESCRIO DA ENTRADA E DA SADA
A entrada constituda de um arquivo contendo as coordenadas x e y
dos pontos pelos quais o brao robtico dever passar.
A sada do programa ser a curva correspondente ao comportamento do
rob ao percorrer estes pontos


3. SOLUO NO MATLAB

4. TESTANDO











Introduo ao MATLAB

78

13. Anlise Polinomial


Este captulo traz uma srie de comandos no MATLAB para a anlise
polinomial. Primeiro vamos discutir meios de avaliar os polinmios e como
trabalhar o seu 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.

13.1. Avaliao do polinmio

Como exemplo vamos tomar o seguinte polinmio:

( ) 2 . 5 5 . 0 3
3 4
+ = x x x x f

Se x assumir valores escalares, podemos escrever:

f(x) = 3*x ^4 - 0.5*x ^3 + x - 5.2;

Se x for um vetor ou uma matriz devemos escrever:

f(x) = 3* x .^4 - 0.5* x .^3 + x - 5.2;

onde o tamanho da matriz f ser o mesmo da matriz x.

13.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);

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.

Anlise Polinomial

Introduo ao MATLAB

79
Supondo que queiramos o valor da funo ( ) 5 . 2 5 . 2 3
2 3 5
+ = x x x x g ,
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:

f = polyvalm(a,x);

sendo a matriz x, uma matriz quadrada.

13.3. Operaes Aritmticas

Podemos trabalhar com polinmios armazenando seus coeficientes em
vetores, e trabalhar apenas com estes vetores.

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

( ) 4 . 2 3
2 4
+ = x x x x g

( ) 16 5 2 4
2 3
+ = x x x x h

( ) ( ) ( ) x h x g x som + =

( ) ( ) ( ) x h x g x sub =

Para multiplicar um polinmio por um escalar (sendo ele positivo ou
negativo), basta definir o polinmio pelos seus coeficientes e efetuar a
multiplicao.

Multipliquemos o polinmio:

( ) ( ) x f x g 3 =
No MATLAB:


Introduo ao MATLAB

80
f = [ 3,-6,1];
g = 3 * f


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

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


Aplicao Soluo de Problemas: Bales Meteorolgicos

Bales so usados para reunir problemas de temperatura e presso nas
diferentes altitudes da atmosfera. O balo consegue ganhar altitude porque
nele est presente um gs de menor densidade que o prprio ar ao seu redor.
Durante o dia, devido a presena da luz solar, o gs Hlio se expande, se
tornando mais denso que o ar e assim fazendo com que o balo suba. Durante
a noite, o gs Hlio esfria e fica mais denso, e com isso o balo desce a baixa
altitude. No dia seguinte o sol novamente esquenta o gs e o balo sobe. Com
o passar dos dias, esse processo gera vrios valores de altitude que
geralmente podem ser aproximados por uma equao polinomial. Assumindo
que o seguinte polinmio represente a altitude em metros, durante as primeiras
48 horas de um balo:

( ) 220 4100 380 12 12 . 0
2 3 4
+ + + = t t t t x h

onde t medido em horas. O modelo polinomial para velocidade, obtido
atravs da derivada, em metros por hora do balo o seguinte:

( ) 4100 760 36 48 . 0
2 3
+ + = t t t x v

Mtodo para a resoluo do problema

1. PROBLEMA EM SI:

Introduo ao MATLAB

81

Usando o polinmio dado fazer o grfico da altitude e da velocidade do
balo em questo. E achar tambm a mxima altitude por ele atingida.

2. DIAGRAMA ENTRADA/SADA:

Neste diagrama mostrado que no existe nenhuma entrada externa ao
programa. A sada consiste em dois grficos e na altitude mxima atingida e o
seu tempo correspondente.



3. SOBRE O PROGRAMA:

Queremos que apenas o programa faa o grfico de acordo com as
nossas informaes e ento calcule o mximo valor atingido no grfico.
Devemos tambm fazer que nosso programa converta metros por hora em
metros por segundo.

4. SOLUO NO MATLAB:

Vamos usar o comando polyval para gerar os pontos para formar o
grfico. O comando max usado para determinar o valor mximo da funo.





Introduo ao MATLAB

82


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

( ) 6
2
+ = x x x f

que ao ser fatorado se torna:

( ) ) 3 ).( 2 ( + = x x x f

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;
- 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:

( ) 10 3 2
2 3
+ = x x x x f


Introduo ao MATLAB

83
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. ( ) 8 2 5
2 3
+ + = x x x x f
b. ( ) 4 4
2
+ + = x x x g
c. ( ) 24 10 27 11 3
2 3 4 5
+ + + = x x x x x x h
d. ( ) 1 4 3
2 3 5
= x x x x i











Introduo ao MATLAB

84


15. Transformadas

As transformadas so usadas com muita freqncia em Engenharia 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.

15.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. Eis um grfico da funo Degrau Ku(t - a):


A funo impulso (t) a derivada da funo Degrau u(t). A funo
Degrau K (t-a) definida como K (t-a) = 0 para t<a e

= K dt a t K ) ( para
t= .
Quando representada em grfico ela comumente representada como
uma seta de amplitude K em t = a . Eis o grfico de K (t - a):


Exemplo:

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

Transformadas

Introduo ao MATLAB

85

15.2. Transformada de Laplace

A Transformada de Laplace realiza a operao



Para transformar f(t), no domnio do tempo, em F(s), no domnio de s. A
Transformada de Laplace da funo cosseno amortecido e-at cos(wt)
encontrada usando-se a funo Laplace:

f=sym(exp(-a*t)*cos(w*t))
F= laplace(f)
pretty(F)
laplace(Dirac(t))
laplace(Heaviside(t))

As expresses podem ser transformadas novamente para o domnio do
tempo, usando-se o inverso da transformada de Laplace, invlaplace, que
realiza a operao f(t). Usando F do exemplo acima temos:

invlaplace(F)


15.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
invfourier para transformar expresses entre domnios. A Transformada de
Fourier e sua inversa so definidas



O MATLAB usa um w para representar em expresses simblicas.

Exemplo:

f= t*exp(-t^2)
F= fourier(f)
invfourier(F)

15.4. Transformada Z

Introduo ao MATLAB

86

As transformadas de Laplace e Fourier so usadas para analisar
sistemas de tempo contnuos. Transformadas Z, por outro lado, so usadas
para analisar sistemas de tempo discreto. A Transformada Z definida como:


, onde z um nmero complexo.

A Transformada z e a Transformada z inversa so obtidas usando-se as
funes ztrans e invztrans. O formato similar ao das funes de
transformadas de Laplace e Fourier.

Exemplo:

f= 2 ^ n / 7- (-5) ^ n / 7
G= ztrans(f)
pretty(G)
invtrans(G)



























Introduo ao MATLAB

87

16. SIMULINK

O que SIMULINK?

SIMULINK um programa utilizado para modelagem, simulao e
anlise de sistemas dinmicos. O programa se aplica a sistemas lineares e no
lineares, contnuos e/ou discretos no tempo.


Os principais focos de utilizao do MATLAB e do Simulink.

Utiliza uma interface grfica com o usurio para construo dos modelos
a partir de diagramas em blocos, atravs de operaes de clique-e-arraste do
mouse. Com esta interface podem-se criar modelos da mesma forma que se
faz com papel e caneta. SIMULINK o resultado de uma longa evoluo de
pacotes de simulao anteriores que necessitavam a formulao de equaes
diferenciais ou de equaes de diferenas em linguagens de programao.
Inclui bibliotecas de blocos contendo fontes, visualizadores, componentes
lineares, no lineares e conectores, com a opo de criao ou personalizao
de blocos.
SIMULINK

Introduo ao MATLAB

88
Aps a definio do modelo, a simulao pode ser feita com diferentes
algoritmos de resoluo, escolhidos a partir dos menus do SIMULINK ou da
linha de comando do MATLAB. Os menus so particularmente convenientes
para o trabalho interativo, enquanto a linha de comando tem sua utilidade na
simulao repetitiva a qual se deseja somente mudar parmetros. Usando
osciloscpios (Scopes) ou outros visualizadores, tm-se o resultado grfico da
simulao enquanto esta est sendo executada. Os resultados da simulao
podem ser exportados para o MATLAB para futuro processamento ou
visualizao.
As ferramentas de anlise de modelos incluem ferramentas de
linearizao e ajuste (Trimming) que podem ser acessadas a partir da linha de
comando do MATLAB, assim como vrias ferramentas do MATLAB e suas
TOOLBOXES especficas. Sendo o MATLAB e o SIMULINK integrados, pode-
se simular analisar e revisar os modelos em qualquer dos dois ambientes.



































Introduo ao MATLAB

89

16.1. Introduo

16.1.1. Diagrama de Blocos

A representao dos sistemas fsicos por meio de equaes nem
sempre deixa clara a relao entre as funes de entrada e de sada desses
sistemas. , portanto conveniente e desejvel sistematizar a descrio
matemtica de um sistema, de tal forma que aquela relao seja expressa
claramente.


Exemplo de um diagrama de blocos complexo, para anlise dos sistemas transmissor, do
motor e de freios de um automvel.

Uma forma de apresentao das equaes diferenciais de um sistema
consiste no emprego de Diagramas de Bloco, em que cada bloco representa
uma operao matemtica, associando pares entrada-sada.
Quando o sistema linear, ou puder ser linearizado, possvel tomar as
transformadas de Laplace das equaes do sistema, considerando condies
iniciais nulas.
A relao entre cada grandeza de sada e a correspondente grandeza
de entrada se chama funo de transferncia.
Introduo

Introduo ao MATLAB

90
Usando as transformadas de Laplace, essas funes so em geral, funes de
s. Quando essas funes so colocadas em vrios blocos, o diagrama
chamado Diagrama de Bloco.
Em geral, os diagramas de bloco so teis na visualizao das funes
dos diversos componentes do sistema, bem como permitem estudos de signal-
flow.
Os diagramas e bloco so mais fceis de desenhar do que os circuitos
que eles representam. Partindo-se de um diagrama de bloco, possvel,
mediante a utilizao de regras especiais, denominadas lgebra dos
diagramas de Bloco reduzir o diagrama a um nico bloco e, assim, achar a
funo global de transferncia do problema, sem necessidade de resolver o
sistema inicial de equaes diferenciais que, algumas vezes, exige muito
tempo devido ao elevado nmero de equaes envolvidas.

16.1.2. Smbolos

Os smbolos utilizados na tcnica de diagramas de bloco so muito
simples, e se encontram representados a seguir:



Varivel X(s)


Operador
Varivel de entrada X(s)
Varivel de sada Y(s)
Funo de transferncia G(s)
Relao representada Y(s)=G(s) X(s)


Somador
Relao representada
F(s) = X(s) Y(s)

Tomada de Varivel
Observar que a tomada de uma
varivel no altera seu valor. A
varivel X(s) chega ao n e as
variveis transmitidas so iguais a
X(s).



16.2. Conhecendo o SIMULINK

16.2.1. Acessando o SIMULINK

Conhecendo o SIMULINK

Introduo ao MATLAB

91
Para acessar o SIMULINK deve-se primeiro abrir o MATLAB, pois
apesar de ser uma aplicao especfica, este no trabalha independente e
utiliza suas ferramentas de clculo.
A partir do Windows 95/98, deve-se clicar duas vezes no cone do
MATLAB. Aberto o programa deve-se ento clicar no cone Start Simulink na
barra de ferramentas do MATLAB ou digitar simulink na linha de comando e
pressionar enter logo em seguida, como mostrado a seguir:

>> simulink <enter>

16.2.2. Construindo um Modelo Simples

Exemplificando a utilizao do SIMULINK, temos um modelo a criar. Este deve
resolver a equao diferencial:
) (t sen x =

; onde x(0) =0

Sendo o Simulink uma extenso do MATLAB, este deve ser carregado a
partir do MATLAB. Inicie o Simulink clicando no seu cone na barra de
ferramentas do MATLAB como mostrado na figura:



Duas janelas se abriro na tela. A primeira janela a biblioteca de
blocos do SIMULINK mostrado na figura. A segunda uma janela em branco
para construo do modelo, nomeada untitled at que seja nomeada com outro
nome.


Introduo ao MATLAB

92


D um click duplo no cone Sources na janela de bibliotecas do
SIMULINK.

Introduo ao MATLAB

93

Arraste o bloco de onda senoidal (Sine Wave) para a janela do modelo.
Uma cpia deste bloco deve ser criada nesta janela.



Abra a biblioteca dispositivos de sada (Sinks) e arraste um SCOPE para
a janela do modelo em construo.

Introduo ao MATLAB

94


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



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:




Introduo ao MATLAB

95
Obs.: A integral definida entre to e tf. Para to = 0, cos(t)=1.

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 corresponde ao grfico apresentado.

16.2.3 - Outro Modelo

O modelo anterior serviu como exemplo de implementao no
SIMULINK, mas est longe de representar um caso usual de utilizao do
software devido pequena quantidade de blocos e ligaes. Agora ser usado
um modelo de um processo biolgico para ilustrar vrios nveis adicionais de
dificuldade na implementao. Scheinerman descreveu um modelo simples do
crescimento de bactrias isoladas do ambiente externo num pote. Admite-se
que as bactrias nascem numa taxa proporcional ao nmero de bactrias
presentes e que elas 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 = px
2

A taxa total de mudana na populao de bactrias a diferena entre a
natalidade e a mortalidade de bactrias. O sistema pode ser ento descrito
pela equao diferencial a seguir:
2
px bx x =


Partindo disto ser ento construdo o modelo do sistema dinmico
supondo que b=1 bactria/hora e p=0,5 bactria/hora. Ser determinado o
nmeros 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 figura:

Introduo ao MATLAB

96

Ainda na biblioteca Linear arraste dois blocos de ganhos (Gain) para a
janela do modelo e posicione-os como na figura. 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.



boa tcnica fechar todas as janelas que no esto sendo utilizadas.
Isto favorece uma melhor utilizao da memria disponvel no
microcomputador.
Abra agora a biblioteca de blocos no lineares (Nonlinear) e arraste um
bloco de produto (product) para a posio mostrada. Este bloco ser utilizado
para calcular o valor de x
2
.

Introduo ao MATLAB

97


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 do SIMULINK de todos os blocos posicionar
entradas esquerda e sadas direita. Porm este modelo ser muito mais
legvel se invertermos os blocos de ganho e produto. Iniciando com o Produto,
deve-se primeiro clicar sobre ele de modo a selecion-lo. Pequenos quadros
pretos aparecero nas quinas do bloco indicando seleo. No menu do
SIMULINK, 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:

Introduo ao MATLAB

98


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.


A seguir necessrio conectar a linha que liga o integrador ao SCOPE
ao 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 faz a ligao 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 Integrador-SCOPE at a entrada superior do bloco de produto.
Da linha de sinal que liga a entrada superior do bloco de produto repita a

Introduo ao MATLAB

99
operao de ligao para a entrada inferior do mesmo bloco, de modo que o
bloco execute a operao
2
x x x = . Conecte agora a sada do bloco de
produto entrada do ganho na parte superior da janela de modelo. Sua janela
agora deve estar da seguinte forma:



Conecte agora 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.como default para os blocos de ganho o valor de 1.0, para o bloco de soma
duas.entradas positivas e para o integrador o valor inicial 0.0. O valor inicial do

Introduo ao MATLAB

100
integrador representa o nmero inicial de bactrias presentes no pote. Ser
iniciada agora a parametrizao com 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

x de acordo com a equao


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


Introduo ao MATLAB

101


A durao da simulao definida no tempo default de 0 a 10. Neste
caso, desejase saber o resultado aps 1 hora. Para mudar este tempo,
seleciona-se na barra de menu a opo Simulation:Parameters e no campo
Stop Time digita-se 1, fechando em Close logo a seguir.


Introduo ao MATLAB

102

O modelo agora est completo e pronto para ser executado. Para salvar
na barra de menu clique em 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.



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.



16.2.4 - Usando o Help do SIMULINK

O SIMULINK possui um extensivo sistema de help on-line. Os arquivos
de help foram desenvolvidos para serem visualizados por navegadores internet
como Netscape ou Internet Explorer. Uma detalhada documentao on-line

Introduo ao MATLAB

103
para todos os blocos do SIMULINK est disponvel no Block-Browser. Um
detalhado help tambm est disponvel clicando no boto de help na caixa de
dilogo que se abre quando se seleciona Simulantion:Parameters na barra de
menu.
Para se consultar o help sobre um bloco qualquer se deve inicialmente
dar um clique duplo sobre o bloco desejado. A seguir clica-se no boto de help
que aparece na caixa de dilogo que se abre. O seu Navegador Internet ir
abrir o Block Browser correspondente.




Introduo ao MATLAB

104










Na janela do Block Browser existem 3 quadros. O superior contm um
cone para cada biblioteca do SIMULINK. O cone selecionado destacado
com uma sombra.
O quadro inferior esquerdo contm cones para todos os blocos contidos
na biblioteca selecionada no quadro superior. Clicando num bloco nesta janela
o help correspondente aparece no quadro inferior direito.
No quadro superior existe ainda um campo de pesquisa denominado
Search, no qual pode se localizar rapidamente um bloco, mesmo quando no
se sabe a que biblioteca este pertence.
O help do SIMULINK contm informaes valiosas. boa prtica utiliz-
lo com freqncia. Outra boa prtica o uso do notebook em anotaes
durante a aula. Isto facilita a execuo de certas rotinas, por muitas vezes
modificando somente parmetros de configurao.


16.3. Construindo Modelos no SIMULINK
16.3.1 - Elementos de Modelos

Um modelo SIMULINK consiste de 3 tipos de componentes: Fontes, o
sistema a ser modelado e dispositivo de sada.
O elemento central, o sistema, a representao de um diagrama em
blocos de um sistema dinmico a ser modelado no SIMULINK. As fontes so
as entradas aplicadas ao sistema dinmico. Podem incluir constantes,
geradores de funes como senides ou degrau, ou ainda sinais
personalizados pelo usurio criados no MATLAB. So encontrados na
biblioteca de fontes (sources). A sada do sistema entregue aos dispositivos
de sada. Freqentemente, em modelos SIMULINK um ou mais desses 3
elementos pode faltar. Por exemplo, pode-se desejar modelar o
Construindo Modelos SIMULINK

Introduo ao MATLAB

105
comportamento na ausncia de foras de um sistema inicialmente fora de sua
condio de equilbrio. Tal modelo no deve ter entradas mas deve conter
blocos de sistema, tais como ganho, integradores etc, e provavelmente
dispositivos de sada. Tambm possvel construir modelos que possuem
fontes e dispositivos de sada, mas nenhum bloco de sistema. Suponha por
exemplo que se necessita de um sinal que seja composto da soma de vrios
outros sinais. Tais sinais podem facilmente gerados usando as fontes do
SIMULINK e enviados ao MATLAB ou a um arquivo no disco rgido.

16.3.2. Manipulando Blocos

A tabela a seguir contm as operaes bsicas de manipulao de
blocos como redimensionar, rotacionar, copiar e renomear blocos.

Selecionar objeto (blocos ou linhas de sinais)
Clique no objeto com o boto
esquerdo do mouse.

Selecionar outro objeto 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 desejada.
Copiar um bloco de uma biblioteca ou
de outro modelo
Selecione o bloco e arraste para a
janela do modelo para o qual se quer
copiar.
Inverter blocos Selecione o bloco e no menu
Format:Flip
Block. Tecla de atalho: CTRL-f.
Rotacionar blocos Selecione o bloco e no menu
Format:Rotate Block. Tecla de
atalho: CTRL-r.
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

Introduo ao MATLAB

106
transferncia Edit:Copy.
Tecla de atalho: CTRL-c.
Recortar objetos para a rea de
transferncia
Selecione o objeto, no menu Edit:Cut.
Tecla de atalho: CTRL-x.
Colar objetos a partir da rea de
transferncia
No menu Edit:Copy. Tecla de atalho:
CTRL-v.
Traar uma linha de sinal Arrastar com o mouse da sada do
bloco para a entrada 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 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 segmento. 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.
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 observao
no modelo
D um duplo clique no local em que se
deseja e digite o texto.

16.3.3. Fontes

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

Introduo ao MATLAB

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

16.3.3.1. Fontes Comuns

Muitos tipos de sinais de entrada utilizados em modelos de sistemas
dinmicos esto disponveis na biblioteca de fontes.
O bloco Constante (Constant) produz um sinal fixo que possui a
magnitude escolhida com um duplo clique sobre o bloco.
O bloco Degrau (Step) produz uma funo degrau. Pode-se configurar o
instante em que se aplica o degrau, assim como sua magnitude antes e depois
da transio.
O bloco de Onda Senoidal (Sine Wave) permite que se configure a
amplitude, a fase e a freqncia da onda senoidal.
O Gerador de Sinais (Signal Generator) pode produzir ondas senoidais,
quadradas, dente de serra ou sinais aleatrios.
Sinais mais complexos podem ser gerados a partir da combinao
destes apresentados.

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

0 ) ( = a t ; a t


=1 ) ( dt t

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

Introduo ao MATLAB

108
verdadeiro. Usualmente, valores adequados podem ser determinados
experimentalmente.



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. O grfico gerado no SCOPE mostrado na figura
abaixo. A sada do integrador contm o valor da integral do impulso no decorrer
do tempo e mostrada no bloco Display. Se a simulao foi correta tal valor
deve ser 1, o que condiz com o valor terico.


16.3.4. Importando do MATLAB (From Workspace Block)

Este bloco permite ao usurio criar seu prprio sinal de entrada. O bloco
e sua caixa de dilogo so mostrados em sua figura a seguir.


Introduo ao MATLAB

109


Na configurao deste bloco devem-se definir quais sero as matrizes
tabela utilizadas como fonte de sinal. O valor default do SIMULINK so as
matrizes [T, U], que devem ser previamente definidas no MATLAB antes da
execuo da simulao.
A primeira coluna da matriz deve ser a varivel independente que
corresponde ao tempo na simulao estritamente crescente. As colunas
seguintes so os valores das variveis independentes correspondente
valores das variveis dependentes da primeira coluna. As sadas sero
produzidas por interpolao linear ou extrapolao utilizando as matrizes
definidas.

Exemplo

Para ilustrar o uso do bloco vamos supor que se deseja gerar um sinal
definido por:
2
) ( t t u =
Inicialmente deve-se gerar a tabela que contenha os valores da funo
no MATLAB. A seguir temos os comandos necessrios que devem ser
executados na rea de trabalho do MATLAB:
>> t=0:0.1:100; % Varivel independente
>> u=t.^2; % Varivel dependente
>> A=[t,u]; % Formato da tabela

importante notar que os sinais devem ser carregados em colunas, o
que exige que se tenha a matriz A composta das matrizes transpostas de u
e t. Criada a tabela, deve-se agora configurar o bloco para que este receba os
valores desejados. Com um duplo clique sobre o bloco, deve-se digitar o nome
da matriz definida no MATLAB, neste caso A, e a seguir clicar no boto
Close. O nome da matriz aparecer sobre o bloco e este est pronto para ser
usado como uma fonte no SIMULINK.


Introduo ao MATLAB

110


16.3.4.1. Importando Arquivos Gerados no MATLAB (From File Input
Block)

Este bloco muito similar ao anterior. A diferena bsica que a matriz
agora carregada a partir de um arquivo gerado no MATLAB, podendo agora o
sinal de entrada ser salvo para diversos usos posteriores. Outra diferena
importante que os sinais devem agora ser carregados em linhas ao invs do
caso anterior, em que eram carregados em colunas. Aproveitando o resultado
anterior, podemos executar no MATLAB os seguintes comandos:

>> B=A % Varivel independente
>> save exemp B % Varivel dependente

Agora se pode configurar o bloco para receber os valores digitando no
campo File Name o nome completo do bloco, inclusive sua extenso (.mat), no
nosso caso exemp.mat.



16.3.5. Dispositivos de Sada

So as maneiras de se ver ou armazenar os resultados de um modelo.
O osciloscpio e o grfico XY produzem grficos a partir de dados do modelo.
O bloco Display produz uma amostragem digital do valor contido em sua
entrada. Pode-se ainda enviar os dados para a rea de trabalho do MATLAB
utilizando o bloco To Workspace Block ou ainda armazenar os dados em
arquivos do MATLAB para usos posteriores. O bloco de parada (Stop block)
causa a parada da simulao quando sua entrada for diferente de zero. Uma
refrencia detalhada de cada bloco pode ser encontrada no help do SIMULINK.
No texto que segue sero discutidas particularidades do bloco SCOPE e do
grfico XY.

16.3.6. Osciloscpio (Scope)

Introduo ao MATLAB

111

Este bloco emula um osciloscpio. Plota um grfico do sinal de entrada,
podendo este ser um escalar ou um vetor. Ambas as escalas, vertical e
horizontal podem ser ajustadas para uma melhor visualizao. A escala vertical
mostra o valor atual correspondente ao sinal de entrada. A escala horizontal
sempre inicia em zero e termina no valor especificado em Time Range. Se por
exemplo a faixa de escala horizontal 10 e o tempo corrente 100, o sinal de
entrada correspondente perodo de 90 a 100 que ser mostrado, muito
embora a escala horizontal esteja continue mostrando de 0 a 10. O
osciloscpio simplesmente mostra o sinal durante a simulao, e desprovido
de mtodos de salvar a imagem gerada para impresso ou incluso em outro
documento. Mas tem a possibilidade de enviar os dados para a rea de
trabalho do MATLAB para possvel anlise ou plotagem, usando exemplo o
comando plot do MATLAB.
Pode-se inserir o SCOPE no modelo sem qualquer conexo em sua
entrada e deve ser configurado como Bloco SCOPE Flutuante (Floating Scope
Block). Este SCOPE flutuante ser ento usado para se visualizar qualquer
sinal do modelo durante execuo da simulao com um simples clique sobre a
linha em que se deseja conhecer o sinal.
A figura abaixo ilustra o bloco SCOPE. Nota-se que h uma barra de
ferramentas que contm seis cones ao longo do topo da janela. Esses botes
permite dar um zoom numa poro da figura, autodimensionar a figura, salvar a
configurao para futuro uso e abrir a caixa de dilogo com as propriedades do
bloco SCOPE.











Introduo ao MATLAB

112

16.3.6.1. Ferramenta Zoom na tela do Osciloscpio

Considere o modelo mostrado na figura. O bloco gerador de onda
senoidal situado na parte superior est configurado para produzir o sinal sen(t)
e o outro bloco para gerar o sinal 0.4sen(10t).



Abre-se a tela do Osciloscpio com um duplo clique sobre ele. Executa-
se ento a simulao e o resultado obtido deve ser semelhante ao mostrado na
figura. Pode-se redimensionar a figura clicando no boto Autoescale. Suponha
que se deseja analisar o intervalo de tempo entre 2 e 4 segundos. Para isto,
clica-se no boto Zoom. Aps isto se deve com o mouse ento envolver a rea
desejada como mostrado na figura:



A tela agora s mostrar o intervalo envolvido.


Introduo ao MATLAB

113


16.3.6.2. Propriedades do Osciloscpio

O boto Open properties window abre a caixa de dilogo com as
propriedades do osciloscpio, caixa esta que contm duas pginas. A primeira
pgina (Axes) contm campos para se definir os valores mximos (Ymax) e
mnimos (Ymin) da varivel dependente. A escala de tempo (Time Range)
pode ser configurada para um valor particular ou para seu modo automtico.
Se o modo automtico for escolhido, a escala de tempo ter o mesmo tamanho
da durao da simulao especificada na caixa de dilogo
Simulation:Parameters.



A segunda pgina (Settings) contm campos para se controlar o nmero
de pontos mostrados e salvar os dados para a rea de trabalho do MATLAB.
A seo General da pgina consiste numa caixa contendo duas opes:
Decimation e Sample time. Se a opo escolhida for Decimation o campo
que contm o fator deve ser um nmero inteiro. Escolhendo-se Decimation e

Introduo ao MATLAB

114
definindo-se 1 no campo ao lado da caixa, todos os pontos na entrada do bloco
sero plotados. Define-se 2 para o campo, a plotagem feita com pontos
alternados e assim por diante. Se for escolhida a opo Sample time, o
espaamento absoluto entre os pontos a serem plotados deve ser digitado no
campo.


O osciloscpio armazena os pontos num buffer. Assinala-se a opo
Limits rows to last e digita-se o valor especfico para se definir o tamanho do
buffer(o default 5000). As operaes de Autoescala, zoom e salvar os dados
para a rea de trabalho so feitas com este buffer. Se por exemplo ajusta-se o
tamanho do buffer para 1000 pontos e a simulao gera 2000 pontos, somente
os ltimos 1000 estaro disponveis para estas operaes quando a simulao
terminar.
Como dito anteriormente, o osciloscpio no possui ferramentas para se
imprimir ou enviar sua tela para outros programas diretamente, como um
processador de textos por exemplo. Porm, os dados enviados ao osciloscpio
podem ser armazenados numa varivel do MATLAB e enviados rea de
trabalho, podendo ento ser utilizadas as muitas capacidades de tratamento
destes dados pelo MATLAB. Para isto deve-se primeiro assinalar a opo Save
data to workspace e digitar o nome da varivel do MATLAB. Depois da
simulao terminada, os dados mostrados na tela do osciloscpio sero
armazenados na varivel definida. A varivel ser composta de uma coluna
contendo os valores de tempo e outra coluna para cada sinal de entrada. Se
por exemplo o sinal de entrada for um vetor de sinal com duas componentes, a
varivel ter 3 colunas e o nmero de linhas igual ao nmero de pontos
mostrados na tela do osciloscpio.

16.3.7. Grfico XY

O bloco de grfico XY produz um grfico idntico ao grfico produzido
pelo comando plot do MATLAB. O grfico XY aceita dois escalares como
entrada. Devem-se configurar as faixas horizontais e verticais utilizando a caixa

Introduo ao MATLAB

115
de dilogo do bloco. A caixa de dilogo do bloco grfico XY mostrada na
figura que se segue.


16.3.8. Configurando a Simulao

Um modelo SIMULINK essencialmente um programa de computador
que define um grupo de equaes diferenciais e de diferenas. Quando se
escolhe Simulation:Start na barra de menu da janela de modelo, o SIMULINK
resolve o grupo de equaes diferenciais e de diferena numericamente,
utilizando um dos seus algoritmos de resoluo.
Antes de se executar uma simulao, deve-se configurar vrios
parmetros, como tempo inicial e final, Step size da simulao e vrias
tolerncias. Pode-se escolher vrios algoritmos de integrao de alta
qualidade. Pode-se tambm configurar o SIMULINK para obter e enviar dados
da rea de trabalho do MATLAB. Considere-se o modelo mostrado na figura


Este modelo representa a seguinte equao diferencial: 2 =

x
Defini-se para condio inicial do integrador valor 1 no campo Initial
condition. A seguir, escolhe-se no menu da janela do modelo
Simulation:Parameters e configura-se o tempo inicial para 0 e o tempo final

Introduo ao MATLAB

116
para 5. A seguir se executa a simulao. O SIMULINK determinar
numericamente os valores da integral para resolver: dt x

+ =

0
2 1 ) (
e plota os valores de ) ( x no intervalo de 0 a 5. Um algoritmo de integrao
numrica que resolve este tipo de problema (frequentemente chamado de
problema de valor inicial) chamado de algoritmo de resoluo de equaes
diferenciais ordinrias (Ordinary differential equation solver). Para se configurar
os parmetros da simulao escolhe-se Simulation:Parameters na barra de
menu da janela do modelo. A caixa de dilogo que se abrir contm trs
pginas: Solver, workspace I/O e Diagnostics. Na primeira pgina (Solver)
seleciona-se e configura-se o algoritmo de resoluo da equao diferencial. A
seguna pgina (Workspace I/O) contm parmetros opcionais que permitem
obter dados de inicializao da rea de trabalho do MATLAB e enviar certos
dados da simulao para variveis previamente definidas da rea de trabalho
do MATLAB. A terceira pgina (Diagnostics) usada para selecionar alguns
mtodos de diagnsticos muito utilizados para se determinar problemas na
simulao. Cada pgina ser discutida mais detalhadamente.

16.3.8.1. Solver Page

Esta pgina consiste em trs sees. A primeira, Simulation time,
contm campos para se definir o tempo inicial e final da simulao. Os valores
default so 0 e 10.
As opes Solver contm campos para se selecionar os algoritmos
numricos de integrao para se resolver as equaes diferenciais e configurar
parmetros que controlam o Step Size de integrao. Os mtodos de soluo
so agrupados em duas categorias: Passo varivel e passo fixo. Diferentes
algoritmos esto disponveis para cada categoria.
Se a opo escolhida for a de Passo varivel, esto disponveis campos para
se configurar o tamanho do mximo passo de integrao, o passo inicial e as
tolerncias absolutas e relativas.
Se a opo escolhida for a de Passo fixo, h um nico campo no qual
se define o tamanho do passo de integrao. A seo Output options controla
o espaamento de tempo nos pontos na trajetria de sada.


Introduo ao MATLAB

117


16.3.9. Executando uma Simulao

Pode-se controlar a execuo de um modelo no menu Simulation na
barra de menus da janela do modelo. Para se iniciar uma execuo, clica-se
em Simulation:Start. Pode-se parar a simulao permanentemente
selecionando-se Simulation:Stop. Para parar a execuo temporariamente
clica-se em Simulation:Pause, e para continuar a execuo do ponto de
parada seleciona-se Simulation:Continue.
Enquanto a simulao est sendo executada, pode-se modificar diversos
parmetros. Por exemplo o ganho de um bloco de ganho, modificar o algoritmo
utilizado na soluo, modificar os parmetros de integrao como o tamanho
do passo mnimo. Pode-se ainda selecionar uma linha de sinal que passar
ento a ser a entrada de um Osciloscpio que esteja sendo configurado como
flutuante (Floating Scope Block). Isto permite que se cheque vrios sinais
durante o progresso da simulao.














Introduo ao MATLAB

118

16.4. Exemplos Prticos

16.4.1. Viso geral do Simulink


1. Comecemos abrindo o Simulink.

2. Vamos arrastar alguns blocos para o ambiente de trabalho: sine wave
(biblioteca sources), integrator (commonly used) e um scope (sinks).

3. Conecta-se os blocos, utilizando a tecla control.

4. Em caso de dvidas, recomenda-se utilizar o help, clicando-se com o boto
direito sobre o bloco.

5. Daremos uma condio inicial para o integrador, no caso -1, que
corresponde condio inicial da sada (funo cosseno).

6. Abrimos o scope, escolhemos um limite de tempo pra simulao (na barra
de tarefas e iniciamos a simulao, pela barra de tarefas ou por simulation -
> configuration parameters.




7. Adicionemos agora uma no-linealidade sada: o bloco se saturao
(saturation, biblioteca discontinuities), que limita a sada a um valor
especfico por exemplo, +- 3.

Exemplos Prticos

Introduo ao MATLAB

119
8. Adicionemos agora um bloco gain (math operations) sada do sinal
senoidal. Podemos criar um vetor de ganhos, e ter ento vrias sadas a
partir deste bloco. Escolheremos um vetor de 8 elementos (3:10). Mudemos
ento as condies iniciais do bloco integrador para (-(3:10)), e faamos
uma nova simulao.




9. Usemos a funo +-rand(8,1)*10 pra criar um vetor aleatrio de saturaes.
Simulemos ento novamente algumas vezes.

10. Trabalhemos agora um pouco com discretizao. Para discretizarmos a
sada, usaremos um zero order hold (biblioteca discrete) na sada do bloco
de saturao.

11. Escolhamos Ts como o tempo de amostragem, e ento definamos na linha
de comando do MATLAB Ts=0.1. Observa-se ento que o Simulink est
completamente integrado ao MATLAB.

12. Podemos agora adicionar uma ou mais entradas ao scope: alteremos o
nmero de eixos do scope, e adicionemos mais um ou dois blocos zero
order hold, com outros tempos de discretizao, Ts2 e Ts3.


Introduo ao MATLAB

120


13. Podemos alterar as cores de um bloco ou de um conjunto de blocos,
clicando com o boro direito do mouse sobre este(s) e selecionando
foreground color e bacjground color.

14. Trabalharemos agora com o conceito de hierarquia, que nos serve para
diminuar a complexidade na visualizao de um sistema e para podermos
dividir o nosso sistema em blocos chamados subsistemas. Selecionemos
os blocos desejados para o nosso subsistema e ento cliquemos em em
edit->create subsystem, ou podemos usar o atalho ctrl+G.

15. Para acessarmos e visualizarmos a estrutura dos sistemas e dos
subsistemas, cliquemos em view->model browser options->model browser.

16. O nosso subsistema pode ser um bloco para que um usurio utilize, na
forma de uma caixa de dilogo, como todos os blocos padro do simulink
so utilizados. Dessa forma, o usurio no precisar se preocupar com os
detalhes internos do bloco, e sim com suas entradas, sadas e com os seus
parmetros. Pra isso se cria uma mscara, clicando com o boto direito do
mouse no bloco e depois em mask subsystem....

17. cone: para o cone de nosso subsistema, podemos utilizar comandos do
MATLAB, por exemplo: plot(peaks). Podemos utilizar uma imagem
qualquer, carregando-a primeiramente para a pasta work depois usando o
comando image(imread(nome da imagem'))

Introduo ao MATLAB

121




18. Parmetros: em nosso caso, podemos criar um parmetro na aba
parameters para cada tempo de amostragem.

19. Documentao: o help do bloco. Pode-se adicionar um arquivo html.




20. Aps clicarmos em OK, poderemos usar nosso bloco como os outros blocos
so usados. Para informaes adicionais, podemos escrever texto no
ambiente de ttrabalho, aimplesmente clicando duas vezes em uma regio
em branco.

Introduo ao MATLAB

122

21. Para adicionarmos documentao, podemos utilizar o bloco docBlock da
biblioteca ssimulink->model-wide utilities.



22. Podemos observar o interior de nosso bloco com look under mask, que
abrir uma janela detalhando o subsistema. Por fim, poderemos ver os tipos
dos dados com os quais estamos lidando, clicando em format->port data
types.























Introduo ao MATLAB

123
16.4.2. Simulando um salto de bungee jumping

Demonstraremos agora como utilizar o simulink para modelar um
simples problema de fsica. Vamos ilustr-lo da seguinte forma:
Durante as frias de vero, John quer saltar bungee-jumping. Ele precisa
determinar qual elasticidade de corda a mais apropriada para o seu peso. H
3 cordas disponveis: corda A com constante de 5 N/m; corda B, com constante
de 40 N/m; corda C, com contante de 500 N/m.
Para resolver este problema, ser preciso:
1. Determinar as foras agindo sobre o corpo:
Peso (W):
W = m*g
m = 90 kg
g = 10 m/s^2

Resistncia do ar (R):

R = b
1
*v + b
2
*|v|*v
b
1
= 1
b
2
= 1
v = dv/dx

Fora da corda elstica (F
e
):

F
e
= k*x se x > 0
0 se x = 0

2. Aplicar a segunda lei de
Newton:

Soma das Foras =
m*a

W R F
e
= m*a

2
2
2
2 1 .

=
dt
dx
m
b
dt
dx
m
b
m
x k
g
dt
x d


3. Resolver o problema:
Este problema pode ser resolvido da seguinte forma:
- Resolver a equao diferencial mo.
- Escrever um programa para resolver a equao
- Usar o Simulink
Em sistemas dinmicos contnuos, as representaes matemticas
envolvem a derivada da entrada e/ou da sada. Devido ao modo com que as
funes solucionadoras lidam com os estados contnuos, recomendvel usar
blocos integradores ao invs de derivadores e trabalhar no sentido inverso.

Introduo ao MATLAB

124
So ento inseridos dois blocos integradores, cujas condies iniciais
sero de 0 m/s para a velocidade inicial e de -50 m, indicando que a corda
possui 50 m e comear e se expandir apenas aps o saltador percorrer esta
distncia. Note-se que estamos convencionando o sentido para baixo como
positivo, sendo a origem ento localizada no cho.

Vamos inserir agora as resistncias do ar. Para a parte linear, usaremos
o bloco gain, disponvel na biblioteca math operations. Insiramos ento o valor
do ganho igual a um. Para a poro no-linear, criaremos uma funo, usando
o bloco fcn, localizado na biblioteca user defined functions. A funo a ser
inserida b2*abs(u)*u, onde u corresponde velocidade.
Para a constante de elasticidade da corda, tambm usaremos um bloco
gain, e chamaremos seu parmetro de k.
Deve-se observar, no entanto, que quando a corda estiver acima de seu
ponto de equilbrio, esta no produz fora. Para evitarmos ento que seja
gerada uma fora negativa no bloco de ganho k, usaremos um bloco saturation
para forarmos um limite inferior igual a zero.
Combinaremos agora todas as partes utilizando o bloco sum, da
biblioteca math operations. Resta-nos ento inserir a fora peso, com um bloco
constant, da biblioteca commonly used blocks, e multiplicarmos nossos
integradores por 1/m. Teremos ento a equao diferencial completamente
descrita no diagrama:



Introduo ao MATLAB

125
Para analisarmos graficamente a sada, utilizaremos o bloco scope.
Antes de simularmos, declaremos as variveis b = 1, k = 20, g = 10 e m = 90 na
linha de comando do MATLAB.
Note que a sada o deslocamento x, e no a distncia a partir do cho.
Consideremos ento 30-x como a distncia do cho plataforma de salto, de
modo que o ponto x=80 m seja a plataforma e a corda elstica possua um
comprimento de 50 m. Podemos ento utilizar um novo bloco de soma para
realizar esta operao.
Nosso sistema completo pode ser representado ento como na figura
abaixo:



Resta-nos ento testarmos diferentes constantes de elasticidade, e
determinarmos qual a corda elstica mais apropriada para John.

















Introduo ao MATLAB

126

Apndice A. Lista de Exerccios

Nos problemas 1 a 7, d os comandos MATLAB necessrios para
executar os passos indicados. Suponha que as variveis so escalares.

1. Se time maior que 50, ento incremente-a por 1.
2. Quando a raiz quadrada de poly for menor que 0,001, imprima o valor de
poly;
3. Se a diferena entre volt_1 e volt_2 for maior que 2, imprimir os valores de
volt_1 e volt_2;
4. Se o valor de den for menor que 0, 003; atribua zero a result; caso contrrio,
atribua a result num dividido por dez;
5. Se o logaritmo natural de x for maior ou igual a 10, atribua zero a time e
incremente-o por count;
6. Se dist for maior que 50 e time for maior que 10, incremente time por 2;
caso contrrio, incremente time por 5.
7. Se dist for maior ou igual a 100, incremente time por 10. Se dist estiver
entre 50 e 100, incremente time por 1. Caso contrrio incremente time por
0,5.

Determine o nmero de vezes que o loop fordefinido pelos comandos a
seguir so executados. Verifique sua resposta .

1. for k = 3:20
2. for count = -2:14
3. for k = -2:-1:10
4. for time = 10:-1:0
5. for time = 10:5
6. for index = 52 : -12

Resolver os sistemas de equaes com os mtodos acima e se possvel
plotar os grficos.

a) -2x + y = -3
x + y = 3

b) -2x + y = -3
-2x + y = 1





Apndice A Lista de Exerccios

Introduo ao MATLAB

127

Referncias Bibliogrficas


[1] Curso de MATLAB for Windows, Departamento de Engenharia Mecnica,
UNESP, Campus de Ilha Solteira.
[2] Trindade, Marcelo A. e Sampaio, Rubens, Introduo ao MATLAB,
Departamento de Engenharia Mecnica, Laboratrio de Dinmica e
Vibraes, PUC-Rio.
[3] Hey, H. L., Caderno didtico de Sistemas de Controle I, Departamento de
Eletrnica e Computao, UFSM, Santa Maria.
[4] www.mathworks.com





Referncias Bibliogrficas

You might also like