Anda di halaman 1dari 42

MATLAB - UMA INTRODUO

CAPTULO 1 - Introduo
Motivao - Este curso tem por objetivo a familiarizao com pacote matemtico
MATLAB e SciLab. Este ltimo agora apresentado por ser de domnio pblico, e
portanto, no ter custo associado aquisio. As operaes bsicas so mostradas, bem
como os comandos de programas, grficos e toolboxes. Alguns exemplos e exerccios
so mostrados. Todavia, muito embora o SciLab disponha de pacote equivalente ao
Simulink, o mesmo no explorado aqui, sendo mostrado apenas para Matlab.

1. Instalao
Para a instalao do Matlab, basta seguir as instrues do CD de instalao,
enquanto que o SciLab obtido diretamente na internet. A instalao de ambos bastante
simples.

CAPTULO 2 - Operaes Bsicas


Os comandos a seguir so vlidos para ambos os pacotes computacionais Matlab e
SciLab. Quando alguma diferena ocorrer, a mesma ser enfatizada.
Nmeros complexos
A representao de um nmero complexo em MATLAB pode ser feita atravs de
qualquer uma das formas abaixo:
a = 2 + i*6
ou
a = 2 + j*6
Em SciLab a representao a mesma, muito embora a varivel complexa tenha
que ser definida:
i ou j = sqrt(-1)
As verses atuais do Matlab trabalham de forma ainda mais simplificada, permitindo
escrever:
a = 2 +6i

ou
a = 2 + 6j
Se for de interesse trabalhar com a parte real do nmero a, usa-se o comando:
b = real (a)
Com resposta dada pelo programa b = 2
Da mesma forma, se a parte imaginria for de interesse, usa-se:
c = imag (a)
Com resposta dada por c = 6
Para o nmero complexo dado acima ser representado na forma polar, usa-se o
comando:
d = abs(a)
Com resposta dada por d = 6.3246, que o mesmo que
fase em Matlab ser dado por:

4 36 . O ngulo de

e = angle (a)
Com resposta em radianos dada por e = 1.2490, que o mesmo que atang (6/2).
Esta funo tambm existe em Matlab e SciLab.
Notas
1. Note que para cada nova varivel de interesse, foi associada uma letra qualquer. Aqui
vai a primeira diferena do pacote em relao a FORTRAN, por exemplo. Esta
diferena reside no fato de no se precisar declarar variveis nem obedecer nenhuma
hierarquia para tornar uma varivel real ou inteira.
2. Da nota acima, segue uma importante observao relativa representao de nmeros
complexos: As variveis i e j podem, portanto, assumir qualquer valor. Desta
forma, se i for especificado como 2, por exemplo, ao se escrever
a = 2 + i*6
teremos como resposta a = 14. Logo, ao se representar nmeros complexos, deve-se ter
certeza de que i e j no esto previamente definidos.
3. Quando escrevemos a = 2 + i*6, obtemos na tela
a=
2.0 + 6.0000i

Logo, o programa repete a informao ou processamento executado. Se isto se tornar


inconveniente (muita informao na tela durante o processamento), pode se escrever
a = 2 + i*6 ;
O smbolo ; colocado ao fim da expresso informa ao programa que no necessrio
reproduzir tal informao na tela.
Vetores
A representao clssica de vetores (ordem n x 1) obtida da seguinte maneira:
A = [1
2
3];
A = [1
2
3]
A =
1
2
3
Note que no caso acima no foi usado o smbolo ;, e por este motivo o
programa devolveu o vetor A. Matlab e SciLab permitem criar diretamente um vetor
com elementos iguais a um ou zero da seguinte forma:
A = ones(3,1)
Com resposta:

A=
1
1
1
A = zeros(3,1)
Com resposta:

A=
0
0
0
Estes vetores podem se mostrar extremamente teis em determinadas situaes.
Operaes com vetores sero mostradas adiante.
Matrizes
Matrizes podem ser representadas de duas formas, como mostrado a seguir:
A = [1 2 3; 4 5 6; 7 8 9]
Uma vez que o smbolo ; no foi usado, o programa responde:
A=
1
4
7

2
5
8

3
6
9

Ou da forma direta:
A = [1 2 3
456
7 8 9]
A =
1 2 3
4 5 6
7 8 9
Em ambos os casos, tem-se a mesma matriz.

Operaes
Vetor
Assuma os vetores
A=[

B= [

3
4
5]

7
5
2]

Algumas operaes sero mostradas:


