Professional Documents
Culture Documents
So Paulo
2016
Sumrio
1 Objetivos 6
2 Introduo 8
2.1 Consideraes Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Variveis e Declaraes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 rea de Trabalho - Informaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1 Clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.2 Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.3 lookfor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.4 Salvando e Saindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.5 Nmeros e Expresses Aritmticas . . . . . . . . . . . . . . . . . . . . . . 14
2.3.6 Formato de Sada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.7 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Operaes Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.1 Transposta de uma Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.2 Adicionando e Subtraindo Matrizes . . . . . . . . . . . . . . . . . . . . . . 16
2.4.3 Multiplicao de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4.4 Diviso de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.5 Funes Elementares e Transcendentais . . . . . . . . . . . . . . . . . . . . 18
2.5 Operaes de Vetores ou Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.1 Somando e Subtraindo Arrays . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.2 Multiplicando e Dividindo Arrays . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.3 Usando Potenciao com Arrays . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.4 Operadores Relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.5 Operadores Lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.6 Funes Matemticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6 Manipulao Matricial e Vetorial . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6.1 Gerando Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6.2 Indexando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.3 Usando Vetores de 0 e 1 na Indexao . . . . . . . . . . . . . . . . . . . . 24
2
SUMRIO SUMRIO
FL/LVP 3
SUMRIO SUMRIO
4 Transformada de Laplace 62
4.0.1 Transformada Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.1 Sistema de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.1.1 Funo de Transferncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.1.2 Zero-Polo-Ganho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.1.3 Espao de Estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.1.4 Tempo Discreto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.1.5 Dados do Objeto LTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.1.6 Converso de Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.2 Operaes com Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2.1 Malha de Avano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2.2 Blocos em Cascata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2.3 Inverso de Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.2.4 Soma de Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.2.5 Derivao de Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.2.6 Malha de Realimentao Unitria . . . . . . . . . . . . . . . . . . . . . . . 72
4.3 Resposta Temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.3.1 Resposta em Frequncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
FL/LVP 4
4.3.2 Resposta Numrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.3.3 Reduo de Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.3.4 Lugar Geomtrico das Razes . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.3.5 Interfaces Grficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Captulo 1
Objetivos
O objetivo destas notas de aulas o aprendizado bsico dos software MatLab e Octave, com
foco no curso de Controle Automtico e Servomecanismo.
Para estudos mais detalhados do MatLab, uma verso acadmica comercializada pelo link,
O software Octave uma opo free, que apresenta recursos semelhantes ao MatLab e pode
ser obtido em
www. gnu . o r g / s o f t w a r e / o c t a v e
atualmente na verso 4.0.1, que foi utilizada neste tutorial. Um cuidado especial deve ser
observado para instalao do aplicativo Octave. Pacotes bsicos acompanham a instalao
padro do aplicativo, mas o pacote "symbolic" utilizado neste tutorial deve ser instalado
posteriormente, conforme segue:
No endereo da internet
www.github.com/cbm755/octsympy/releases/tag/v2.3.0
faa um download do pacote
www.github.com/cbm755/octsympy/releases/tag/v2.3.0
Na Janela de Comando do Octave (ver figura 2.2), indicar o caminho onde o arquivo
"symbolic-win-py-bundle-2.3.0.zip" esta localizado, sem a necessidade de ser descom-
pactado, porem um descompactador deve estar instalado em seu computador.
introduza o comando de instalao do pacote
>>pkg install symbolic-win-py-bundle-2.3.0.zip
ao final da instalao, o comando
>>pkg load symbolic
permite que o pacote seja carregado para utilizao.
6
CAPTULO 1. OBJETIVOS
Agradecimentos especiais aos Professores Jos Barbosa Junior, Paulo lvaro Maya, Heraldo
Silveira Barbuy e tantos outros que direta ou indiretamente contriburam com o contedo
destas notas.
Os comandos entre estes dois aplicativos so muito semelhantes, quando diferenas existirem,
sero destacadas no texto, como apresentado aqui.
FL/LVP 7
Captulo 2
Introduo
Nos dois casos, estes aplicativos trabalham essencialmente com um tipo de objeto: Matriz
retangular numrica (real ou complexa). Em algumas situaes existe significado especial agre-
gado matrizes de dimenso 1 (escalares) e matrizes com uma s linha ou coluna (vetores). A
8
CAPTULO 2. INTRODUO 2.1. CONSIDERAES INICIAIS
No MatLab, as instrues que seguem, podem ser inseridas diretamente na janela "Command
Window".
No Octave ao iniciar o aplicativo deve-se em primeiro lugar carregar os pacotes necess-
rios, atravs dos comandos abaixo, para utilizao dos pacotes de controle e representaes
simblicas respectivamente.
>>pkg l o a d c o n t r o l
>>pkg l o a d s y m b o l i c
Matrizes podem ser adicionadas no ambiente de vrias formas, contudo a forma mais simples para
matrizes pequenas entrando com a lista dos elementos, seguindo a seguinte conveno, para
ambos aplicativos:
Exemplo 1
>> A=[1 2 3 ; 4 5 6 ; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
Exemplo 2
Elementos de uma m a t r i z podem s e r q u a i s q u e r e x p r e s s e s
>> x = [ 1 . 3 s q r t ( 3 ) (1+2+3)4/5]
x =
1.3000 1.7321 4.8000
FL/LVP 9
2.2. VARIVEIS E DECLARAES CAPTULO 2. INTRODUO
Exemplo 3
Elementos i n d i v i d u a i s podem s e r r e f e r e n c i a d o s p e l o seu
n d i c e ( linha , coluna ) .
>> x (5)= abs ( x ( 1 ) )
x =
1.3000 1.7321 4.8000 0 1.3000
Ao atribuir um valor numrico x(5), automaticamente x(4) criado com valor nulo.
Exemplo 4
Voc pode c o n s t r u i r m a t r i z e s m a i o r e s usando m a t r i z e s menores como
s e u s e l e m e n t o s . Por exemplo , vamos a d i c i o n a r uma l i n h a m a t r i z A:
>>r =[10 11 1 2 ] ;
>> A=[A; r ]
A =
1 2 3
4 5 6
7 8 9
10 11 12
Exemplo 5
E x t r a i r sub m a t r i z e s de uma m a t r i z maior usando " : " ( d o i s pontos ) .
>> A=A( 1 : 3 , : )
A =
1 2 3
4 5 6
7 8 9
Remove as trs primeiras linhas e todas as colunas da matriz A e coloca o resultado em A.
FL/LVP 10
CAPTULO 2. INTRODUO 2.2. VARIVEIS E DECLARAES
Quando o nome da varivel omitido, o nome ans usado como varivel padro.
Uma definio normalmente termina com ENTER. Se o ltimo carcter um ponto-e-vrgula, ele
suprime a apresentao no vdeo, embora faa a atribuio da mesma forma. Isto especialmente
importante nas situaes que o resultado muito grande, tal como uma matriz de 10 linhas e 10
colunas.
Exemplo 6
A i n s t r u o syms x y n e c e s s r i a a e s t e exemplo s e r d i s c u t i d a mais
f r e n t e , mas no e s q u e a de c a r r e g a r o s y m b o l i c no OCTAVE
>> pkg l o a d s y m b o l i c
>> syms x y
>> H=4xxx 12y 45
H =
4x^3 12 y 45
>> p r e t t y (H)
3
4 x 12 y 45
ou sem declarao do nome da varivel
Quando uma expresso muito grande e no cabe em uma linha, use (...) para continuar a defi-
nio na linha seguinte
Exemplo 7
>> s =1 1/2+1/3 1/4+1/5 1/6+1/7 . . .
1/8+1/9 1/10+1/11 1/12;
>>
d e v i d o ao " ; " o r e s u l t a d o no a p r e s e n t a d o .
FL/LVP 11
2.3. REA DE TRABALHO - INFORMAES CAPTULO 2. INTRODUO
Se s o l i c i t a d o s , vem :
>> s
s =
0.6532
Voc pode nomear uma varivel ou nome de funo com uma letra seguida de qualquer quantidade
de letras ou underline. O sistema diferencia letras maisculas de minsculas e usa somente os
primeiros 19 caracteres do nome.
As variveis so "case sensitive", isto , a varivel A diferente da varivel a. Letras minsculas
so usadas em todos os comandos de MATLAB/OCTAVE.
Exemplo 8
>> who
Your v a r i a b l e s a r e :
H ans s x y
>> whos
Name Size Bytes C l a s s Attributes
H 1 x1 112 sym
ans 1 x1 112 sym
s 1 x1 8 d ou bl e
x 1 x1 112 sym
y 1 x1 112 sym
2.3.1 Clear
Para limpar a tela do "Command Window", utilize o comando
>> c l c
>> c l e a r a l l
FL/LVP 12
CAPTULO 2. INTRODUO 2.3. REA DE TRABALHO - INFORMAES
O comando "clear": Apaga todas as variveis; "clear a b c" s apaga as variveis explicitadas ( a,
b, c, neste caso); "clear" muito til em programas para evitar erros em repeties do programa
com dimenses diferentes das matrizes.
2.3.2 Help
O comando help produz informaes resumidas sobre funes especficas ou sobre tpicos . Para
listar um grupo de funes ou uma funo, digite help seguido do nome do grupo de fun-
es.
Exemplo 9
>> h e l p c l c
clc C l e a r Command Window
This MATLAB f u n c t i o n c l e a r s a l l i n p u t and output
from t h e Command Window d i s p l a y , g i v i n g you
a clean screen .
clc
R e f e r e n c e page f o r c l c
See a l s o c l e a r , c l f , c l o s e , home
Obs:. Em OCTAVE "help comando" (por exemplo, "help format") produz uma instruo muito
resumida. Um pouco mais pode-se obter com "help -i comando", que apresenta o ponto do manual
onde est explicado o comando.
2.3.3 lookfor
Para localizar palavras-chaves em todos os arquivos, use o comando lookfor.
Exemplo 10
>> l o o k f o r i n v e r s e
ifft Inverse d i s c r e t e Fourier transform .
ifft2 Two d i m e n s i o n a l i n v e r s e d i s c r e t e
Fourier transform .
ifftn N dimensional inverse d i s c r e t e
Fourier transform .
ifftshift I n v e r s e FFT s h i f t .
acos Inverse cosine , r e s u l t in radians .
acosd Inverse cosine , r e s u l t in degrees .
FL/LVP 13
2.3. REA DE TRABALHO - INFORMAES CAPTULO 2. INTRODUO
MATLAB - Digite save, este comando salvar todas as variveis em um arquivo chamado
matlab.mat. Para recuperar as variveis use o comando load. Voc tambm pode salvar
somente algumas variveis e usar o nome de um arquivo qualquer.
>> s a v e x y z
OCTAVE - Digite save nome, este comando salvar todas as variveis em um arquivo, com
o nome especificado, aqui o OCTAVE difere do MATLAB. Para recuperar as variveis use
o comando load nome. Voc tambm pode salvar somente algumas variveis e usar o nome
de um arquivo qualquer.
>> s a v e A x y z
1 . 7 6 0 2 1 7 e 11
4.534 i
^ potenciao
\ diviso esquerda
/ diviso direita
multiplicao
subtrao
FL/LVP 14
CAPTULO 2. INTRODUO 2.3. REA DE TRABALHO - INFORMAES
+ adio
Algumas funes internas retornam valores especiais. A funo "pi" retorna o valor de , a
funo "inf" retorna 1 , etc. Funes matemticas elementares normalmente encontradas em
calculadores cientficas so encontradas nestes aplicativos. Essas funes incluem, por exemplo:
abs, sqrt, log, sin. Se uma operao resultar em infinito isso no implica em erro, simplesmente
1 0
aquela varivel ter o valor infinito. O mesmo ocorre para operaes invlidas como ou .
1 0
O resultado NaN ("Not a Number")
Pequenas diferenas entre as formas de apresentao podem ser obtidas em Help Format
2.3.7 Funes
Grande parte do poder destes processadores matemticos, vem do enorme conjunto de funes.
O conjunto de funes aplicadas a uma rea especfica denominado toolbox ou package. Cada
usurio pode criar suas prprias funes que se comportam como se fossem funes internas.
FL/LVP 15
2.4. OPERAES MATRICIAIS CAPTULO 2. INTRODUO
As sees adiante discutem cada uma das diferentes categorias de funes analticas. possvel
combinar funes de vrias formas.
>> x = s q r t ( l o g ( z ) )
Algumas funes usam dois ou mais argumentos, e cada argumento pode ser uma expresso.
>> [ V, D ] = e i g ( A )
A funo eig calcula os autovetores e os autovalores de A, respectivamente.
Exemplo 12
>> a =[1 2 ; 3 4 ]
a =
1 2
3 4
>> b=a
b =
1 3
2 4
FL/LVP 16
CAPTULO 2. INTRODUO 2.4. OPERAES MATRICIAIS
Exemplo 13
>> c=a+b
c =
2 5
5 8
A adio e subtrao so definidas tambm para o caso que um dos operandos um esca-
lar
Exemplo 14
>> d=c 2
d =
0 3
3 6
Exemplo 15
>> e=ab
e =
5 11
11 25
Naturalmente, um escalar (matriz de dimenso 1) pode multiplicar ou ser multiplicado por qual-
quer matriz.
Exemplo 16
>> f =2e
f =
10 22
22 50
FL/LVP 17
2.5. OPERAES DE VETORES OU ARRAY CAPTULO 2. INTRODUO
"det" determinante
"trace" trao
FL/LVP 18
CAPTULO 2. INTRODUO 2.5. OPERAES DE VETORES OU ARRAY
Exemplo 17
>> x=[1 2 3 ] ; y=[4 5 6 ] ;
>> z=x . y
z =
4 10 18
Exemplo 18
>> z=x . \ y
z =
4.0000 2.5000 2.0000
>> z=x . / y
z =
0.2500 0.4000 0.5000
Exemplo 19
>> z=x . ^ y
z =
1 32 729
FL/LVP 19
2.5. OPERAES DE VETORES OU ARRAY CAPTULO 2. INTRODUO
Exemplo 20
>> a =[1 2 ; 3 4 ] ; b=[1 4 ; 2 3 ] ;
>> a~=b
ans =
0 1
1 1
Exemplo 21
Pode s e o b t e r o s e l e m e n t o s da m a t r i z A, que sejam d i v i s v e i s por 3
>> A=[9 1 3 ; 3 5 7 ; 4 5 9 ] ;
>> G=rem (A, 3 ) ;
>> p=(G==0)
p =
1 0 1
1 0 0
0 0 1
A funo rem(A,3) retorna a matriz dos restos da diviso por 3. Cada um dos elementos de G
informa se a operao relacional falsa (0) ou verdadeira (1).
A funo find muito usada em conjunto com operadores relacionais. O exemplo abaixo ilustra
como localizar todos os elementos de Y que so maiores que 3 e substitu-los por 10.
FL/LVP 20
CAPTULO 2. INTRODUO 2.6. MANIPULAO MATRICIAL E VETORIAL
Exemplo 23
i f a l l (A < 0 . 5 )
f a a alguma c o i s a
end
Exemplo 24
>> A=[ 1 2 3;4 5 6];
>> B=abs (A)
B =
1 2 3
4 5 6
Exemplo 25
>> x =1:5
x =
1 2 3 4 5
Voc pode tambm criar o vetor com incrementos diferentes da unidade. No exemplo a seguir o
passo de /4.
FL/LVP 21
2.6. MANIPULAO MATRICIAL E VETORIAL CAPTULO 2. INTRODUO
Exemplo 26
>> y=0: p i / 4 : p i
y =
0 0.7854 1.5708 2.3562 3.1416
Exemplo 27
>> z =6: 1:1
z =
6 5 4 3 2 1
Exemplo 28
>> x = ( 0 : 0 . 2 : 3 ) ;
>> y=exp( x ) . s i n ( x ) ;
>> [ x y ]
ans =
0 0
0.2000 0.1627
0.4000 0.2610
0.6000 0.3099
0.8000 0.3223
1.0000 0.3096
1.2000 0.2807
1.4000 0.2430
1.6000 0.2018
1.8000 0.1610
2.0000 0.1231
2.2000 0.0896
2.4000 0.0613
2.6000 0.0383
2.8000 0.0204
3.0000 0.0070
Existem outras funes para a gerao de vetores tal como logspace que gera um vetor espaado
logaritmicamente
FL/LVP 22
CAPTULO 2. INTRODUO 2.6. MANIPULAO MATRICIAL E VETORIAL
Exemplo 29
>> w=l o g s p a c e ( 1 ,1 ,5)
w =
0.1000 0.3162 1.0000 3.1623 10.0000
2.6.2 Indexando
Elementos individuais de matrizes podem ser referenciados inserindo seus ndices de linha e coluna
entre parnteses. Se uma expresso for usada como ndice, o ndice aproximado paro o inteiro
mais prximo.
Exemplo 30
>> A=[1 2 3 ; 4 5 6 ; 7 8 9 ] ;
>> A(3 ,3)=A(1 ,3)+A( 3 , 1 )
A =
1 2 3
4 5 6
7 8 10
O uso de ":"dois pontos, podemos indexar todas as linhas ou colunas ou uma parte:
Exemplo 31
>> A( : , 1 )
ans =
1
4
7
>> A( 2 : 3 , 1 : 2 )
ans =
4 5
7 8
possvel fazer referncia explcita a algumas linhas ou colunas. Colocam-se os nmeros das
linhas e colunas dentro de colchetes
FL/LVP 23
2.6. MANIPULAO MATRICIAL E VETORIAL CAPTULO 2. INTRODUO
Exemplo 32
>> A( [ 1 3 ] , [ 1 3 ] )
ans =
1 3
7 10
Um outro uso para os dois pontos (:) no empilhamento das colunas de uma matriz qualquer.
No caso de vetores, obteremos sempre o vetor coluna
Exemplo 33
>> A=[1 2 ; 3 4 ; 5 6 ] ;
>> B=A ( : )
B =
1
3
5
2
4
6
Exemplo 34
>> L=[1 1 1 ] ;
>> A(L , : )
ans =
1 2
1 2
1 2
FL/LVP 24
CAPTULO 2. INTRODUO 2.6. MANIPULAO MATRICIAL E VETORIAL
Exemplo 35
>> L = X( : , 3 ) > 1 0 0 ;
>> Y = X(L , : ) ;
A declarao
>> X=[ ]
>> A( : , [ 2 4 ] ) = [ ]
Existe uma coleo de funes que geram matrizes que so normalmente encontradas nos proble-
mas de lgebra linear e processamento de sinais.
FL/LVP 25
2.7. ANLISE DE DADOS CAPTULO 2. INTRODUO
Exemplo 36
>> A=[1 2 ; 3 4 ]
A =
1 2
3 4
>> C = [A A ; ones ( s i z e (A) ) A. ^ 2 ]
C =
1 2 1 3
3 4 2 4
1 1 1 4
1 1 9 16
cria a matriz C com o dobro do tamanho de A. Note que na construo de matrizes usando
matrizes, as dimenses das matrizes menores devem ser compatveis ou ento aparecer uma
mensagem de erro.
2.7.1 Conveno
Por conveno, as diferentes variveis em um conjunto de dados so colocadas em colunas, per-
mitindo observao vertical dos dados atravs das linhas. Portanto, um conjunto de dados de 50
amostras de 13 variveis armazenado numa matriz de dimenso 50-por-13.
O conjunto de dados armazenados na matriz "count" ser usado para ilustrar o uso de algumas
funes
FL/LVP 26
CAPTULO 2. INTRODUO 2.7. ANLISE DE DADOS
38 163 1095
61 420 2407
12 59 287 ]
Para esse exemplo temos 5 observaes para 3 variveis. Isso pode ser obtido como segue
Exemplo 38
>> c o nt =[11 57 2 9 1 ; 4 3 178 1 0 1 1 ; 3 8 163 1 0 9 5 ; 6 1 420 2 4 0 7 ; 1 2 59 2 8 7 ]
cont =
11 57 291
43 178 1011
38 163 1095
61 420 2407
12 59 287
>> [ n , p]= s i z e ( c o nt )
n =
5
p =
3
FL/LVP 27
2.8. FUNES MATRICIAIS CAPTULO 2. INTRODUO
Exemplo 39
>> mx=max( c o nt )
mx =
61 420 2407
>> mu=mean ( c o nt )
mu =
1 . 0 e+03
0.0330 0.1754 1.0182
>> sigma=s t d ( c o nt )
sigma =
21.4126 147.9503 865.7639
p(x) = c1 xd + c2 xd 1
+ + cn
A sintaxe usada a seguinte, onde x a abscissa, p o valor da funo para cada x(i) e n o grau do
polinmio.
>> c=p o l y f i t ( x , p , n )
>> e i g (A)
FL/LVP 28
CAPTULO 2. INTRODUO 2.9. POLINMIOS E PROCESSAMENTO DE SINAIS
Exemplo 40
>> A=[1 2 3 ; 4 5 6 ; 7 8 0 ]
A =
1 2 3
4 5 6
7 8 0
>> p=p o l y (A)
p =
1.0000 6.0000 72.0000 27.0000
Exemplo 41
>> r=r o o t s ( p )
r =
12.1229
5.7345
0.3884
FL/LVP 29
2.9. POLINMIOS E PROCESSAMENTO DE SINAIS CAPTULO 2. INTRODUO
Exemplo 42
>> p2=p o l y ( r )
p2 =
1.0000 6.0000 72.0000 27.0000
Exemplo 43
>> a =[1 2 3 ] ; b=[4 5 6 ] ;
>> c=conv ( a , b )
c =
4 13 28 27 18
Voc pode utilizar a convoluo inversa para dividir dois polinmios, e no caso do exemplo, obter
b novamente.
Exemplo 44
>> [ q , r ]= deconv ( c , a )
q =
4 5 6
r =
0 0 0 0 0
FL/LVP 30
CAPTULO 2. INTRODUO 2.10. FUNES DE FUNES
>> y= f i l t e r ( b , a , x )
filtra os dados do vetor x com o filtro descrito pelos vetores a e b, criando o dado y filtrado
A estrutura do filtro dada a seguir pela sua funo de transferncia de tempo discreta
Integrao numrica
FL/LVP 31
2.10. FUNES DE FUNES CAPTULO 2. INTRODUO
etc
Para o uso das funes de funes, usual representar as funfun atravs de arquivos-M (M-files).
1 1
f(x) = + 6
(x 0, 3)2 + 0, 01 (x 0, 9)2 + 0, 04
foi codificada num arquivo com extenso .m, por exemplo chamado humps.m, cuja listagem
mostrada a seguir:
Exemplo 45
% l i s t a g e m do a r q u i v o humps .m
f u n c t i o n y = humps ( x )
y = 1 . / ( ( x .3).^2 + . 0 1 ) +1./((x .9).^2 + . 0 4 ) 6;
end
O grfico dessa funo obtido como segue
>> x = 1:.01:2;
>> p l o t ( x , humps ( x ) )
O resultado visto na figura 2.3
FL/LVP 32
CAPTULO 2. INTRODUO 2.10. FUNES DE FUNES
Note que o primeiro argumento da funo quad o nome de uma funo. Isso mostra porque
essa funo chamada funo de funo ( uma funo que opera com outras funes). Os outros
dois argumentos so os limites de integrao.
Continuando com o exemplo definido pela funo humps.m, a localizao do mnimo da funo na
regio de 0.5 a 1 calculada com fminsearch:
Exemplo 47
>> xm = f m i n s e a r c h ( humps , 0 . 5 , 1 )
xm =
0.6370
e o seu valor no mnimo
>> y = humps (xm)
y =
11.2528
A localizao do zero da funo que est prximo de x = 0 e de x = 1 ,
>> xz1 = f z e r o ( humps , 0 )
xz1 =
0.1316
>> xz2 = f z e r o ( humps , 1 )
xz2 =
FL/LVP 33
2.11. GRFICOS CAPTULO 2. INTRODUO
1.2995
Duas das funes disponveis para a soluo de equaes diferenciais ordinrias so:
ode23 mtodo Runge-Kutta de ordem baixa
Considere a equao diferencial de segunda
ode45 mtodo Runge-Kutta de ordem mdia
ordem conhecida como equao de Van der Pol.
x + x2 + 1 x + x = 0
Esta equao pode ser escrita como um sistema de equaes diferenciais de primeira ordem
x 1 = x1 (1 x2 ) x2
x 2 = x1
O primeiro passo para simular este sistema criar um arquivo que contem este sistema de equaes
diferenciais. Chamaremos este arquivo de vdpol.m
Para a soluo numrica de equaes diferenciais recomenda-se tambm o SIMULINK que uma
extenso grfica do MATLAB para a simulao de equaes diferenciais, porem opo no dispo-
nvel no OCTAVE.
2.11 Grficos
O sistema grfico de ambos aplicativos, oferecem uma variedade de tcnicas sofisticadas para
representar e visualizar dados. So funes grficas em 2-D e 3-D.
FL/LVP 34
CAPTULO 2. INTRODUO 2.11. GRFICOS
FL/LVP 35
2.11. GRFICOS CAPTULO 2. INTRODUO
Voc pode tambm especificar vrios conjuntos de dados e definir o estilo da linha e sua cor para
cada conjunto de dados, tudo isso num mesmo comando:
>> 0: pi /100:2 pi ;
>> x = sin ( t );
>> y1 = s i n ( t + 0 . 2 5 ) ;
>> y2 = s i n ( t + 0 . 5 ) ;
>> p l o t ( x , y1 , r ,x , y2 , g )
>> t i t l e ( Defasagem )
>> x l a b e l ( x=s i n ( t ) )
>> y l a b e l ( y=s i n ( t +) )
FL/LVP 36
CAPTULO 2. INTRODUO 2.11. GRFICOS
y amarela . ponto
m magenta o circulo
c ciano x marca x
r vermelho + marca +
g verde * marca *
b azul - solida
w branca : pontilhada
k preta -. trao-ponto
tracejada
s quadrado
d diamante
_ tringulo (p/ baixo)
^ tringulo (p/ cima)
< tringulo (p/ esquerda)
> tringulo (p/ direita)
P pentagrama
h hexagrama
FL/LVP 37
2.11. GRFICOS CAPTULO 2. INTRODUO
A funo plot pode ter um nico argumento, como plot(Y). Ela desenha uma curva para cada
coluna de Y. O eixo x formado pelo ndice de cada linha. Se X e Y so matrizes, plot(X,Y)
exibe o grfico das colunas de X versus colunas de Y.
FL/LVP 38
CAPTULO 2. INTRODUO 2.11. GRFICOS
O comando load dados.dat produz uma matriz chamada dados, 9-por-3. A seguir, mostra-se como
renomear cada uma das variveis e como exibir o grfico de cada funo separadamente.
FL/LVP 39
2.11. GRFICOS CAPTULO 2. INTRODUO
FL/LVP 40
CAPTULO 2. INTRODUO 2.12. CONTROLES DE FLUXO
a funo a ser exibida por meio de um grfico, por exemplo com o nome fofx.m
>> f p l o t ( f o f x , [ 0 1 ] , 2 5 , 2 0 , 1 0 )
FL/LVP 41
2.12. CONTROLES DE FLUXO CAPTULO 2. INTRODUO
2.12.1 FOR
Verses prpria dos loops DO ou FOR so disponveis. Com isso possvel repetir um grupo de
declaraes por um nmero predeterminado de vezes.
>> f o r i = 1 : n , x( i ) = 0 , end
impe o valor "0"para todos os primeiros n elementos de x. Se n menor que "1", a construo
ainda permitida, mas as declaraes internas ao loop no so executadas. Se x no existe ou
tem menos elementos que x, ento espaos adicionais so alocados automaticamente.
Voc pode criar loops dentro de loops e pode fazer as declaraes diretamente no prompt do
MATLAB ou do OCTAVE, embora o uso de um M-file seja recomendado nestes casos.
>> f o r i = 1 : 1 :m
>> f o r j = 1 : 1 : n
>> A( i , j ) = 1 / ( i+j 1);
>> end
>> end
>> A
FL/LVP 42
CAPTULO 2. INTRODUO 2.12. CONTROLES DE FLUXO
2.12.2 WHILE
Tal como o for, a declarao while tambm para realizar um grupo de declaraes um certo
nmero de vezes. A diferena bsica que no while, o controle do loop feito por uma condio
lgica. Para ilustrar, vamos resolver um problema: Qual o primeiro inteiro n para o qual n!
(fatorial de n) um nmero de 100 dgitos ?
>> n = 1 ;
>> w h i l e prod ( 1 : n ) < 1 . e100 , n = n+1; end
>> n
A funo prod realiza os produtos dos elementos do argumento. Logo, prod(1:n) o fatorial de
n.
2.12.3 IF e BREAK
Os exemplos a seguir ilustram a utilizao da declarao if. O primeiro exemplo mostra como um
clculo pode ser dividido em trs casos dependendo do sinal e da paridade de n.
>> if n < 0
>> A = 1;
>> e l s e i f rem ( n , 2 ) == 0
>> A = 0
>> else
>> A = 1
>> end
O segundo exemplo envolve um problema no resolvido da teoria dos nmeros:
Exemplo 48
Pegue um nmero i n t e i r o . Se e l e f o r par , d i v i d a por d o i s ; s e f o r
impar , m u l t i p l i q u e e l e por 3 e some 1 . Repita e s s e p r o c e s s o a t que
o i n t e i r o s e j a i g u a l a um. O problema s a b e r s e e x i s t e algum
i n t e i r o para o q u a l o p r o c e s s o nunca termina .
Este programa ilustra as declaraes while e if. Tambm mostrado o uso da funo input que
interrompe a execuo para a entrada de dados e da declarao break que permite interromper
um loop.
FL/LVP 43
2.13. ARQUIVO M CAPTULO 2. INTRODUO
Exemplo 49
% Problema c l s s i c o "3n+1" da t e o r i a dos nmeros
while 1
n = i n p u t ( Entre com n [ n e g a t i v o a b o r t a ] = ) ;
i f n <= 0 , break , end
while n > 1
i f rem ( n , 2 ) == 0
n = n/2
else
n = 3n+1
end
end
end
2.13 Arquivo M
A maneira mais simples de se usar estes processadores no modo de comando. Quando voc entra
com uma linha de comando, ele processa e imediatamente mostra o resultado. Estes processadores
tambm podem executar uma sequncia de comandos que est armazenada num arquivo. Os
arquivos que contm declaraes so chamados M-files porque usam a extenso ?.m?. Por exemplo,
o arquivo bessel.m contm declaraes para o clculo de funes Bessel.
Um M-file consiste de uma sequncia de declaraes, podendo incluir referencias a outros M-files.
Um M-file pode chamar ele prprio de forma recursiva. Voc pode criar um M-file usando um
editor de texto tal como o Bloco de Notas do Windows, ou outro qualquer. Dois tipos usuais de
M-files so: lotes (scripts) e funes (functions). Arquivos scripts automatizam uma sequncia
de comandos. Arquivos de funo permitem criar novas funes s existentes. Ambos, scripts e
funes so arquivos texto tipo ASCII.
FL/LVP 44
CAPTULO 2. INTRODUO 2.13. ARQUIVO M
complexas.
Exemplo 50
% M f i l e ( s c r i p t ) para c a l c u l a r nmeros de F i b o n a c c i
menores de 1000
f = [ 1 1]; i = 1;
w h i l e f ( i ) + f ( i +1) < 1000
f ( i +2) = f ( i ) + f ( i +1);
i = i + 1;
end
plot ( f )
Exemplo 51
f u n c t i o n y = media1 ( x )
% c a l c u l o da mdia
% soma / m
% i n i c i o do programa
[m, n ] = s i z e ( x ) ;
i f m == 1
m = n;
end
y = sum ( x ) / m; end
Por exemplo, se z um vetor de inteiros de 1 a 99, sua mdia pode ser calculada como se-
gue:
Exemplo 52
>> z = 1 : 9 9 ;
>> media1 ( z )
FL/LVP 45
2.13. ARQUIVO M CAPTULO 2. INTRODUO
ans =
50
Voc pode criar uma funo um pouco mais complexa que media1, chamada stat, que tam-
bm calcula o desvio padro. Neste exemplo ilustramos o uso de mltiplos argumentos de
sada.
Exemplo 53
f u n c t i o n [ mean , s t d e v ] = s t a t ( x )
[m, n ] = s i z e ( x ) ;
f m == 1
m = n;
end
mean = sum ( x ) / m;
s t d e v = s q r t ( sum ( x . ^ 2 ) /m mean . ^ 2 ) ;
end
Uma funo que calcula o posto de uma matriz usa mltiplos argumentos de entrada: No caso
geral teramos mltiplos argumentos de entrada e de sada.
Exemplo 54
f u n c t i o n r = rank ( x , t o l )
% rank ( p o s t o em Portugus ) da m a t r i z
s = svd ( x ) ;
FL/LVP 46
CAPTULO 2. INTRODUO 2.13. ARQUIVO M
i f ( n a r g i n == 1 )
t o l = max( s i z e ( x ) ) s ( 1 ) ep s ;
end
r = sum ( s > t o l ) ;
end
Este exemplo tambm mostra o uso da varivel permanente nargin para encontrar o nmero de
argumentos de entrada. A varivel nargout, embora no usada neste exemplo, contm o nmero
de argumentos de sada.
Exemplo 55
function p = angle (h)
% ANGLE Phase a n g l e .
% ANGLE(H) r e t u r n s th e phase a n g l e s , i n r a d i a n s ,
o f a matrix with complex e l e m e n t s .
% C l a s s s u p p o r t f o r i n p u t X:
% f l o a t : double , s i n g l e
% See a l s o ABS, UNWRAP.
% Copyright 1984 2010 The MathWorks , I n c .
% $ R e v i s i o n : 5 . 7 . 4 . 2 $ $Date : 2010/04/21 2 1 : 3 1 : 1 9 $
p = atan2 ( imag ( h ) , r e a l ( h ) ) ;
tm 8 linhas contguas de comentrio a partir da segunda linha. Quando digitamos help angle,
todo esse bloco mostrado. O mecanismo de help ignora linhas de comentrio que aparecem mais
a frente, depois de uma declarao ou mesmo uma linha em branco
FL/LVP 47
2.13. ARQUIVO M CAPTULO 2. INTRODUO
memria, acarretando na sua eliminao automtica. O comando what mostra uma listagem dos
M-files no diretrio atual do disco. O comando type lista os M-files. De uma maneira geral,
quando voc digita um nome de algo no processado, por exemplo, whoopie, o interpretador do
processador executa os seguintes passos:
Exemplo 56
n = i n p u t ( Entre com o v a l o r de n = )
interrompe a execuo, mostra a frase na tela, espera, e ento atribui o valor ou expresso digitada
para a varivel n.
O comando pause interrompe a execuo at que o usurio pressiona uma tecla qualquer. pause(n)
interrompe por n segundos antes de continuar.
@
@t
(y1 ) = y1 y2 y1
@
@t
(y2 ) = y1 + y2 y1
FL/LVP 48
CAPTULO 2. INTRODUO 2.13. ARQUIVO M
Exemplo 57
f u n c t i o n yp = l o t k a ( t , y )
% modelo Votka V o l t e r a
g l o b a l ALFA BETA
yp = [ y ( 1 ) ALFAy ( 1 ) y ( 2 ) ; y ( 2 ) + BETAy ( 1 ) y ( 2 ) ] ;
end
Exemplo 58
>> g l o b a l ALFA BETA
>> ALFA = 0 . 0 1 ;
>> BETA = 0 . 0 2 ;
>> [ t , y ] = ode23 ( l o t k a , [ 0 1 0 ] , [ 1 ; 1 ] ) ;
>> p l o t ( t , y )
Uma vez que ALFA e BETA so globais voc pode alter-las interativamente e novas solues
podem ser obtidas sem ter que editar nenhum arquivo e sem passar os valores como argumentos.
Exemplo 59
>> s = Ola
s =
Ola
O texto armazenado num vetor, um caracter por elemento. Desejando concatenar textos, use
colchetes:
Exemplo 60
>> s = [ s , P e s s o a l ]
s =
FL/LVP 49
2.14. MANIPULAO DE ARQUIVOS CAPTULO 2. INTRODUO
Ola Pessoal
Valores numricos so convertidos em variveis do tipo texto via sprintf, num2str e int2str.
Exemplo 61
>> c = 2 3 ;
>> t i t l e ( [ A temperatura , num2str ( c ) , g r a u s C ] )
Exemplo 62
>> fname = dados ;
>> f o r i = 1 : 1 0
>> e v a l ( [ l o a d , fname , i n t 2 s t r ( i ) ] )
>> end
Exemplo 63
>> f p l o t ( s i n , [ 0 1 0 ] )
FL/LVP 50
CAPTULO 2. INTRODUO 2.14. MANIPULAO DE ARQUIVOS
especificada, considera-se a extenso ".m" como default. Portanto, esse comando normalmente
usado para obtermos uma rpida listagem de um M-file na teta do computador.
O comando diary cria um dirio (log) da sua seo na forma de um arquivo ASCII. Todos os
comandos e resultados, exceto grficos, so automaticamente acrescentados ao arquivo de dirio.
Entre com os dados como uma lista explcita dos elementos. Se o nmero de elementos for
pequeno (10-15 elementos) mais simples digitar os dados explicitamente usando colchetes.
Escreva um programa em C para converter seus dados no formato dos MAT-files e ento use
o comando load.
Para matrizes pequenas use o comando diary para criar uma arquivo de dirio e ento liste
as variveis neste arquivo. Voc pode, mais tarde, usar um editor de texto para manipular
os dados.
Salve os dados num formato ASCII usando o comando save com a opo -ascii.
FL/LVP 51
2.15. DEPURAO CAPTULO 2. INTRODUO
Exemplo 64
>> A = rand ( 4 , 3 ) ;
>> s a v e temp . dat A ascii
Salve os dados como MAT-files usando o comando save e ento escreva um programa em C
ou FORTRAN para reformatar os dados conforme necessrio para a aplicao.
2.15 Depurao
Embora o MATLAB seja uma linguagem menos complexa que outras linguagens de programao,
ele tem sua sintaxe prpria e voc pode precisar corrigir alguns erros. O MATLAB encontra
erros de sintaxe durante a fase de compilao e esses erros, em geral, so simples de corrigir.
O MATLAB tambm encontra erros na fase de execuo do programa; esses erros tendem a ser
mais difceis de solucionar por causa do workspace local s funes ser perdido quando um erro
interrompe a execuo. Quando isto ocorre, retornamos ao workspace base do MATLAB. Se voc
usou ponto-e-vrgula para suprimir os resultados intermedirios da tela, no ter como saber onde
o erro ocorreu.
Para mostrar os resultados intermedirios, voc pode usar um dos mtodos a seguir:
Use a declarao keyboard para permitir que o workspace seja examinado no ponto da
declarao;
Torne a primeira linha da funo uma linha de comentrio de tal forma que a funo possa
ser executada como um script, fazendo com que os resultados intermedirios sejam acessveis
no workspace base;
Use o depurador.
FL/LVP 52
Captulo 3
Para Inicializao
Exemplo 65
>> syms a b c d e f g h i
>> A = [ a b c ;d e f; g h i ]
53
3.1. VARIVEIS SIMBLICAS CAPTULO 3. TOOLBOX DE MATEMTICA SIMBLICA
A =
[ a, b, c ]
[ d, e , f ]
[ g, h, i ]
Note que no necessrio declarar explicitamente a matriz A como um objeto simblico. Agora
podemos operar simbolicamente com a matriz A
Exemplo 66
>> d e t e r m i n a n t e = d e t (A)
determinante =
a e i a f h bd i + b f g + c dh c e g
>> B = A + A
B =
[ 2a , 2b , 2 c ]
[ 2d , 2 e , 2 f ]
[ 2g , 2h , 2 i ]
3.1.2 Simplificaes
Existem algumas funes que alteram a forma de uma funo simblica. Os exemplos a se-
guir ilustram alguns desses comandos: pretty, collect, expand, horner, factor, simplify.
Exemplo 67
>> syms x
>> f = x^3 6x^2 + 11 x 6;
>> p r e t t y ( f ) % visualizao elegante
3 2
x 6 x + 11 x ? 6
>> syms x
>> f = ( x 1)(x 2)(x 3);
>> c o l l e c t ( f ) % agrega potncias i g u a i s
x^3 6x^2 + 11 x ? 6
>> syms a x y
FL/LVP 54
CAPTULO 3. TOOLBOX DE MATEMTICA SIMBLICA 3.1. VARIVEIS SIMBLICAS
>> f = a ( x + y ) ;
>> expand ( f ) % distributiva
ax + ay
>> syms x
>> f = x^3 6x^2 + 11 x 6;
>> h o r n e r ( f ) % forma aninhada
x ( x ( x 6) + 11) 6
>> syms x
>> f = x^3 6x^2 + 11 x 6;
>> f a c t o r ( f ) % f a t o r de menor ordem
(x 3)(x 1)(x 2)
>> syms x y
>> f = exp ( x ) exp ( y ) ;
>> s i m p l i f y ( f ) % simplificao
exp ( x + y )
3.1.3 Substituies
Use o comando subs para realizar substituies diversas.
Exemplo 68
>> syms x
>> f = 2x^2 3x + 1 ;
>> subs ( f , {x } , {1/3} ) % x 1/3
ans =
2/9
>> syms x y
>> f = x + y ;
>> subs ( f , {x , y } , {2 , 3} ) % x 2, y 3
ans =
1
>> syms x y m
FL/LVP 55
3.1. VARIVEIS SIMBLICAS CAPTULO 3. TOOLBOX DE MATEMTICA SIMBLICA
>> f = x + y ;
>> subs ( f , {x , y } , { 2 , m} ) % x 2, y m
ans =
m+2
Exemplo 69
>> syms x
>> f = s i n ( x ) ^ 2 ;
>> d i f f ( f )
ans =
2 c o s ( x ) s i n ( x )
>> syms x y
>> f = s i n ( x )^2 + c o s ( y ) ^ 2 ;
d i f f ( f , y) % d e r i v a d a p a r c i a l de f em r e l a o a y
ans =
2 c o s ( y ) s i n ( y )
Exemplo 70
>> syms x y
>> f = x^2 + y ^ 2 ;
>> i n t ( f , y ) % i n t e g r a l i n d e f i n i d a de f em r e l a o a y
ans =
x^2y + y^3/3
>> syms x y
>> f = x^2 + y ^ 2 ;
>> i n t ( f , y , 3 , 5 ) % i n t e g r a l d e f i n i d a desde 3 a t 5
FL/LVP 56
CAPTULO 3. TOOLBOX DE MATEMTICA SIMBLICA 3.1. VARIVEIS SIMBLICAS
ans =
2x^2 + 98/3
Exemplo 71
>> syms x
>> f = ( x^2 + 5x == 6 );
>> s o l v e ( f )
ans =
3
2
>> syms x
>> f = ( x^2 + 5x 6 );
>> s o l v e ( f )
ans =
3
2
Nas equaes com mltiplas variveis simblicas, pode-se especificar para qual varivel a equao
deve ser resolvida. No exemplo a seguir a funo depende de x e y e sua soluo determinada
em relao a y.
Exemplo 72
>> syms x y
>> s o l v e (6 x^2 6x^2y + xy^2 xy + y^3 y^2 == 0 , y )
ans =
1
2x
3x
FL/LVP 57
3.1. VARIVEIS SIMBLICAS CAPTULO 3. TOOLBOX DE MATEMTICA SIMBLICA
A seguir mostra-se uma forma possvel de representar e resolver um sistema de duas equaes e
duas incgnitas.
Exemplo 73
>> syms x1 x2
>> f 1 = ( x1 x2 + x2 == 3 ) ;
>> f 2 = ( x1 x2 == 1 ) ;
>> [ xx1 , xx2 ] = s o l v e ( f1 , f2 , x1 , x2 )
xx1 = xx2 =
2 1
2 3
A verificao da exatido da soluo pode ser feita com o comando subs, atribuindo os valores
numricos das solues encontradas nas funes
Exemplo 74
>> subs ( f1 , {x1 , x2 } , { xx1 ( 1 ) , xx2 ( 1 ) } )
>> subs ( f2 , {x1 , x2 } , { xx1 ( 2 ) , xx2 ( 2 ) } )
ans = ans =
3 == 3 1== 1
Exemplo 75
>> syms x
>> e z p l o t ( x^3 6x^2 + 11 x 6)
>> t i t l e ( Funo E x p l c i t a : y = x^3 6x^2 + 11 x 6 )
Exemplo 76
>> syms x y
>> e z p l o t ( ( x^2 + y^2)^4 == ( x^2 y ^2)^2 , [ 1 1] )
FL/LVP 58
CAPTULO 3. TOOLBOX DE MATEMTICA SIMBLICA 3.1. VARIVEIS SIMBLICAS
FL/LVP 59
3.1. VARIVEIS SIMBLICAS CAPTULO 3. TOOLBOX DE MATEMTICA SIMBLICA
Exemplo 77
>> syms x ( t )
>> f ( t ) = ( d i f f ( x ) == x ) ;
>> [ xx ] = d s o l v e ( f ( t ) , x ( 0 ) == 1)
xx =
exp( t )
Considere agora a equao diferencial ordinria de 2a ordem com condies iniciais y(0) = 1 e
y(0) = 0.
@2
y(t) = cos (2t) y(t)
@t2
Exemplo 78
>> syms y ( t )
>> Dy = d i f f ( y ) ;
>> y ( t ) = d s o l v e ( d i f f ( y , 2 ) = = c o s (2 t ) y,
y ( 0 ) = = 1 , Dy( 0 ) = = 0 ) ;
>> y ( t ) = s i m p l i f y ( y ) ;
>> p r e t t y ( y ( t ) )
/ t \ 4
8 sin | |
\ 2 /
1
3
Muitas vezes as equaes diferenciais esto na forma de um sistema de equaes. Para ilustrar
um caso desses considere o sistema a seguir com x1 (0) = 1 e x2 (0) = 0.
@
@t
(x1 (t)) = x2 (t)
@
@t
(x2 (t)) = 6x1 (t) 5x2 (t)
FL/LVP 60
CAPTULO 3. TOOLBOX DE MATEMTICA SIMBLICA 3.1. VARIVEIS SIMBLICAS
Exemplo 79
>> syms x1 ( t ) x2 ( t )
>> f 1 ( t ) = ( d i f f ( x1 ) = = x2 ) ;
>> f 2 ( t ) = ( d i f f ( x2 ) = = 6x1 5x2 ) ;
>> [ xx1 , xx2 ] = d s o l v e ( f 1 ( t ) , f 2 ( t ) ,
x1 ( 0 ) = = 1 , x2 ( 0 ) = = 0 )
xx1 =
( exp( 3 t ) ( 1 8 exp ( t ) 12))/6
xx2 =
exp ( 3 t ) ( 6 exp ( t ) 6)
FL/LVP 61
Captulo 4
Transformada de Laplace
62
CAPTULO 4. TRANSFORMADA DE LAPLACE 4.1. SISTEMA DE CONTROLE
4.0.1 Transformada Z
Os comandos ztrans e iztrans determinam a transformada Z e anti-transformada Z, respectiva-
mente.
(z sin(1))/(z 2 2 cos(1) z + 1)
syms z k
F = z/((z + 0.2) (z + 0.5) (z 1));
f = iztrans(F, k);
disp(f(k)=)
z
F(z) = pretty(f)
(z + 0, 2) (z + 0, 5) (z 1)
f(k)=
k k
20 ( 1/2) 25 ( 1/5)
+ 5/9
9 9
s
F(s) =
s2 + 2s + 10
FL/LVP 63
4.1. SISTEMA DE CONTROLE CAPTULO 4. TRANSFORMADA DE LAPLACE
Exemplo 80
>> numerador =[1 0 ] ;
>> denominador =[1 2 1 0 ] ;
>> F=t f ( numerador , denominador )
F =
s
s ^2 + 2 s + 10
Continuous time t r a n s f e r f u n c t i o n .
Exemplo 81
>> F1 = t f ( [ 1 0 ], [ 1 2 10 ] ) ;
>> F2 = t f ( [ 1 1 ], [ 1 1 ] );
>> F = [ F1 ; F2 ]
F =
From i n p u t t o output . . .
s
#1:
s ^2 + 2 s + 10
s 1
#2:
s + 1
Continuous time t r a n s f e r f u n c t i o n .
Uma maneira talvez mais visual de definir uma funo de transferncia definindo primeiro a
funo s. Por exemplo, veja como isso seria feito para o caso da funo de transferncia
s
F(s) =
s2 + 2s + 10
FL/LVP 64
CAPTULO 4. TRANSFORMADA DE LAPLACE 4.1. SISTEMA DE CONTROLE
Exemplo 82
>> S=t f ( s ) ;
>> F=S / ( S^2+2S+10)
F =
s
s ^2 + 2 s + 10
Continuous time t r a n s f e r f u n c t i o n .
4.1.2 Zero-Polo-Ganho
Um modelo SISO pode ser caraterizado pelos seus zeros, polos e ganho. Por exemplo, a funo
de transferncia
(s + 1) (s + 2)
F(s) = 5
(s + 3) (s + 4)
representada por um objeto ZPK por meio dos valores de seus zeros, polos e ganho:
Exemplo 83
>> z e r o s =[ 1 2];
>> p o l o s =[ 3 4];
>> ganho = [ 5 ] ;
>> F=zpk ( z e r o s , p o l o s , ganho )
F =
5 ( s +1) ( s +2)
( s +3) ( s +4)
Continuous time z e r o / p o l e / g a i n model .
y = Cx + Du
FL/LVP 65
4.1. SISTEMA DE CONTROLE CAPTULO 4. TRANSFORMADA DE LAPLACE
Exemplo 84
>> A = [ 0 1 ; 2 3 ] ;
>> B = [ 0 1 ; 1 0 ] ;
>> C = [ 1 1 ; 0 3 ] ;
>> D = [ 0 0 ; 0 0 ] ;
>> s i s t = s s ( A, B, C,D )
sist =
a =
x1 x2
x1 0 1
x2 2 3
b =
u1 u2
x1 0 1
x2 1 0
c =
x1 x2
y1 1 1
y2 0 3
d =
u1 u2
y1 0 0
y2 0 0
Continuous time s t a t e s p a c e model .
FL/LVP 66
CAPTULO 4. TRANSFORMADA DE LAPLACE 4.1. SISTEMA DE CONTROLE
Exemplo 85
s i s t = t f ( num , den , Ts )
s i s t = zpk ( z , p , k , Ts )
s i s t = s s (A, B, C, D, Ts )
O comando a seguir cria um funo de transferncia de tempo discreto com um perodo de amos-
tragem de 0,1 segundos:
Exemplo 86
>> G = t f ( [ 1 1] , [ 1 0.5] , 0.1 )
G =
z 1
z 0.5
Sample time : 0 . 1 s e c o n d s
D i s c r e t e time t r a n s f e r f u n c t i o n .
Uma maneira talvez mais visual de definir uma funo de transferncia de tempo discreto
definindo primeiro a funo ?z? e o perodo de amostragem. Por exemplo, veja como isso seria
feito para o caso da seguinte funo de transferncia para Ts = 0, 1s
z 1
G(z) =
z 0, 5
Exemplo 87
>> Ts = 0 . 1 ;
>>Z = t f ( z , Ts ) ;
>>G = (Z 1)/(Z 0.5)
G =
z 1
z 0.5
FL/LVP 67
4.1. SISTEMA DE CONTROLE CAPTULO 4. TRANSFORMADA DE LAPLACE
Sample time : 0 . 1 s e c o n d s
D i s c r e t e time t r a n s f e r f u n c t i o n .
O exemplo a seguir ilustra o uso desses comandos. Note que como o sistema de tempo
contnuo, Ts retorna nulo indicando isso.
Exemplo 88
>> z e r o s =[ 1 2];
>> p o l o s =[ 3 4];
>> ganho = [ 5 ] ;
>> F=zpk ( z e r o s , p o l o s , ganho ) ;
>> [ A, B, C, D, Ts]= s s d a t a (F)
A =
3.0000 2.0000
0 4.0000
B =
2.8284
2.8284
C =
3.5355 3.5355
D =
5
Ts =
0
FL/LVP 68
CAPTULO 4. TRANSFORMADA DE LAPLACE 4.1. SISTEMA DE CONTROLE
sist_novo = tf(sist)
sist_novo = zpk(sist)
sist_novo = ss(sist)
O exemplo a seguir mostra como converter de espao de estados para zero-polo-ganho e funo de
transferncia.
Exemplo 89
>> s i s t = s s ( 2, 1 , 1 , 3 ) ;
>> zpk ( s i s t )
ans =
3 ( s +2.333)
( s +2)
Continuous time z e r o / p o l e / g a i n model .
>> t f ( s i s t )
ans =
3 s + 7
s + 2
Continuous time t r a n s f e r f u n c t i o n .
Para a converso do tempo contnuo para o tempo discreto utilizam-se as funes especficas c2d
e d2c, respectivamente. A sintaxe dos comandos :
sysd = c2d(sysc, T s) %T s = periodo de amostragem (s)
sysc = d2c(sysd)
Na converso presume-se o uso de um segurador de ordem zero (ZOH). Para usar um mtodo de
converso diferente, deve-se especificar o mtodo num terceiro parmetro de entrada:
FL/LVP 69
4.2. OPERAES COM BLOCOS CAPTULO 4. TRANSFORMADA DE LAPLACE
>> s i s t = s i s t 1 + s i s t 2
>> s i s t = s i s t 1 s i s t 2
FL/LVP 70
CAPTULO 4. TRANSFORMADA DE LAPLACE 4.2. OPERAES COM BLOCOS
>> s i s t 2=i n v ( s i s t 1 )
>> s i s t = [ H1 H2 ]
>> s i s t = [ H1
H2 ]
FL/LVP 71
4.2. OPERAES COM BLOCOS CAPTULO 4. TRANSFORMADA DE LAPLACE
Exemplo 90
>> num_G=[1 5 ] ;
>> den_G=p o l y ( [ 0 3 4]);
>> G=t f (num_G, den_G)
G =
s + 5
s ^3 + 7 s ^2 + 12 s
Continuous time t r a n s f e r f u n c t i o n .
>> num_H=2;
>> den_H=[1 2 0 ] ;
>> H=t f (num_H, den_H)
H =
2
s + 20
Continuous time t r a n s f e r f u n c t i o n .
FL/LVP 72
CAPTULO 4. TRANSFORMADA DE LAPLACE 4.3. RESPOSTA TEMPORAL
sys =
s ^2 + 25 s + 100
s ^4 + 27 s ^3 + 152 s ^2 + 238 s 10
Continuous time t r a n s f e r f u n c t i o n .
Exemplo 91
>> s i s t =[ t f ( 1 , [ 1 1 1 ] ) , t f ( 1 , [ 1 1 ] ) ]
>> s t e p ( s i s t )
FL/LVP 73
4.3. RESPOSTA TEMPORAL CAPTULO 4. TRANSFORMADA DE LAPLACE
>> s t e p ( s i s t , 1 0 ) % s i m u l a de 0 a t 10 segundos
>> t = 0 : 0 . 1 : 10
>> u = s i n ( t ) % entrada p a r t i c u l a r
>> l s i m ( s i s t , u , t ) % s i m u l a para a e n t r a d a e s p e c i f i c a d a
As funes podem gerar os valores das frequncias para os quais a resposta ser calculada. A
escolha da faixa desses valores feita em funo dos polos e zeros da funo. Para impor uma
dada faixa particular de frequncias num intervalo [wmin, wmax], use a seguinte sintaxe.
FL/LVP 74
CAPTULO 4. TRANSFORMADA DE LAPLACE 4.3. RESPOSTA TEMPORAL
possvel tambm especificar um vetor particular de pontos com espaamento logaritmo, por
exemplo, desde 10 1 at 10+1 e com 100 pontos:
>> w=l o g s p a c e ( 1 ,+1 ,100);
>> bode ( s i s t ,w)
O exemplo abaixa demonstra como criar grficos customizados a partir dos dados numricos de
respostas temporais e frequncias:
Exemplo 92
>> F = t f ( [ 1 1] , [ 1 0 . 1 1 ] )
>> [ ganho , f a s e ,w] = bode (F)
>> [ y , t ] = s t e p (F , 1 5 )
>> [ p , z ] = pzmap (F)
FL/LVP 75
4.3. RESPOSTA TEMPORAL CAPTULO 4. TRANSFORMADA DE LAPLACE
>> s u b p l o t ( 221 )
>> s e m i l o g x ( w, 20 l o g 1 0 ( ganho ( : ) ) ) , g r i d on
>> t i t l e ( Diagrama de Bode de Ganho (dB ) )
>> s u b p l o t ( 2 2 3 )
>> s e m i l o g x (w, f a s e ( : ) ) , g r i d on
>> t i t l e ( Diagrama de Bode de Fase ( g r a u s ) )
>> s u b p l o t ( 2 2 2 )
>> p l o t ( t , y ) , g r i d on
>> t i t l e ( Resposta ao Degrau u n i t r i o )
FL/LVP 76
CAPTULO 4. TRANSFORMADA DE LAPLACE 4.3. RESPOSTA TEMPORAL
Exemplo 93
>> G=t f ( 1 , [ 1 1 ] ) ;
>> T=G/(1+G)
T =
s + 1
s ^2 + 3 s + 2
Continuous time t r a n s f e r f u n c t i o n .
s + 2
Continuous time t r a n s f e r f u n c t i o n .
Inferir o comportamento da sada atravs dos valores dos polos de malha fechada (admitindo
que a resposta mais influenciada pelos polos que pelos zeros).
A opo pelo clculo dos polos nos parece mais razovel mesmo com o auxlio do computador.
A resposta temporal poder ser mal condicionada (dificuldades numrica) e poder ser difcil
percebermos tendncias e propriedades. Uma dificuldade na avaliao da resposta por meio dos
polos de malha fechada que as contribuies de cada polo no podem ser somadas. Devemos
estabelecer um critrio de dominncia e relacionar o comportamento da sada ao comportamento
destes polos dominantes. Para suprir tal problema utiliza-se a simulao temporal na validao
do projeto. O MATLAB e o OCTAVE possui a funo rlocus que automatiza a construo do
lugar das razes a partir da funo de transferncia de malha aberta.
FL/LVP 77
4.3. RESPOSTA TEMPORAL CAPTULO 4. TRANSFORMADA DE LAPLACE
Exemplo 94
>> G=t f ( [ 1 2] ,[1 2 3 4 ] ) ;
>> r l o c u s (G)
FL/LVP 78
CAPTULO 4. TRANSFORMADA DE LAPLACE 4.3. RESPOSTA TEMPORAL
Exemplo 95
>> s i s o t o o l
Outra dessas interfaces que bastante til na anlise de sistemas de controle a denominada ltiview
que permite todo tipo anlise de respostas no domnio do tempo e da frequncia de sistemas LTI
(step, impulse, lsim, initial, bode, bodemag, nyquist, nichols, sigma, pzmap, iopzmap). A sintaxe
do comando :
Exemplo 96
>> l t i v i e w
FL/LVP 79
4.3. RESPOSTA TEMPORAL CAPTULO 4. TRANSFORMADA DE LAPLACE
FL/LVP 80