You are on page 1of 43

MATLAB - UMA INTRODUÇÃO

CAPÍTULO 1 - Introdução

Motivação - Este curso tem por objetivo a familiarização com pacote matemático
“MATLAB”. As operações básicas são mostradas, bem como os comandos de programas,
gráficos e “toolboxes”. Alguns exemplos e exercícios são mostrados.

1. Instalação

Para o windows 95, a instalação do pacote consiste nos seguintes passos:

a) clique sobre a opção “Configurações”.


b) Escolha o ícone “Painel de Controle”.
c) Clique sobre “Adicionar ou Remover Programa”.

Siga as instruções da tela, i.e., insira cada disco na medida em que o computador
solicitar. Após a instalação dos discos básicos, o computador oferece a opção de instalar as
“toolboxes”. Para instalá-las, continue seguindo as instruções da tela.
Uma vez instalado o programa, clique sobre o ícone matlab para acessar o programa.
Uma vez acessado o programa, o usuário estará no diretório em que o pacote estiver instalado.
Pode-se mudar de diretório normalmente dentro do programa. O exemplo abaixo mostra a
página de acesso e a forma de se mudar para um diretório qualquer.

Commands to get started: intro, demo, help help


Commands for more information: help, whatsnew, info, subscribe

» cd ..
» cd flow

No exemplo acima, as duas primeiras linhas são inerentes ao programas, i.e., elas
aparecerão todas as vezes em que o programa for acessado. A terceira linha refere-se à
mudança para o diretório raiz, e a quarta linha indica que o usuário quer trabalhar no diretório
flow. Ao entrar no programa, o usuário visualiza uma barra de ferramentas na parte superior da
tela. As opções fornecidas nesta barra de ferramentas serão tratadas mais adiante. Uma vez
acessado o programa, o usuário está apto a trabalhar com suas operações básicas. A seção a
seguir introduz algumas funções importantes. Note, entretanto, que os conceitos matemáticos
associados a cada comando não serão tratados aqui.

1
CAPÍTULO 2 - Operações Básicas

Números complexos

A representação de um número complexo em MATLAB pode ser feita através de


qualquer uma das formas abaixo:

a = 2 + i*6

ou

a = 2 + j*6

Se for de interesse trabalhar com a parte real do número “a”, usa-se o comando:

b = real (a)

Com resposta dada pelo programa b = 2


Da mesma forma, se a parte imaginária for de interesse, usa-se:

c = imag (a)

Com resposta dada por c = 6


Para o número 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 4 + 36 . Se ângulo de fase
será dado por:

e = angle (a)

Com resposta em radianos dada por e = 1.2490, que é o mesmo que atang (6/2).
Esta função também existe em Matlab.

Notas
1. Note que para cada nova variável de interesse, foi associada uma letra qualquer. Aqui vai a
primeira diferença do pacote em relação a FORTRAN, por exemplo. Esta diferença reside
no fato de não se precisar declarar variáveis nem obedecer nenhuma hierarquia para tornar
uma variável real ou inteira.

2
2. Da nota acima, segue uma importante observação relativa à representação de números
complexos: As variáveis “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 números complexos, deve-se ter
certeza de que “i” e “j” não estão previamente definidos.

3. Quando escrevemos a = 2 + i*6, obtemos na tela


a=

2.0 + 6.0000i

Logo, o programa repete a informação ou processamento executado. Se isto se tornar


inconveniente (muita informação na tela durante o processamento), pode se escrever

a = 2 + i*6 ;

O símbolo “;” colocado ao fim da expressão informa ao programa que não é necessário
reproduzir tal informação na tela.

Vetores

A representação clássica 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 não foi usado o símbolo “;”, e por este motivo o programa
devolveu o vetor “A”. Pode-se criar diretamente um vetor com elementos iguais a um ou zero
da seguinte forma:

3
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 situações. Operações


com vetores serão 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 símbolo “;” não foi usado, o programa responde:

A=

1 2 3
4 5 6
7 8 9

Ou da forma direta:
» A = [1 2 3
456
7 8 9]