Norma
Acha-se a norma de um vetor atravs do comando
w = norm (A)
Com resposta dada por
w = 7.0711
onde w representa a norma euclidiana do vetor A Outros tipos de norma podem ser
identificados. De maior importncia, destaca-se a norma infinita, dada por
norm(A, inf) = max (abs (A)).
norm(A, -inf) = min( abs (A)).
Pode-se tambm achar a norma de um vetor que seja combinao de dois outros vetores,
como por exemplo:
f = norm (A+B)
Com resposta
f = 15.1658
Note que neste caso, MATLAB computou internamente o vetor A+B e forneceu a
resposta pedida.

Multiplicao
Sabe-se que no possvel a multiplicao de dois vetores, a menos que se
transponha um deles. Entretanto, MATLAB fornece uma opo de se multiplicar, ou
elevar a alguma potncia, cada membro de um vetor ou uma matriz, da seguinte forma:
A multiplicao, elemento por elemento, dada pelo smbolo .*. Desta forma,
pode-se ter:

C = A .* B
Com resposta
C=[
21
20
10]
Que igual ao produto de cada elemento do vetor A por cada elemento do vetor B.
Da mesma forma, para elevar cada componente do vetor A a uma potncia (lembre que
no possvel elevar um vetor ao quadrado, por exemplo), usa-se o smbolo .^. Desta
forma:
D = A .^2
Com resposta
D =[
9
16
25 ]
Uma vez mais, manipulaes com vetores poderiam ser includas, como mostrado a
seguir:
G = (A+B).^2
Com resposta
G=[
100
81
49]
Produtrio e somatrio dos termos
Obtidos atravs dos comandos
h = sum (A)
Com resposta
h = 12

e
k = prod (A)
Com resposta
k = 60

2.3.2 Matrizes
Assuma as matrizes
A=[
1 3
6 3
8 9

5
8
2]

B=[
4 9
2 3
7 0

8
5
1]

Diversas operaes podem ento ser mostradas.

Adio, Subtrao e Multiplicao


Como as matrizes tm dimenses coerentes, podem ser somadas, subtradas ou
multiplicadas entre si.
Adio e subtrao so comandos bem simples, como mostrado
C=A+B
Com resposta
C=[
5 12 13
8 6 13
15 9 3 ]
D = A-B

Com resposta
D=[
-3 -6 -3
4 0 3
1 9 1]
A multiplicao de matrizes obtida atravs do comando *. Note que neste
caso, tem-se uma operao diferente daquela obtida quando o smbolo .* usado.
Portanto:
E=A*B
fornece
E=[
45 18 28
86 63 71
64 99 111]
enquanto
F = A .*B
fornece

F= [
4 27 40
12 9 40
56 0 2 ]

Norma
Obtida da mesma forma daquela mostrada para vetores
g = norm (A)
Com resposta
g = 15.6614

OBS: Manipulaes internas so novamente vlidas.

Rank
Obtido atravs de
h = rank (A)
Com resposta
h=3
Autovalores e autovetores
Em Matlab, dados pelo comando
[ u v] = eig (A)
Com resposta
u=[
-0.3767 -0.7767 -0.3571
-0.6368 0.6064 -0.4574
-0.6727 0.1703 0.8144]

v=[
15.0000
0
0
0 -2.4384
0
0
0 -6.5616]
Das matrizes acima, v representa a matriz de autovalores, enquanto u representa a
matriz de autovetores. A mesma resposta acima obtia em SciLab em resposta ao
seguinte comando:
[ u v] = spec (A)

Valores singulares
Obtidos, desta vez pelo mesmo comando para os dois pacotes como:

l = svd (A)
Com resposta
l=[
15.6614
6.4924
2.3604]
Determinante
Obtido atravs do comando
m = det (A)
Com resposta
m = 240
Que igual ao produtrio da matriz diagonal v, obtida atravs do comando
n = prod (diag(v))

Nmero de condio de uma matriz


Obtido atravs do comando
o = cond (A)
Com resultado dado por
o = 6.6351

Inversa de matrizes
Assuma o produto p = A*B-1 . A soluo, em MATLAB, pode ser obtida atravs
de
a) P = A*inv(B)
Com soluo

-0.0213

P=[
1.0638 -0.1489
10

-0.3617 2.0851 0.4681


1.9787 -2.9362 0.8511 ]
Entretanto, para matrizes de grande porte, achar a inversa de b pode ser
computacionalmente ineficiente. Uma alternativa, entre outras, pode ser utilizada.
P = A/B
Com soluo idntica a mostrada acima. Atravs desta operao, o resultado
obtido diretamente, sem necessidade de inversa. Tem-se, para a soluo de um sistema do
tipo Ax = b, tomando b como um vetor.
x = A\b soluo de Ax = b
x = inv(A)*b
que fornecem a mesma resposta.. A primeira opo fatora a matriz A, enquanto que a
segunda acha a resposta atravs da inversa explcita da matriz A.

