Professional Documents
Culture Documents
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
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
=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