4
A =

1 2 3
4 5 6
7 8 9
Em ambos os casos, tem-se a mesma matriz.

Operações

Vetor

Assuma os vetores

A=[ B= [

3 7
4 5
5] 2]

Algumas operações serão mostradas:

Norma

Acha-se a norma de um vetor através 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 importância, destaca-se a norma infinita, dada por

norm(A, inf) = max (abs (A)).


norm(A, -inf) = min( abs (A)).

Pode-se também achar a norma de um vetor que seja combinação de dois outros vetores,
como por exemplo:

f = norm (A+B)

5
Com resposta
f = 15.1658

Note que neste caso, MATLAB computou internamente o vetor A+B e forneceu a resposta
pedida.

Multiplicação

Sabe-se que não é possível a multiplicação de dois vetores, a menos que se


transponha um deles. Entretanto, MATLAB fornece uma opção de se multiplicar, ou elevar a
alguma potência, cada membro de um vetor ou uma matriz, da seguinte forma:

A multiplicação, elemento por elemento, é dada pelo símbolo “.*”. 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 potência (lembre que não é
possível elevar um vetor ao quadrado, por exemplo), usa-se o símbolo “.^”. Desta forma:

D = A .^2

Com resposta

D =[
9
16
25 ]

6
Uma vez mais, manipulações com vetores poderiam ser incluídas, como mostrado a seguir:

G = (A+B).^2

Com resposta

G=[
100
81
49]
Produtório e somatório dos termos

Obtidos através dos comandos

h = sum (A)

Com resposta

h = 12

k = prod (A)

Com resposta

k = 60

2.3.2 Matrizes

Assuma as matrizes

A=[
1 3 5
6 3 8
8 9 2]

B=[
4 9 8
2 3 5
7 0 1]

7
Diversas operações podem então ser mostradas.

Adição, Subtração e Multiplicação

Como as matrizes têm dimensões coerentes, podem ser somadas, subtraídas ou


multiplicadas entre si.

Adição e subtração são 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 multiplicação de matrizes é obtida através do comando “*”. Note que neste caso,
tem-se uma operação diferente daquela obtida quando o símbolo “.*” é usado. Portanto:

E=A*B

fornece

E=[
45 18 28
86 63 71
64 99 111]

enquanto

» F = A .*B

8
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: Manipulações internas são novamente válidas.

Rank

Obtido através de

h = rank (A)

Com resposta

h=3

Autovalores e autovetores

Dados pelo comando

[ u v] = eig (A)

Com resposta

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

Valores singulares

Obtidos através do comando

l = svd (A)

Com resposta

l=[
15.6614
6.4924
2.3604]

Determinante

Obtido através do comando

m = det (A)

Com resposta

m = 240

Que é igual ao produtório da matriz diagonal v, obtida através do comando

n = prod (diag(v))

10
Número de condição de uma matriz

Obtido através do comando

o = cond (A)

Com resultado dado por


o = 6.6351

Inversa de matrizes

Assuma o produto p = A*B-1 . A solução, em MATLAB, pode ser obtida através de

a) P = A*inv(B)

Com solução