Fatorao de matrizes
Obtida atravs do comando
[l, u] = lu (A)
Obtendo como resultado as matrizes triangular inferior L e superior U
Mudando a dimenso de uma matriz
Assuma que se queira mudar a dimenso da matriz a de 3x3 para 1x9. Isto pode
ser feito atravs do comando:
Q = reshape(A,[1 9])
Obtendo:
Q=1

Este comando no existe em SciLab.


Transposta de uma matriz
Obtido atravs do smbolo . Assim, para se achar a transposta de a, usa-se:
Y = A

11

Obtendo:

Y=[
1 6 8
3 3 9
5 8 2]
Manipulaes com matrizes
Uma importante caracterstica de MATLAB refere-se a facilidade com que se
pode manusear matrizes. Alguns exemplos sero dados. Um elemento qualquer de uma
matriz a pode ser identificado como A(i, j), onde i e j so os componentes que identificam
a linha e a coluna associadas ao componente.. Para se referir a todas as linhas ou colunas
de uma matriz usa-se o smbolo :. Desta forma, alguns exemplos podem ser mostrados,
tomando novamente as matrizes A e B .
Se for de interesse formar um vetor com a segunda coluna matriz A, usa-se:
r = A (: , 2)
Obtendo:
r=[
3
3
9]
Da mesma forma, se fosse de interesse formar um vetor transposto a partir da
segunda linha da matriz A:
s = A (2, : )
Com o resultado
s=[
6 3

8]

possvel tambm criar um vetor com alguns elementos da matriz. Por exemplo,
pode-se criar um vetor com alguns componentes de linha ou coluna, como por exemplo,
criar um vetor com os dois primeiros componentes de segunda coluna de
t = A (1:2 , 2)
Obtendo:

12

t=[
3
3]
Estas propriedades so muito importantes, uma vez que possibilitam a
manipulao de matrizes nas mais variadas formas. Pode-se tambm criar uma nova
matriz a partir de uma j existente. Assuma que se queira criar uma matriz x a partir da
matriz Entretanto, as linhas e colunas 2 e 3 da matriz x correspondem s linhas e
colunas 3 e 2 da matriz a . Desta forma:
x = A;
Cria uma matriz x idntica a a . Note o smbolo ;, indicando que a matriz x no
deve aparecer na tela.
x([2 3],:)=A([3 2],:)
x=[
1 3
8 9
6 3

5
2
8]

A operao acima trocou as segunda e terceira linhas, mas manteve as colunas


idnticas s colunas da matriz A Para esta ltima operao, tem-se:
x(:,[2 3])=A(:,[3 2])
x=[
1 5
8 8
6 2

3
3
9]

Finalmente a matriz desejada obtida. Poderia-se tambm acrescentar novos


elementos matriz A, atravs de operaes ou simples insero de componentes:
Exemplo de insero simples:
A(4,2)=1
A=[
1 3 5
6 3 8
8 9 2
0 1 0]

13

A insero do elemento criou uma nova linha com elementos nulos, exceto o
componente 1 relativo posio (4, 2).
Exemplo de insero atravs de operao:
A (4,2) = A (1,1) + A (3,3)
A=[
1 3 5
6 3 8
8 9 2
0 3 0]
Desta vez um novo elemento, funo de outros elementos da matriz, foi
acrescentado, alterando a dimenso da matriz.
Matrizes Esparsas
MATLAB trabalha com matrizes esparsas. Uma matriz pode ser armazenada na
forma esparsa, na forma (i,j)=comp, onde i e j so as colunas do elemento comp, ou
podem ser transformadas em esparsas a partir de uma matriz previamente fornecida na
forma densa. Cada um dos casos mostrado abaixo:
Montando uma matriz genrica:
A(1,1)=2;
A(2,3)=4;
A(3,2)=8;
Gerando:
A =[
0
0
8

2
0
0

0
4
0]

que uma matriz na forma densa. Portanto, para criar uma matriz esparsa, usa-se o
comando:
A = sparse (A)
e a matriz acima se tornaria

14

A=
(1,1)
(3,2)
(2,3)

2
8
4

Onde apenas os elementos diferentes de zero aparecem. Portanto, para gerar a


matriz acima na forma esparsa, usa-se os comandos:
A = sparse(A)
a=
All zero sparse: 0-by-0
A(1,1)=2;
A(2,3)=4;
A(3,2)=8;
A
Obtendo:
A=
(1,1)
(3,2)
(2,3)

2
8
4

Matrizes Aleatrias
Para gerar matrizes aleatrias, basta dar o comando
A = rand(3,3)
que MATLAB automaticamente cria uma matriz de valores aleatrios de dimenso 3x3.
No caso deste exemplo, o programa devolveu:

A =[
0.6539 0.9103 0.0475
0.4160 0.7622 0.7361
0.7012 0.2625 0.3282]

15

Exerccio
Criar duas matrizes aleatrias A(4,3) e B(3,4). Achar C=A*B. Achar rank,
norma, autovalores e determinante de C. Achar sua transposta. Criar um vetor aleatrio
e(4,1) e resolver
Cx=e
CT x = e
Resolver atravs da inversa, fatorao LU e sinais lgicos \ e /.

16

CAPTULO 3 - Grficos em duas e trs dimenses


Grfico em Duas Dimenses
Assuma os dois vetores x e y relacionados entre si.
x = [1 2 3 4 5]T
y = [2 4 6 8 10]T
Quer-se representar a relao entre ambos atravs de um grfico. Para isto usa-se o
comando:
plot(x,y)
No comando acima x e y so os vetores a serem plotados. O seguinte grfico obtido

Note entretanto que a figura est sem ttulo, legenda no eixos x e y e anotaes
referentes curva. Estes podem ser diretamente obtidos atravs da edio da figura,
disponvel em ambos os pacotes. Todavia, pode-se fazer as modificaes no console,
conforme mostrado a seguir:
title('grfico exemplo para turma CESE')
xlabel('eixo x')
ylabel('eixo y')

17

Portanto, title o comando que d ttulo curva, enquanto xlabel e ylabel definem
as legendas dos eixos x e y, respectivamente. Para inserir anotao dentro do grfico,
usa-se, somente em Matlab
gtext('grafico x-y')
E o novo grfico mostrado:

Se ao invs da linha cheia obtida no grfico, fosse prefervel outro tipo de linha,
como asteriscos, por exemplo, usaria-se:
plot (x, y, *)
Obtendo:

18

Outros tipos e cores de linhas podem ser obtidos. Abaixo so mostrados os


possveis:
Cores
y
amarelo
r
vermelho
g
verde
b
azul
w
branco
m
lils
c
azul claro
Linha
.
ponto
o
x
+
*
:
-.
..

crculo
x
+
asterisco
dois pontos
Ponto com trao
tracejada

19

Note que o grfico gerado em MATLAB foi importado por um editor de textos
(word) diretamente. Para que isto ocorra necessrio que se exporteo grfico obtido
atravs do comando print. Algumas opes so mostradas abaixo:
dps

- PostScript for black and white printers


-dpsc - PostScript for color printers
-

-deps - Encapsulated PostScript (EPSF)


-depsc - Encapsulated Color PostScript (EPSF)
-dpcx16

- Older color PCX file format (EGA/VGA, 16-color)


-dpcx256 - Newer color PCX file format (256-color)

-dbitmap - Send figure to clipboard in bitmap format

Grfico em 3 dimenses
Assuma que em adio aos vetores x e y, tenha-se o vetor z:
z=[3 5 7 8 2]T
Para obter um grfico que relacione x, y e z, usa-se , em Matlab, o comando:
plot3 (x, y, z)
O equivalente em SciLab dado por:
Plot3d (x,y,z)
Obtendo:

20

Note que das opes mostradas para o caso de duas dimenses, somente o
comando gtext no foi utilizado, uma vez que este s funciona para sistemas em duas
dimenses.

21

CAPTULO 4 - Comandos de arquivos