P=[
-0.0213 1.0638 -0.1489
-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 solução idêntica a mostrada acima. Através desta operação, o resultado é obtido
diretamente, sem necessidade de inversa. Tem-se, para a solução de um sistema do tipo Ax =
b

x = A\B é solução de Ax = b
x = B/A é solução de xA = B

Fatorização de matrizes

Obtida através do comando

[l, u] = lu (A)

11
Obtendo como resultado as matrizes triangular inferior L e superior U

Mudando a dimensão de uma matriz

Assuma que se queira mudar a dimensão da matriz a de 3x3 para 1x9. Isto pode ser
feito através do comando:

Q = reshape(A,[1 9])

Obtendo:

Q=1 6 8 3 3 9 5 8 2
Transposta de uma matriz

Obtido através do símbolo “’”. Assim, para se achar a transposta de a, usa-se:

Y = A’

Obtendo:

Y=[
1 6 8
3 3 9
5 8 2]

Manipulações com matrizes

Uma importante característica de MATLAB refere-se a facilidade com que se pode


manusear matrizes. Alguns exemplos serão dados. Um elemento qualquer de uma matriz a pode
ser identificado como A(i, j), onde i e j são 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
símbolo “:’. 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

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

É possível também 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:

t=[
3
3]
Estas propriedades são muito importantes, uma vez que possibilitam a manipulação de
matrizes nas mais variadas formas. Pode-se também 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 idêntica a a . Note o símbolo “;”, indicando que a matriz x não deve
aparecer na tela.

x([2 3],:)=A([3 2],:)

x=[
1 3 5
8 9 2
6 3 8]

A operação acima trocou as segunda e terceira linhas, mas manteve as colunas


idênticas às colunas da matriz A Para esta última operação, tem-se:

13
x(:,[2 3])=A(:,[3 2])

x=[
1 5 3
8 8 3
6 2 9]

Finalmente a matriz desejada é obtida. Poderia-se também acrescentar novos


elementos à matriz A, através de operações ou simples inserção de componentes:

Exemplo de inserção simples:

A(4,2)=1

A=[
1 3 5
6 3 8
8 9 2
0 1 0]

A inserção do elemento criou uma nova linha com elementos nulos, exceto o
componente 1 relativo à posição (4, 2).

Exemplo de inserção através de operação:


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, função de outros elementos da matriz, foi acrescentado,
alterando a dimensão 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 são 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:

14
Montando uma matriz genérica:

A(1,1)=2;
» A(2,3)=4;
» A(3,2)=8;

Gerando:

A =[
2 0 0
0 0 4
0 8 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

A=

(1,1) 2
(3,2) 8
(2,3) 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:

15
A=
(1,1) 2
(3,2) 8
(2,3) 4

Matrizes Aleatórias

Para gerar matrizes aleatórias, basta dar o comando

A = rand(3,3)

que MATLAB automaticamente cria uma matriz de valores aleatórios de dimensão 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]

Exercício

Criar duas matrizes aleatórias 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 aleatório e(4,1) e
resolver

Cx=e

CT x = e
Resolver através da inversa, fatorização LU e sinais lógicos \ e /.

16
CAPÍTULO 3 - Gráficos em duas e três dimensões

Gráfico em Duas Dimensões

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 relação entre ambos através de um gráfico. Para isto usa-se o
comando:

plot(x,y,’w’)

17
No comando acima x e y são os vetores a serem plotados e w refere-se a branco, que é a cor
a ser usada, uma vez que o fundo da tela á preto. O seguinte gráfico é obtido

Note entretanto que a figura está sem título, legenda no eixos x e y e anotações
referentes à curva. Estes podem ser obtidos da seguinte forma:

title('gráfico exemplo para turma CESE')


xlabel('eixo x')
ylabel('eixo y')

Portanto, title é o comando que dá título à curva, enquanto xlabel e ylabel definem as
legendas dos eixos x e y, respectivamente. Para inserir anotação dentro do gráfico, usa-se:

gtext('grafico x-y')

E o novo gráfico é mostrado:

18
Se ao invés da linha cheia obtida no gráfico, fosse preferível outro tipo de linha, como
asteriscos, por exemplo, usaria-se:

plot (x, y, ‘w*’)

Obtendo:

19
Outros tipos e cores de linhas podem ser obtidos. Abaixo são mostrados os possíveis:
Cores
y amarelo
r vermelho
g verde
b azul
w branco
m lilás
c azul claro

Linha
. ponto

o círculo
x x
+ +
* asterisco
: dois pontos
-. Ponto com traço
.. tracejada

20
Note que o gráfico gerado em MATLAB foi importado por um editor de textos (word)
diretamente. Para que isto ocorra é necessário que se salve o gráfico obtido através do
comando print. Algumas opções são 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

As opções estão em Inglês por terem sido extraídas diretamente do programa


MATLAB.

Gráfico em 3 dimensões

Assuma que em adição aos vetores x e y, tenha-se o vetor z:

z=[3 5 7 8 2]T

Para obter um gráfico que relacione x, y e z, usa-se o comando:

plot3 (x, y, z)

Obtendo:

21
Note que das opções mostradas para o caso de duas dimensões, somente o comando
gtext não foi utilizado, uma vez que este só funciona para sistemas em duas dimensões.

22
CAPÍTULO 4 - Comandos de arquivos

Introdução

Todos os comandos mostrados nas seções anteriores foram desenvolvidos na tela


dentro do ambiente MATLAB. É possível, entretanto, chamar um arquivo previamente
desenvolvido que contenha informações ou comandos para serem inseridos no ambiente
MATLAB. Tais arquivos podem ter qualquer nome, desde que tenham extensão “m”. Assim,
para se carregar tal arquivo, basta digitar seu nome, não sendo necessário digitar a extensão
“m”, automaticamente assumida pelo programa. Por exemplo, assuma que a matriz a mostrada
anteriormente esteja armazenada em um programa chamado “caso1.m”. Assuma também que
o símbolo “;” não seja colocado ao fim da matriz. Portanto, uma vez dentro do ambiente
MATLAB, basta digitar caso1, e a matriz A aparecerá na tela. Caso o símbolo “;” seja
colocado ao fim da matriz, após digitar caso1, a matriz A não será mostrada, muito embora
esteja armazenada. De forma a checar as variáveis armazenadas, usa-se o comando “who”. O
exemplo abaixo ilustra o uso deste comando após a matriz a ter sido armazenada.
Digita-se who
Obtendo a resposta:

Your variables are:

Uma vez carregada a matriz, qualquer das funções mostradas previamente pode ser
utilizada. Note também que uma vez que o arquivo de extensão “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 símbolo “;” é colocado ao fim de cada
comando.

A=[
1 2 3
4 5 6
7 8 9] ;
% os comandos estão abaixo
det1=det(A) ;
aut=eig(A) ;
norm1=norm(A) ;
rank1=rank(A) ;

O símbolo “%” utilizado no arquivo representa comentários, e não são considerados


pelo programa. A exclusão deste símbolo antes da sentença “os comandos estão abaixo”

23
produziria uma mensagem de erro. Digitando caso1 na tela, esta permanecerá limpa após a
execução do programa, uma vez que o símbolo “;” foi utilizado.

» caso1

O comando “who” indica as variáveis processadas:

» who

Your variables are:

A aut det1 norm1 rank1


Portanto, todas as variáveis estão reconhecidas pelo programa. Para saber o valor
destas variáveis, basta digitar a variável de interesse. Por exemplo, para saber a norma de a,
digita-se

» norm1

que é a variável associada a norma no programa caso1.m. A resposta do programa é dada por

norm1 =

16.8481

Qualquer outra variável 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 operações 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 variáveis 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 =
16.1168
-1.1168
0.0000

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

» norm1

norm1 =

16.8481

» rank1

25
rank1 =
2

» diary off

Idêntico, portanto, aos comandos dados na tela.

Comando clear

Foi mostrado que o comando “who” mostra as variáveis armazenadas pelo programa.
Pode ser de interesse do operador, por uma razão qualquer, excluir uma variável durante o
processamento. Para isso usa-se o comando “clear”, que pode ser utilizado para limpar
quantas variáveis se queira. Voltando ao exemplo do arquivo caso1.m, tem-se as variáveis:

Your variables are:

a aut det1 norm1 rank1

Assuma que seja de interesse excluir a variável aut. Executa-se o comando

clear aut

Digitando o comando “who” novamente fornece

Your variables are:

a det1 norm1 rank1

E a variável não está mais armazenada. Se todas as variáveis devem ser excluídas, usa-
se o comando

clear

Digitando “who” mais uma vez, obtém-se:

Your variables are:

Indicando que nenhuma variável encontra-se armazenada. O conjunto de comandos


mostrados até então, permite que se programe em MATLAB. Para isto, faz-se uso dos
comandos mostrados na próxima seção.

Comando size

26
Devolve a dimensão do elemento especificado. Por exemplo, size(A) forneceria

ans =

3 3

Exercícios

1- Criar um arquivo de extensão “m”, que contenha uma matriz A de dimensão 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 função do maior autovalor (módulo). Salvar o gráfico em extensão “bmp” ou “pcx”
e importar em um documento do word.

2- Criar uma matriz aleatória de dimensão 5x5. Criar uma outra matriz, obtida a partir da
multiplicação 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 função da constante de multiplicação.

27
CAPÍTULO 5 - Comandos de Programa

Introdução

Um programa para ser executado em MATLAB precisa ser montado em um arquivo


de extensão “m”. A exemplo de outras linguagens de programação, existem alguns comandos
lógicos inerentes ao programa, além das funções definidas anteriormente. Por outro lado, o
programa não requer declaração nem dimensionamento das variáveis. A seguir, algumas
funções são 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 4 6 8 10 12 14 16 18 20

No exemplo acima, tï” varia de 1 a 10 com passo 1. Para cada valor de ti, uma
variável tj é criada. Passos diferentes de 1 também 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

28
No exemplo acima, ti varia de 1 a 11 com passo de 2. A variável tj é criada dentro do
loop com índice k atualizado a cada atualização de ti. O exemplo acima serve para números
negativos também. Por exemplo,

for t1=1:-0.1:0

varia ti de 1 a 0 com passo de -0.1.

If-Then-Else

Comando lógico condicional. Se uma determinada condição for satisfeita, executa-se


algo, caso contrário, executa-se outra instrução, ou nenhuma. Exemplo:

for ti=1:10
if ti <= 5
tj(ti)=ti;
else
tj(ti)=-ti;
end
end
» tj

tj =

1 2 3 4 5 -6 -7 -8 -9 -10

No exemplo acima, ti varia de 1 a 10. É dada então a seguinte instrução: Se ti for


menor ou igual a 5, a variável j assume valor igual a ti. Caso contrário (maior que 5) j assume o
valor negativo de ti. A inserção do símbolo “<=” estimula o usuário a conhecer os comandos
lógicos disponíveis. Uma lista é dada abaixo:

<= Menor ou igual


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

Com os comandos acima, qualquer instrução pode ser dada dentro do comando IF.
Note que o comando if foi dado dentro do comando FOR, o que já estrutura a formação de
um programa.

BREAK

29
Utilizado para encerrar uma execução, desde que alguma exigência seja satisfeita.
Exemplo:

for ti=1:10
if ti == 7
tj(ti)=ti;
break
break
else
end
end
» tj

tj =
1 2 3 4 5 6

No exemplo acima, ti varia de 1 a 10. Quando ti for igual a 7, a variável tj assume o


mesmo valor, e o operador quer interromper a operação. Isto é feito através do comando
break. O primeiro break interrompe o comando if, enquanto o segundo interrompe o comando
for.

While

É também um operador condicional. Manda executar determinadas instruções


enquanto uma condição for respeitada. Exemplo:

ti=0;
» while ti <= 6
ti=ti+1;
tj(ti)=ti;
end
» tj

tj =

1 2 3 4 5 6 7

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

Max, Min e Abs

30
As funções acima fornecem os valores máximo, mínimo e absoluto de um vetor. A
função abs pode ser combinada com as funções máximo e mínimo. Como exemplo, assuma o
vetor

A=[
3
-9
-4]

Com as operações

max(A)

ans =
3

» min(A)

ans =
-9

Portanto, as funções max e min consideram o valor real de uma variável. Se o valor
máximo ou mínimo for desejado em módulo, obtem-se:

max(abs(A))

ans =
9

» min(abs(A))

ans =
3

Neste caso, a consideração é modular, e o valor -9, considerado mínimo no primeiro


caso, torna-se máximo no segundo.

Sort

Assuma o mesmo vetor a considerado acima. Se for do interesse do usuário ordenar o


vetor a de forma crescente, usa-se o comando

b = sort (A)

31
Obtendo como resposta:

b=

-9
-4
3

Uma vez mais, se os valores em módulo são desejados, usa-se:

c = sort ( abs (A))

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 são negativos, mas isto é irrelevante se o valor
modular for de interesse.

Find

Utilizado para encontrar uma variável de interesse dentro de um conjunto de dados. A


resposta é a posição da variável dentro do conjunto de dados. Por exemplo

e = find(A == -9)

Com resposta:

32
e=
2

fprintf

Utilizado para fornecer alguma informação relevante na tela. Esta informação pode vir
associada a um comentário.

fprintf('Representando %g%% do sistema\n\n',100*nfgh/ss);

A frase 'Representando %g%% do sistema\n\n' é o comentário, enquanto


é a informação.

Input

Utilizada para fornecer um dado a ser utilizado pelo programa. Neste caso,a
informação é digitada pelo usuário na tela.

dc=input('forneça o valor desejado = > ')

E o valor digitado na tela será automaticamente considerado igual a dc.

pause

Utilizado para parar provisoriamente o processamento. Após digitar enter novamente, o


programa volta a ser executado.

Save

Utilizado para salvar em formato binário algumas variáveis de interesse.

Save arq X

Salva no arquivo arq.mat a variável X. Para carregar a variável X, basta digitar load
arq, e automaticamente esta varável estará na área de trabalho.

ode23, ode45

Usados para resolver equações diferenciais no tempo. Para isso, usa-se o comando:

[T,Y] = ODE23('arquivo', T0, Tfinal, Y0)

33
onde arquivo é o arquivo de extensão “m” utilizado, T0 e Tfinal são o tempo inicial e final de
simulação e Y0 são as condições iniciais.

Exercício

1- Criar uma matriz aleatória de dimensão 8x8 em um arquivo de extensão “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 função do fator.

2- Automatizar exercícios do capítulo anterior.

3- Resolver a equação f(x)=x2 +2x + 1 por Newton Raphson.

Código:
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

34
Capítulo 6 - . Simulink

Introdução

Simulink é uma opção em MATLAB para simulação de sistemas dinâmicos. Estes


sistemas poderiam ser implementados computacionalmente em MATLAB, mas podem ser
resolvidos de forma mais simples através desta opção. A seguir, será mostrado como montar
um diagrama de blocos em um arquivo de extensão “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 opções de bloco. Por exemplo, clicando
duas vezes sobre o símbolo sources, obtem-se:

35
Signal Source Library

12:34
Clock Digital Clock
Repeating
Sequence
1
Constant
Signal
Generator
Pulse
Generator
Sine Wave Step Input

[T,U]
untitled.mat
From
From File Chirp Signal
Workspace

Random Band-Limited
Number White Noise

Clicando sobre “linear”, obteria-se:

Linear Library

+ .
+
Sum Inner
Product

1/s du/dt
Integrator Derivative

1 K 1.317

Gain Matrix Slider


Gain Gain

1 (s-1)

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

x' = Ax+Bu
y = Cx+Du

State-Space

Obtendo, portanto, diversos possíveis componentes.

Montagem de um arquivo de blocos

36
Para se criar um arquivo de extensão “m”, clica-se em “file” no menu disponível da caixa
“simulink”, escolhendo a opção “new”. Portanto, passa-se a ter duas janelas, uma com as
opções “simulink”, e outra referente ao arquivo de extensão “m”. Para criar um diagrama de
blocos neste arquivo, pressiona-se o botão 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 extensão “m”. Esta
operação copia esta caixa na janela, i.e., a operação original continua disponível na janela
“simulink”.

Signal Source Library

12:34
Clock Digital Clock
Repeating
Sequence
1
Constant
Signal
Generator
Pulse
Generator
Sine Wave Step Input

[T,U]
untitled.mat
From
From File Chirp Signal
Workspace

Random Band-Limited
Number White Noise

Obtendo na janela

Sine Wave

37
Um sinal integrador deve ser adicionado. Clicando sobre a opção linear, obtêm-se tal
comando. Arrastando para a janela do arquivo de extensão “m”, obtem-se:

1/s
Sine Wave Integrator

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

1/s
Sine Wave Integrator

Desta forma, um simples diagrama de bloco foi montado. Assuma então que os
parâmetros da sinal de onda senoidal devam ser ajustados. Neste caso, basta clicar duas vezes
o botão esquerdo sobre este bloco no arquivo de extensão “m”. Um quadro a respeito deste
operador aparecerá, onde amplitude, frequência e ângulo podem ser ajustados. Tal operação é
possível para qualquer operador. Este arquivo, se pronto, deve ser salvo. Tal comando é feito
através do menu “file” disponível na barra do arquivo onde o diagrama de blocos foi gerado.
Note que este arquivo deve ter extensão “m”.
Assuma que uma vez que este arquivo esteja gravado, deseja sair do programa. Basta
fechar o arquivo através do menu “file” e dar o comando “quit” no prompt do MATLAB. Para

38
carregar o arquivo novamente, uma vez estando dentro do MATLAB, basta digitar “simulink”,
clicar sobre a opção “file”, “open” e clicar sobre o nome do arquivo. Se por exemplo, for de
interesse do operador inserir um bloco de somatório na saída, procede-se da seguinte forma:
Apaga-se a linha que liga os dois primeiros blocos:

1/s
Sine Wave Integrator

Insere-se o bloco somatório entre os dois blocos existentes:

+
+ 1/s
Sine Wave Sum
Integrator

Finalmente, faz-se as conexões:

39
+
+ 1/s
Sine Wave Sum Integrator

E o novo diagrama está pronto. Deve-se salvar o novo arquivo e proceder com a
simulação.

Simulando um arquivo de extensão “m

Üma vez criado o arquivo de extensão “m”, deve-se escolher que método de
integração utilizar. Simulink oferece as seguintes possibilidades:

linsim Método que subtrai as equações dinâmicas


rk23 Runge-Kutta de terceira ordem
rk45 Runge-Kutta de quinta ordem
gear Método previsor-corretor de Gear para sistemas stiff.
adams Método previsor-corretor de Adams
euler Método de Euler

linsim é usado para modelos de sistemas lineares.


Rk23 e rk45 são utilizados para sistemas altamente não lineares.
Gear é usado quando o sistema é não linear, mas bem comportado. Não funciona bem para
perturbações bruscas na entrada ou quando há singularidade.
Adams é usado quando o sistema é não linear e bem comportado, mas com poucas constantes
de tempo variáveis.
Euler é usado somente para testar resultados.

Comando de Execução

Asumindo que o linsim seja escolhido (todos os outros têm procedimento idêntico),
digita-se:

[a b]=linsim(“file”,tmax,xo,options)

40
onde

a,b são os vetores de saída


file é o arquivo de extensão “m” onde o diagrama de blocos está contido.
Tmax é o tempo máximo de processamento.
xo é o vetor de condições iniciais
options contém a tolerância, passo máximo e mínimo.

Um gráfico que mostre o comportamento de a em função de b pode ser obtido como


mostrado anteriormente na seção de gráficos. O exemplo abaixo mostra a simulação do
diagrama de blocos genérico mostrado no arquivo sim1.m :

+ 2
1
+
s + 1
Signal Sum Gain Transfer Fcn
Generator

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


para executar a simulação:

options=[0.001,0.00001,10];

[tl,xl]=linsim('sim1',10,1,options);

Com o comando de gráfico

plot(tl,xl,’w’)

Obtendo o seguinte gráfico:

41
Se uma das variáveis for alterada, por exemplo, a função de transferência tiver o
numerador igual a 2, obtêm-se:

42
Portanto, qualquer mudança pode ser feita para se testar o efeito nas variáveis de
estado.

Exercício

Simular o sistema abaixo, onde


R=2, L=1

Incluir um capacitor de C=1 em série e simular novamente. Simular utilizando função de


transferência (bloco “transfer function”) e por variáveis de estado (bloco “state space”)

43

You might also like