Introduo
Todos os comandos mostrados nas sees anteriores foram desenvolvidos na tela
dentro do ambiente MATLAB e SciLab. possvel, entretanto, chamar um arquivo
previamente desenvolvido que contenha informaes ou comandos para serem inseridos
no ambiente MATLAB e Scilab. Tais arquivos podem ter qualquer nome, desde que
tenham extenso m, para MATLAB e sce para SciLab. Assim, em MATLAB, para se
carregar tal arquivo, basta digitar seu nome, no sendo necessrio digitar a extenso m,
automaticamente assumida pelo programa. Por exemplo, assuma que a matriz a mostrada
anteriormente esteja armazenada em um programa chamado caso1.m. Assuma tambm
que o smbolo ; no seja colocado ao fim da matriz. Portanto, uma vez dentro do
ambiente MATLAB, basta digitar caso1, e a matriz A aparecer na tela. Em SciLab, o
arquivo executado atravs da bara de ferramentas, que tem a opo de executar o
programa de extenso sce. Caso o smbolo ; seja colocado ao fim da matriz, aps
digitar caso1, a matriz A no ser mostrada, muito embora esteja armazenada. De forma a
checar as variveis armazenadas, usa-se o comando who. O exemplo abaixo ilustra o
uso deste comando aps a matriz a ter sido armazenada.
Digita-se who
Obtendo a resposta:
Your variables are:
A
Uma vez carregada a matriz, qualquer das funes mostradas previamente pode
ser utilizada. Note tambm que uma vez que o arquivo de extenso m pode conter
comandos do programa, o operador pode criar um arquivo .m que funcione como um
programa . O exemplo abaixo ilustra o arquivo caso1.m contendo a matriz A e os
comandos que pedem seu determinante, autovalores, norma e rank. Note que o smbolo
; colocado ao fim de cada comando.
A=[
1 2 3
4 5 6
7 8 9] ;
% os comandos esto abaixo
det1=det(A) ;
aut=eig(A) ;
norm1=norm(A) ;
rank1=rank(A) ;

22

O smbolo % utilizado no arquivo representa comentrios, e no so


considerados pelo programa. Em SciLab os comentrios so dados pelo comando //. A
excluso deste smbolo antes da sentena os comandos esto abaixo produziria uma
mensagem de erro. Digitando caso1 na tela, esta permanecer limpa aps a execuo do
programa, uma vez que o smbolo ; foi utilizado.
caso1
O comando who indica as variveis processadas:
who
Your variables are:
A
aut
det1
norm1 rank1
Portanto, todas as variveis esto reconhecidas pelo programa. Para saber o valor
destas variveis, basta digitar a varivel de interesse. Por exemplo, para saber a norma de
a, digita-se
norm1
que a varivel associada a norma no programa caso1.m. A resposta do programa dada
por
norm1 =
16.8481
Qualquer outra varivel pode ser obtida desta forma. Uma outra possibilidade
refere-se ao armazenamento dos resultados obtidos. Para este fim o comando diary
pode ser utilizado.
Armazenando resultados
Assuma que as operaes executadas acima devam ser armazenadas em um outro
arquivo. Para isso, abre-se um arquivo usando o comando diary nome, onde nome
um nome qualquer escolhido. Anota-se as variveis de interesse, e quando o processo se
encerrar, fecha-se o arquivo com o comando diary off. O exemplo abaixo feito a
partir do arquivo caso1.m.
caso1
diary resul
aut
aut =

23

16.1168
-1.1168
0.0000
det1
det1 =
0
norm1
norm1 =
16.8481
rank1
rank1 =
2
diary off
O arquivo resul fornece
caso1
diary resul
aut
aut =
16.1168
-1.1168
0.0000
det1
det1 =
0
norm1
norm1 =
16.8481
rank1

24

rank1 =
2
diary off
Idntico, portanto, aos comandos dados na tela.
Comando clear
Foi mostrado que o comando who mostra as variveis armazenadas pelo
programa. Pode ser de interesse do operador, por uma razo qualquer, excluir uma
varivel durante o processamento. Para isso usa-se o comando clear, que pode ser
utilizado para limpar quantas variveis se queira. Voltando ao exemplo do arquivo
caso1.m, tem-se as variveis:
Your variables are:
a

aut

det1

norm1

rank1

Assuma que seja de interesse excluir a varivel aut. Executa-se o comando


clear aut
Digitando o comando who novamente fornece
Your variables are:
a

det1

norm1

rank1

E a varivel no est mais armazenada. Se todas as variveis devem ser excludas,


usa-se o comando
clear
Digitando who mais uma vez, obtm-se:
Your variables are:
Indicando que nenhuma varivel encontra-se armazenada. O conjunto de
comandos mostrados at ento, permite que se programe em MATLAB. Para isto, faz-se
uso dos comandos mostrados na prxima seo.
Comando size

25

Devolve a dimenso do elemento especificado. Por exemplo, size(A) forneceria

ans =
3 3
Exerccios
1Criar um arquivo de extenso m, que contenha uma matriz A de dimenso 4x4.
Achar B=A*A, C=B*A; D=C*A, E=D*A, F=E*A
Achar o menor autovalor de cada matriz e plotar, para cada matriz o maior valor
singular em funo do maior autovalor (mdulo). Salvar o grfico em extenso bmp ou
pcx e importar em um documento do word.
2Criar uma matriz aleatria de dimenso 5x5. Criar uma outra matriz, obtida a
partir da multiplicao de um escalar por uma das linhas da matriz original. Varie este
escalar a partir de 1 at 0. Para cada matriz obtida, anotar o menor autovalor e o
determinante. Plotarestes valores em funo da constante de multiplicao.

26

CAPTULO 5 - Comandos de Programa


Introduo
Um programa para ser executado em MATLAB precisa ser montado em um
arquivo de extenso m. A exemplo de outras linguagens de programao, existem
alguns comandos lgicos inerentes ao programa, alm das funes definidas
anteriormente. Por outro lado, o programa no requer declarao nem dimensionamento
das variveis. A seguir, algumas funes so mostradas.
For
Comando utilizado para gerar um loop. Semelhante ao DO utilizado em
FORTRAN. O processo se repete at que o limite superior (ou inferior) seja atingido.
Exemplo:
for ti=1:10
j(ti)=2*ti;
end
tj
tj =
2

10

12

14

16

18

20

No exemplo acima, t varia de 1 a 10 com passo 1. Para cada valor de ti, uma
varivel tj criada. Passos diferentes de 1 tambm podem ser considerados, como
mostrado abaixo:
k=1;
for ti=1:2:11
tj(k)=ti;
k=k+1;
end
tj
1 3 5 7 9

11

No exemplo acima, ti varia de 1 a 11 com passo de 2. A varivel tj criada dentro


do loop com ndice k atualizado a cada atualizao de ti. O exemplo acima serve para
nmeros negativos tambm. Por exemplo,

27

for t1=1:-0.1:0
varia ti de 1 a 0 com passo de -0.1.
If-Then-Else
Comando lgico condicional. Se uma determinada condio for satisfeita,
executa-se algo, caso contrrio, executa-se outra instruo, ou nenhuma. Exemplo:
for ti=1:10
if ti <= 5
tj(ti)=ti;
else
tj(ti)=-ti;
end
end
tj
tj =
1

5 -6

-7

-8

-9 -10

No exemplo acima, ti varia de 1 a 10. dada ento a seguinte instruo: Se ti for


menor ou igual a 5, a varivel j assume valor igual a ti. Caso contrrio (maior que 5) j
assume o valor negativo de ti. A insero do smbolo <= estimula o usurio a conhecer
os comandos lgicos disponveis. Uma lista dada abaixo:
<=
>=
<
>
==
~=

Menor ou igual
Maior ou igual
Menor
Maior
Igual
Diferente

Com os comandos acima, qualquer instruo pode ser dada dentro do comando IF.
Note que o comando if foi dado dentro do comando FOR, o que j estrutura a formao
de um programa.
BREAK
Utilizado para encerrar uma execuo, desde que alguma exigncia seja satisfeita.
Exemplo:
for ti=1:10
if ti == 7

28

tj(ti)=ti;
break
break
end
end
tj =
0

No exemplo acima, ti varia de 1 a 10. Quando ti for igual a 7, a varivel tj assume


o mesmo valor, e o operador quer interromper a operao. Isto feito atravs do comando
break. O primeiro break interrompe o comando if, enquanto o segundo interrompe o
comando for.
While
tambm um operador condicional. Manda executar determinadas instrues
enquanto uma condio for respeitada. Exemplo:
ti=0;
while ti <= 6
ti=ti+1;
tj(ti)=ti;
end
tj
tj =
1

No exemplo acima, enquanto ti for menor ou igual a 6, tj assume o mesmo valor.


Max, Min e Abs
As funes acima fornecem os valores mximo, mnimo e absoluto de um vetor.
A funo abs pode ser combinada com as funes mximo e mnimo. Como exemplo,
assuma o vetor
A=[
3
-9
-4]
Com as operaes

29

max(A)
ans =
3
min(A)
ans =
-9
Portanto, as funes max e min consideram o valor real de uma varivel. Se o
valor mximo ou mnimo for desejado em mdulo, obtem-se:
max(abs(A))
ans =
9
min(abs(A))
ans =
3
Neste caso, a considerao modular, e o valor -9, considerado mnimo no
primeiro caso, torna-se mximo no segundo.
Sort
Assuma o mesmo vetor a considerado acima. Se for do interesse do usurio
ordenar o vetor a de forma crescente, usa-se o comando
b = sort (A)
Obtendo como resposta:
b=
-9
-4
3
Uma vez mais, se os valores em mdulo so desejados, usa-se:
c = sort ( abs (A))

30

Obtendo:
c=
3
4
9
Uma terceira alternativa refere-se possibilidade de escalonamento em ordem
modular decrescente. Para isso, usa-se:
d = sort(-abs ( A))
Obtendo:
d=
-9
-4
-3
Note neste caso que os valores de d so negativos, mas isto irrelevante se o valor
modular for de interesse.
Find
Utilizado para encontrar uma varivel de interesse dentro de um conjunto de
dados. A resposta a posio da varivel dentro do conjunto de dados. Por exemplo
e = find(A == -9)
Com resposta:
e=
2
fprintf
Utilizado para fornecer alguma informao relevante na tela. Esta informao
pode vir associada a um comentrio.
fprintf('Representando %g%% do sistema\n\n',nfgh);

A frase 'Representando %g%%


enquanto nfgh a informao.

do

31

sistema\n\n'

comentrio,

Input
Utilizada para fornecer um dado a ser utilizado pelo programa. Neste caso, a
informao digitada pelo usurio na tela.
dc=input('fornea o valor desejado = > ')
E o valor digitado na tela ser automaticamente considerado igual a dc.
pause
Utilizado para parar provisoriamente o processamento. Aps digitar enter
novamente, o programa volta a ser executado.
Save
Utilizado para salvar em formato binrio algumas variveis de interesse.
Save arq X
Salva no arquivo arq.mat a varivel X. Para carregar a varivel X, basta digitar
load arq, e automaticamente esta varvel estar na rea de trabalho.

Exerccio
1Criar uma matriz aleatria de dimenso 8x8 em um arquivo de extenso m.
Achar norma, rank, autivalores e determinante desta matriz. Multiplica a matriz de 1 a 10.
Calcule todos tens acima para cada fator e plote tudo em funo do fator.
2-

Automatizar exerccios do captulo anterior.

3-

Resolver a equao f(x)=x2 +2x + 1 por Newton Raphson.

Cdigo:
x=0;

erro=10;
while (erro>0.001)
dy=2*x+2;
delta=-(1/dy)*erro;
x=x+delta;
erro=x^2+2*x+1;
end

32

33

Captulo 6 - . Simulink
Introduo
Simulink uma opo em MATLAB para simulao de sistemas dinmicos. Estes
sistemas poderiam ser implementados computacionalmente em MATLAB, mas podem
ser resolvidos de forma mais simples atravs desta opo. A seguir, ser mostrado como
montar um diagrama de blocos em um arquivo de extenso m. Dentro do ambiente
MATLAB, digite simulink. A seguinte tela ser obtida:

Sources

Sinks

Discrete

Linear

Nonlinear Connections Extras

SIMULINK Block Library (Version 1.3c)

Cada um dos tens acima constitui diversas opes de bloco. Por exemplo,
clicando duas vezes sobre o smbolo sources, obtem-se:
Signal S ource Library
12:34
Clock

Signal
Generator

Digital Clock
1
Constant

Sine Wave

Step Input

untitled.mat

[T,U]

From File

Random
Number

Repeating
Sequence

Pulse
Generator

From
Workspace Chirp S ignal

Band-Limited
White Noise

34

Clicando sobre linear, obteria-se:


Linear Library
.

+
+
Sum

Inner
Product
du/dt
Derivative

1/s
Integrator
1
Gain

1.317

Matrix
Gain

Slider
Gain

1
s+1
Transfer Fcn

(s-1)
s(s+1)
Zero-Pole

x' = Ax+Bu
y = Cx+Du
State-S pace

Obtendo, portanto, diversos possveis componentes.

Montagem de um arquivo de blocos


Para se criar um arquivo de extenso m, clica-se em file no menu disponvel da caixa
simulink, escolhendo a opo new. Portanto, passa-se a ter duas janelas, uma com as
opes simulink, e outra referente ao arquivo de extenso m. Para criar um
diagrama de blocos neste arquivo, pressiona-se o boto esquerdo do mouse sobre o
elemento de interesse e arrasta-se para a janela do arquivo m. O exemplo abaixo mostra
quando a caixa geradora de onda senoidal arrastada para a janela do arquivo de extenso
m. Esta operao copia esta caixa na janela, i.e., a operao original continua
disponvel na janela simulink.

35

Signal S ource Library


12:34
Clock

Signal
Generator

Digital Clock
1
Constant

Sine Wave

Step Input

untitled.mat

[T,U]

From File

Random
Number

Repeating
Sequence

Pulse
Generator

From
Workspace Chirp S ignal

Band-Limited
White Noise

Obtendo na janela

Sine Wave

Um sinal integrador deve ser adicionado. Clicando sobre a opo linear, obtm-se
tal comando. Arrastando para a janela do arquivo de extenso m, obtem-se:

36

Sine Wave

1/s
Integrator

A conexo entre ambos feita clicando o boto esquerdo do mouse sobre a seta
do sinal de onda senoidal, arrastando esta em seguida at o integrador, obtendo:

Si ne Wave

1/s
Integrator

Desta forma, um simples diagrama de bloco foi montado. Assuma ento que os
parmetros da sinal de onda senoidal devam ser ajustados. Neste caso, basta clicar duas
vezes o boto esquerdo sobre este bloco no arquivo de extenso m. Um quadro a
respeito deste operador aparecer, onde amplitude, frequncia e ngulo podem ser
ajustados. Tal operao possvel para qualquer operador. Este arquivo, se pronto, deve
ser salvo. Tal comando feito atravs do menu file disponvel na barra do arquivo onde
o diagrama de blocos foi gerado. Note que este arquivo deve ter extenso m.
Assuma que uma vez que este arquivo esteja gravado, deseja sair do programa.
Basta fechar o arquivo atravs do menu file e dar o comando quit no prompt do
MATLAB. Para carregar o arquivo novamente, uma vez estando dentro do MATLAB,
basta digitar simulink, clicar sobre a opo file, open e clicar sobre o nome do
arquivo. Se por exemplo, for de interesse do operador inserir um bloco de somatrio na
sada, procede-se da seguinte forma:

37

Apaga-se a linha que liga os dois primeiros blocos:

Si ne Wave

1/s
Integrator

Insere-se o bloco somatrio entre os dois blocos existentes:

+
+
Sine Wave Sum

1/s
Integrator

Finalmente, faz-se as conexes:

38

Si ne Wave

+
+
Sum

1/s
Integrator

E o novo diagrama est pronto. Deve-se salvar o novo arquivo e proceder com a
simulao.
Simulando um arquivo de extenso m
ma vez criado o arquivo de extenso m, deve-se escolher que mtodo de
integrao utilizar. Simulink oferece as seguintes possibilidades:
linsim
rk23
rk45
gear
adams
euler

Mtodo que subtrai as equaes dinmicas


Runge-Kutta de terceira ordem
Runge-Kutta de quinta ordem
Mtodo previsor-corretor de Gear para sistemas stiff.
Mtodo previsor-corretor de Adams
Mtodo de Euler

linsim usado para modelos de sistemas lineares.


Rk23 e rk45 so utilizados para sistemas altamente no lineares.
Gear usado quando o sistema no linear, mas bem comportado. No funciona bem
para perturbaes bruscas na entrada ou quando h singularidade.
Adams usado quando o sistema no linear e bem comportado, mas com poucas
constantes de tempo variveis.
Euler usado somente para testar resultados.
Comando de Execuo
Asumindo que o linsim seja escolhido (todos os outros tm procedimento
idntico), digita-se:
[a b]=linsim(file,tmax,xo,options)
onde

39

a,b so os vetores de sada


file o arquivo de extenso m onde o diagrama de blocos est contido.
Tmax o tempo mximo de processamento.
xo o vetor de condies iniciais
options contm a tolerncia, passo mximo e mnimo.
Um grfico que mostre o comportamento de a em funo de b pode ser obtido
como mostrado anteriormente na seo de grficos. O exemplo abaixo mostra a
simulao do diagrama de blocos genrico mostrado no arquivo sim1.m :

Signal
Generator

+
+
Sum

s+1
Transfer Fcn

Gain

O sinal gerador de uma onda senoidal de amplitude 1. O seguinte comando


dado para executar a simulao:
options=[0.001,0.00001,10];
[tl,xl]=linsim('sim1',10,1,options);
Com o comando de grfico
plot(tl,xl,w)
Obtendo o seguinte grfico:

40

Se uma das variveis for alterada, por exemplo, a funo de transferncia tiver o
numerador igual a 2, obtm-se:

Portanto, qualquer mudana pode ser feita para se testar o efeito nas variveis de
estado.
41

Exerccio
Simular o sistema abaixo, onde
R=2, L=1

Incluir um capacitor de C=1 em srie e simular novamente. Simular utilizando funo de


transferncia (bloco transfer function) e por variveis de estado (bloco state space)

42

Anda mungkin juga menyukai