Escolar Documentos
Profissional Documentos
Cultura Documentos
Mini urso
por
Lu as Almeida Aguiar
Janeiro 2013
Universidade Estadual de Montes Claros
Departamento de Cin
ias da Computao
Ba
harelado em Engenharia de Sistemas
Lu as Almeida Aguiar
Janeiro/2013
Sumrio
Lista de Figuras v
1 Introduo 1
1.1 O que MatLab ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Sintaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Toolboxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Ajuda no MatLab 4
2.1 Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Comando help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.2 Comando demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Editor/Depurador de Programas . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Limitao de Memria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Arquivos .m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4 Funes Elementares 16
4.1 Funes Bsi
as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.1.1 Exemplos simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.2 Nmeros Complexos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.3 Comandos de Converso . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2 Funes Trigonomtri
as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.3 Funes Hiperbli
as : Nomen
latura . . . . . . . . . . . . . . . . . . . . . . . . 22
ii
SUMRIO iii
5 Controle de Fluxo 23
5.1 Regras para es
rever uma fun
tion . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2 Operadores Rela
ionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.3 Operadores Lgi
os . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.4 Estruturas de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.4.1 Estruturas Condi
ionais . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.4.2 Estruturas de Repetio . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7 Medidas Estatsti
as 35
8 Gr
os 37
8.1 Exemplo 1 - Comando hold on . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.2 Exemplo 2 - Gr
os superpostos
om opes distintas de pontos e traado . . . 37
8.3 Exemplo 3 - Opes de representao gr
a simultneas . . . . . . . . . . . . . 38
8.4 Exemplo 4 - Comando subplot . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.5 Exemplo 5 - Comando pie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.6 Exemplo 6 - Comando pie3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.7 Exemplo 7 - Comando bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.8 Exemplo 8 - Comando plot3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.9 Exemplo 9 - Gr
o de Superf
ie . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.10 Exemplo 10 - Animao Gr
a . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.10.1 Animao bidimensional . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.10.2 Animao tridimensional . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
16 Consideraes Finais 69
Refern
ias bibliogr
as 70
Lista de Figuras
8.1 Comando hold on : Permite plotar vrias guras numa mesma janela . . . . . . 38
8.2 Gr
os superpostos
om opes distintas de pontos e traado . . . . . . . . . . 38
8.3 Opes de representao gr
a simultneas . . . . . . . . . . . . . . . . . . . . 39
8.4 Comando subplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.5 Comando pie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.6 Comando pie3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.7 Comando bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.8 Comando plot3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.9 Gr
o de Superf
ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
v
Captulo 1
Introduo
1.2 Sintaxe
A sintaxe do Matlab diferente da sintaxe usada por ns no dia-a-dia, por motivos bvios,
omo podemos ver nos exemplos abaixo.
1
CAPTULO 1. INTRODUO 2
Essa frase ambgua, e para um
omputador, que uma maquina, no possvel destinguir
o sentindo analisando o
ontexto.
Na primeira frase, esperado que se a pessoa
omer o almoo, ela
omer sobremesa, porm
na segunda frase, se no satisfeita a primeira
ondio, no se espera que a
ontea o
ontrrio.
Para a linguagem
omputa
ional, esse tipo de ambiguidade no pode o
orrer, portanto o "se"do
Matlab semelhante ao do segundo
aso, que, por sua vez, semelhante ao "se"matemti
o.
A ambiguidade dessa frase
ausada pelo fato de uma
idade possuir um nome prprio,
pois no sabemos se Andr atirou estando em Joo Pessoa, ou em algum
om esse nome. Por
isso, no Matlab no se pode repetir nomes nem usar palavras reservadas.
Dessa forma, abordaremos adiante
omo nomear variveis e utilizar
omandos.
1.3 Toolboxes
O Matlab tanto um ambiente quanto uma linguagem de programao, e um dos aspe
tos
mais poderosos o fato de que a linguagem Matlab permite
onstruir suas prprias ferramentas
reutilizveis. O usurio pode fa
ilmente
riar suas prprias funes e programas espe
iais
em linguagem Matlab. A medida que se es
reve mais e mais funes para lidar
om
ertos
problemas naturalmente se levado a agrupar por
onvenin
ia, funes rela
ionadas entre
si em diretrios espe
iais. Isso nos introduz o
on
eito de Toolbox: uma
oleo de arquivos
para tratar
lasses espe
iais de problemas. As toolboxes so mais do que uma simples
oleo
de funes teis, elas representam os esforos de alguns dos maiores pesquisadores do mundo
em
ampos
omo
ontrole, pro
essamento de sinais e identi
ao de sistemas, dentre outros.
Novas toolboxes so
riadas a
ada ano, dentre alguns exemplos no Matlab tem-se:
Toolbox de Otimizao;
Toolbox Spline.
Captulo 2
Ajuda no MatLab
2.1 Comandos
2.1.1 Comando help
Uma vez ini
ializado, o Matlab, apare
er na janela de
omandos um prompt . O prompt
signi
a que o Matlab est esperando um
omando. Todo
omando deve ser nalizado te
lando-
se Enter. No Matlab, pode-se obter ajuda sobre qualquer
omando ou funo. O
omando
help (sem o prompt ) mostra uma listagem de todos os pa
otes disponveis. Ajuda sobre um
pa
ote espe
o ou sobre um
omando ou funo espe
a obtida
om o
omando help
nome,(sem a vrgula) onde nome pode ser o nome de um pa
ote ou o nome de um
omando ou
funo.
4
CAPTULO 2. AJUDA NO MATLAB 5
espe
os para depurar um programa. Para a
essar pela ajuda e
onhe
er estes
omandos
digite: help debug e em seguida pode-se fazer o help de qualquer um dos
omandos mostrados.
2.4 Arquivos .m
Os
omandos do MatLab so normalmente digitados na janela de
omando, onde uma ni
a
linha de
omando introduzida e pro
essada imediatamente. O MatLab tambm
apaz de
exe
utar sequn
ias de
omandos armazenadas em arquivos.
Os arquivos que
ontm as de
laraes do MatLab so
hamadas arquivos ".m", e
onsistem
de uma sequn
ia de
omandos normais do MatLab, possibilitando in
luir outros arquivos
".m"es
ritos no formato texto (ASCII).
Para editar um arquivo texto na janela de
omando do MatLab, sele
ione New M-File
para
riar um novo arquivo ou Open M-File para editar um arquivo j existente, a partir
do menu File. Os arquivos podem, tambm, ser editados fora do MatLab utilizando qualquer
editor de texto.
Captulo 3
Manipulao de Matrizes, Vetores e
Es
alares
Uma das prati
idades do MatLab que no se faz ne
essria a de
larao do tipo da
varivel se esta no for uma varivel global. Isso o
orre porque, para o MatLab, todas as
variveis
onstituem-se matrizes.
Por exemplo, ao denirmos a seguinte frase:
text = 'I Es
ola de Vero';
Automati
amente, a varivel text tratada
omo um vetor de 17 posies ou
omo uma
matriz linha de dimenses 1x17. De fato, para manipularmos o nosso vetor ou matriz, ao uti-
lizarmos o
omando
text
text =
I Es ola de Vero
text(3)
ans =
6
CAPTULO 3. MANIPULAO DE MATRIZES, VETORES E ESCALARES 7
text(1,3)
ans =
Podemos notar que, para a
essar apenas uma posio do vetor, ou matriz, basta que esta
seja identi
ada entre parnteses. Repare que a varivel ans (de answer) padro para o
MatLab e utilizada sempre que um resultado, que retornado por alguma funo, no foi
designado a nenhuma outra varivel.
3.1 Atribuio
Para atribuir um valor de retorno a uma varivel basta digitar o nome da varivel seguida
do sinal = esquerda da funo que retorna o valor ou
adeia de
ara
teres (string). Para
melhor demonstrar, temos os seguintes exemplos:
>> l a r a n j a s = 4 ;
>> bananas = 1 0 ;
>> p r e o . l a r a n j a = 1 . 7 5 ;
>> p r e o . banana = 2 . 3 ;
>> f r u t a s = l a r a n j a s + bananas ;
3.1.4 Comando
l
Se, alm de apagar todas as variveis, deseja-se, tambm, limpar a tela, o MatLab dispe o
omando
l
para tal.
CAPTULO 3. MANIPULAO DE MATRIZES, VETORES E ESCALARES 9
A = [2 1 1; 1 2 1; 1 1 2
A=
2 1 1
1 2 1
1 1 2
B = [ 1 2 3 4 + <ENTER>
5 6 7 8 + <ENTER>
9 10 11 12
B=
1 2 3 4
5 6 7 8
9 10 11 12
C = [1 0 0; 0 1 0; 0 0 1
C=
1 0 0
0 1 0
0 0 1
J que qualquer dado numri
o
onsiderado um arranjo, os smbolos +, -, *, / so designa-
dos
omo operaes matri
iais ao passo que para operaes
om es
alares podem ser utilizados
os smbolos .- , .+ , .* , ./ . Quando o arranjo um nmero pode-se usar um ou outro smbolo
indistintamente. Usando as matrizes A, B e C denidas a
ima observem os seguintes exemplos:
A*C
ans =
CAPTULO 3. MANIPULAO DE MATRIZES, VETORES E ESCALARES 10
2 1 1
1 2 1
1 1 2
Produtos entre matrizes de dimenses distintas so possveis desde que respeitadas as di-
menses para o produto, por exemplo, A*B bem denida, j B*A no permitido dado que
o nmero de
olunas de B 4 e o nmero de linhas de A 3.
A*B
ans =
16 20 24 28
20 24 28 32
24 28 32 36
B*A
MAT = A.*C
MAT =
2 0 0
0 2 0
0 0 2
Isto
orresponde a um produto
omponente a
omponente, isto , a matriz MAT
ujas en-
tradas so MAT (i,j) = A(i,j) C (i,j).
A+1
ans =
3 2 2
2 3 2
2 2 3
As formas A.+1, A(1,1).+1 no so validas ao passo que a forma 5.+1 a
eita.
CAPTULO 3. MANIPULAO DE MATRIZES, VETORES E ESCALARES 11
ans =
10 5 5
5 10 5
5 5 10
C/A %ou C * inv(A)
ans =
ans =
0.5000 0 0
0 0.5000 0
0 0 0.5000
Outras operaes ainda so permitidas:
X = [20 21 22;
Y = [A ; X
Y=
2 1 1
1 2 1
1 1 2
20 21 22
Esta forma til para se trabalhar
om sub matrizes ou matrizes em blo
os. Para atribuir
um valor a uma determinada entrada de uma matriz:
A(2,3) = 0
A=
CAPTULO 3. MANIPULAO DE MATRIZES, VETORES E ESCALARES 12
2 1 1
1 2 0
1 1 2
Exemplos:
v = 3:7
v=
3 4 5 6 7
v = 3: 1.5: 6
v=
sub1 = B(:,2:3)
sub1 =
CAPTULO 3. MANIPULAO DE MATRIZES, VETORES E ESCALARES 13
2 3
6 7
10 11
A matriz sub2 denida pelas entradas de B das linhas 2 e 3 inter
eptadas
om as
olunas
1 at 3.
sub2 = B(2:3,1:3)
sub2 =
5 6 7
9 10 11
b = a(:)
b=
1
2
3
4
size(a)
ans =
2 2
a=
1 2 3
2 4 6
3 6 9
b = 3*a; % redene b
om
omponentes b(i,j) = 3 a(i,j)
= a/5; %
denida por : c(i,j) = a(i,j)/5
d = a. 2; % d denida por : d(i,j) = a(i,j)2
e = 3. a; % e denida
omo: e(i,j) = 3a(i,j)
a = [ 1 2 3 ;
b = [ 2 2 2 ;
a. b
ans =
1 4 9
Por exemplo:
date
ans =
08-Jan-2013
date = 10
date =
10
lear date
date
ans =
08-Jan-2013
Captulo 4
Funes Elementares
Nesta seo, sero apresentados
omandos para efetuar
hamadas das funes matemti
as
elementares,
omo funes analti
as trigonomtri
as, exponen
iais, logartmi
as, que podem
ser usadas tanto em es
alares
omo em vetores e matrizes. No Matlab trabalha-se
om listas
numri
as, portanto para se
al
ular o valor de uma funo
onhe
ida ou denida, em uma
varivel x, deve-se
onhe
er o valor x ou a lista x. Se x um nmero a funo retornar um
nmero. Se x uma lista, a funo tambm retornara uma lista de valores, os
orrespondentes
valores da funo para
ada valor da lista. Por exemplo:
x = [.1 .2 .3;
ans =
16
CAPTULO 4. FUNES ELEMENTARES 17
a = -2.6;
A = [1 2 3;
B = [2 2 2;
C = [2.6 1.3 -3.2 3.5;
x=
-3
x=
-2
x=
CAPTULO 4. FUNES ELEMENTARES 18
2 1 -4 3
x=
3 2 -3 4
x = sign(C) % sinal
x=
1 1 -1 1
x=
2.6
x=
x=
1.5
x=
CAPTULO 4. FUNES ELEMENTARES 19
1 0 1
No
aso do argumento de entrada ser uma lista/matriz,
ada elemento da lista (ou matriz)
resposta e a solu
ao dada pela fun
ao que
orrespondente ao elemento na mesma posi
ao na
lista de entrada. Por exemplo:
ans =
0 1 0
0 0 1
0 1 2
1 = 3-2*i;
2 = -1/2+j;
1+
2;
1*
2;
1/
2;
real(
1);
imag(
1);
abs(
1)
CAPTULO 4. FUNES ELEMENTARES 20
ans =
3.6056
a = 1;
b 2;
x = a+b*i;
r = abs(x);
theta = angle(x); % retorna o ngulo polar do vetor (a,b) ou atan(b/a)
y = r*exp(theta*i); % forma polar
z = r*(
os(theta)+i*sin(theta)); % igual a y e igual a x (formas equivalentes de um
omplexo)
1.0e+02 *
-0.0073 0
0.0003 + 0.0101*i -10.0000
O primeiro valor (1.0e+02) indi
a que dever multipli
ar-se o nmero 100 a matriz 2x2 que
vem em seguida. Para aumentar a pre
iso na resposta numri
a aplique-se o
omando:
0.31830988618379
ans =
0.3183
Isto uma abreviao das palavras "numeri
to string". De tal forma que a varivel letra
no mais um nmero e sim um
ara
tere ao passo que o resultado da operao:
letra+1
ans =
51
ans =
As funes
s
(x), se
(x),
ot(x), a
s
(x), ase
(x), a
ot(x) denem as funes
osse
ante,
se
ante e
otangente de x e suas inversas respe
tivamente.
Com denies equivalentes respe
tivamente para
s
h(x), se
h(x),
oth(x), a
s
h(x), ase
h(x)
e a
oth(x).
Captulo 5
Controle de Fluxo
As funes exe
utveis es
ritas na linguagem utilizada pelo Matlab esto implementadas
em arquivos
om extenso ".m". Suponha que o arquivo "exemplo.m"
ontenha uma srie de
linhas de
omandos ou funes do Matlab, ento quando este arquivo
hamado sem extenso
do prompt do Matlab:
exemplo + <ENTER>
o Matlab entender que este arquivo exe
utvel e assim
ada linha ser interpretada na
sequn
ia de a
ordo
om a sua funo.
Da mesma forma, um mtodo ou sub-rotina pode ser denido dentro de um arquivo
om
extenso ".m"
ontendo argumentos de entrada e de sada. Por exemplo,
ria-se o arquivo "
ir-
um.m"
ontendo as seguintes linhas:
As linhas a
ima
orrespondem ao arquivo "
ir
um.m". Para utilizar est funo basta di-
gitar:
ir um(2)
ans =
23
CAPTULO 5. CONTROLE DE FLUXO 24
12.5664
R = [1 2 3;
ir um(R)
ans =
As primeiras linhas ini
iadas
om o smbolo %
onstituem uma valiosa fonte de informaes
a respeito da fun
ionalidade do arquivo. Para ter a
esso a elas no ne
essrio abrir o arquivo
om um editor, basta digitar:
help ir um
ento as primeiras linhas juntas de
omentrios sero mostradas. Usando lookfor
omo
exemplo, obtm-se a sada:
lookfor permetro
Este
omando mostra s a primeira linha do arquivo,
aso esta
ontenha a palavra permetro,
alem do nome do arquivo. Por isto importante do
umentar de forma pre
isa esta primeira
linha,
aso o nmero de funes venha a aumentar
onsideravelmente. No ne
essrio que o
nome do arquivo seja igual ao nome da "fun
tion"dentro do mesmo.
Quando a funo tem mais de um argumento de sada, digamos rea, volume, ento estes de-
vem vir entre
ol
hetes, por exemplo, a seguinte funo denida no arquivo "
ilindro.m"
al
ula
a rea e o volume de um
ilindro.
volume = pi r 2 h;
Para
hamar esta funo seja do "prompt"ou de outro exe
utvel ".m", basta digitar uma
hamada na forma exempli
ada a seguir:
[a, v] = cilindro(0.5, 1)
1<2
ans =
Esta resposta indi
a que a
ondio 1<2 verdadeira. Se o retorno zero, isto indi
a que
a
ondio falsa. 1>2
ans =
ans =
1 0
1 1
Isto quer dizer que: 1 distinto de 0 verdadeiro, 2 distinto de 2 falso, 3 distinto de 4
verdadeiro e 4 distinto de -5 verdadeiro. Ao se
omparar
ara
teres tambm o
orre algo
semelhante, por exemplo:
texto1 = 'teste';
texto2 = 'texte';
texto1 == texto2
ans =
1 1 0 1 1
Esta forma efetua uma
omparao
ara
tere por
ara
tere, posio a posio. Se as letras
so iguais retorna 1, se no retorna 0. Um
omando mais direto para saber se dois textos so
iguais na sua totalidade :
str
mp(texto1,'teste')
CAPTULO 5. CONTROLE DE FLUXO 27
ans =
Isto , o
ontedo da varivel texto1 exatamente o
onjunto dos
ara
teres da palavra
teste.
ans =
A resposta que a armao falsa. Para isso basta que seja a b ou que b c.
Outro exemplo:
ans =
0
CAPTULO 5. CONTROLE DE FLUXO 28
If-else-end
Existem trs variantes no Matlab de estruturas if-else-end:
Exer
io Resolvido:
Um problema muito
omum es
olher o material adequado para
er
ar um terreno. Se o
preo total da
er
a for menor que R$ 100,00,
onstrumos
om um material, e se for maior,
onstrumos
om outro. Como fazer um programa que fale qual material usar se tivermos o
valor do metro de
er
a e o permetro do terreno em metros?
Soluo:
CAPTULO 5. CONTROLE DE FLUXO 29
f u n
t i o n M = d e
i d e m a t e r i a l ( pre
oMetro , p e r i m e t r o )
i f ( ( pre
oMetro p e r i m e t r o ) < 100)
M = 1;
else
M = 2;
end
A estrutura de
ondio if-else-end fun
iona
omo uma bifur
ao do uxo de exe
uo do
programa, abrindo duas possibilidades de
aminhos(
omandos),
omo pode ser visualizado a
seguir:
Swit
h-
ase-otherwise-end
O swit
h
ase um blo
o de
ontrole que fun
iona
omo um agrupamento de vrios ifs e
elses, que tenham relao entre si.
CAPTULO 5. CONTROLE DE FLUXO 30
Temos o exemplo de instrues que asso
iem nmeros aos dias da semana, no qual teramos
muito trabalho fazendo um if para
ada
aso. Para fa
ilitar esse
aso usamos o swit
h-
ase:
s w i t
h mynumber
ase 1
d i a = ' Domingo '
ase 2
d i a = ' Segunda f e i r a '
ase 3
d i a = ' Ter
a f e i r a '
ase 4
d i a = ' Quarta f e i r a '
ase 5
d i a = ' Quinta f e i r a '
ase 6
d i a = ' Sexta f e i r a '
ase 7
d i a= ' Sabado '
otherwise
d i a= ' nenhum '
end
CAPTULO 5. CONTROLE DE FLUXO 31
While
A estrutura de repetio while usada quando no se sabe ao
erto o nmero de repeties,
omo mostrado no exemplo a seguir:
log = 0;
while (n > 1)
n = n/2;
CAPTULO 5. CONTROLE DE FLUXO 32
l o g = l o g +1;
end
log =
10
For
Diferente do while, a estrutura de repetio for usada quando se sabe ao
erto o nmero
de repeties,
omo mostrado no exemplo a seguir:
f o r l i n h a = 1 :N
f o r
o l u n a = 1 :N
A( l i n h a ,
o l u n a ) = l i n h a+
o l u n a ;
end
end
A =
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
Captulo 6
Operaes Sobre Matrizes
O Matlab
onta
om algumas operaes espe
iais sobre matrizes que se tornam ne
essrias
quando se trabalha matemati
amente
om elas.
33
CAPTULO 6. OPERAES SOBRE MATRIZES 34
% ex7
% Este exemplo
al
ula medidas estatsti
as relativas as notas
% de 6 matrias de uma turma de 13 alunos
f o r i =1:13 ,
f o r j =1:6 ,
TURMA( i , j )=100 rand ;
end
end
35
CAPTULO 7. MEDIDAS ESTATSTICAS 36
s t d ( mat ) ; % d e s v i o padro da p r i m e i r a m a t r i a
h i s t ( nota_minima ) ; % hi s to g ra ma (1 0 b a r r a s por d e f a u l t ) f i g u r a .
[ n ,m =h i s t ( nota_minima ) ; % n=a l t u r a , m = e n t r o da b a r r a
[ n ,m = h i s t ( nota_minima , 3 ) ;
37
CAPTULO 8. GRFICOS 38
z =
os(x);
plot(x,y,'b:p',x,z,'
-',x,z,'m+');
t i t l e ( ' Funes T r i g o n o m t r i a s ' , ' F on tS iz e ' , 1 4 , ' Fontweight ' , ' Bold ' ) ;
% ex8.5
a = [0.5 1 1.5 2.0 1 0.3;
pie(a,a == max(a));
title('Produo de gros');
legend('Arroz','Feijo','Soja','Trigo','Milho','Cevada');
% ex8.6
a = [0.5 1 1.5 2.0 1 0.3;
destaque = [0 1 0 1 0 1; % pedaos em destaque
pie3(a,destaque);% formato pizza tridimensional
olormap hsv; % opo de tonalidade de
or
CAPTULO 8. GRFICOS 41
% ex8.9
x = -7.5:0.5:7.5; % vetor ou lista x
CAPTULO 8. GRFICOS 43
Cada linha da matriz X
orresponde lista x e
ada
oluna da matriz Y
orresponde lista
y. Assim a matriz R o quadrado de
ada elemento de X mais o quadrado de
ada elemento de
Y,
omponente a
omponente respe
tivamente. Semelhantemente segue a denio da matriz
Z. O
omando mesh gra
a os pontos denidos pelas ternas,
omponentes respe
tivas de X, Y
e Z e em seguida os liga
om linhas retas formando uma rede.
% ex8.10.1
x = p i / 2 : . 1 : p i / 2 ;
f o r
=1:20 ,
y = s i n (2 x+
p i / 1 0 ) ;
p l o t ( x , y , ' LineWidth ' , 1 8 ) ;
a x i s ([ p i /2 p i /2 1 1 ) ;
M(
) = g e t f r a m e ;
end ;
movie (M, 2 0 , 1 0 ) ;
A ltima linha de
omando signi
a que os gr
os armazenados em M so mostrados 10
vezes a uma taxa de repetio de 20 guras por segundo.
% ex8.10.2
x = p i / 2 : . 1 : p i / 2 ;
y = p i / 2 : . 1 : p i / 2 ;
[ X,Y = meshgrid ( x , y ) ;
f o r
=1:20 ,
Z = s i n (2 X+
p i /10)+1.5
o s (2 Y+
p i / 1 0 ) ;
s u r f (X, Y, Z ) ;
M(
) = g e t f r a m e ;
end ;
movie (M, 2 0 ) ;
Captulo 9
Soluo de Sistemas de Equaes Lineares
Um sistema de equa
oes lineares se es
reve da forma Ax = b onde A e uma matriz
onhe
ida
de dimensoes nxm, geralmente quadrada (m=n), x e o vetor
oluna de in
ognitas e b e um
vetor
oluna de valores numeri
os. Caso A (quadrada) seja nao singular, isto e, existe uma
matriz denotada A1 tal que A A1 = A1 A = I , onde I e a matriz identidade. Entao
pela teoria o sistema apresenta uma uni
a solu
ao x. A matriz identidade e
ara
terizada por
Iii = 1eIij = 0, se i 6= j , isto , os valores da diagonal sao todos 1 e fora da diagonal os valores
sao zero.
Uma boa medida da "qualidade"de uma matriz dado pelo nmero de
ondio. O
omando
ond(A) retorna este nmero, se o nmero retornado grande, indi
ar que a matriz A
aproximadamente singular, o que ruim do ponto de vista numri
o. A pre
iso da soluo
numri
a utilizando A ser afetada.
Caso m < n, o sistema tem mais in
gnitas que equaes e existem innitas solues.
Neste
aso, pro
ura-se, s vezes, uma soluo que satisfaa a
ondio de minimizao da soma
das distn
ias aos hiperplanos denidos pelas equaes (mnimos quadrados). Caso m > n, o
sistema tem mais equaes que in
gnitas, ento o sistema sobre determinado e a soluo
geralmente no existe. O problema de mnimos quadrados no tem soluo ni
a (norma
Eu
lidiana):
minimize Norm(A x = b)
A x = b = x = A1 b
A inverso da matriz A do sistema nem sempre uma operao barata. Para matrizes
grandes ou
heias, prefere-se a utilizao de mtodos alternativos,
omo os mtodos de de
om-
posio de matrizes tais
omo LU, QR, Cholesky ou mtodos iterativos
omo minres, gmres
45
CAPTULO 9. SOLUO DE SISTEMAS DE EQUAES LINEARES 46
e outros (implementados no Matlab). Outro
uidado que deve ser tomado que os mtodos
de de
omposio no se apli
am a qualquer tipo de matriz. Por exemplo, para o mtodo de
Cholesky, a matriz do sistema deve ser denida positiva. Uma operao simples
omo:
A = [1 2 1;2 1 2;1 2 2;
b = [1;0;-1; %vetor
oluna
B = inv(A); % inverte uma ni
a vez
C = A -1; % forma alternativa para inverter A
x = C*b; %
aso b mude C
ontinua o mesmo
9.1.2 De
omposio LU
CAPTULO 9. SOLUO DE SISTEMAS DE EQUAES LINEARES 47
>> A = [ 1 2 2 ; 2 1 2 ; 2 2 1 ;
>> [ L , U, P = l u (A) ;
Esta simples funo retornar 3 matrizes 3x3. Uma matriz triangular inferior L, uma
triangular superior U e uma matriz de permutao P, de forma que L*U = P*A. Para resolver
o sistema, foi utilizado o seguinte mtodo:
f u n
t i o n x = solve_LU (L , U, P , b )
= P b;% permutao l a d o b : PA x = L U x = P b
% substituio triangular inferior : L y =
y = zeros (n , 1 ) ;
y (1) =
( 1 , 1 ) /L ( 1 , 1 ) ;
f o r i =1:n ,
soma = 0 . 0 ;
f o r j =1:( i 1) ,
soma = soma+L( i , j ) y ( j ) ;
y ( i ) =
( i ) soma ;
end
end
% substituio triangular inferior U x = y
x = zeros (n , 1 ) ;
x ( n , 1 ) = y ( n , 1 ) /U( n , n ) ;
f o r i=n : 1 : 1 ,
soma = 0 . 0 ;
f o r j =( i +1): n ,
soma = soma+U( i , j ) x ( j ) ;
x ( i ) = ( y ( i ) soma )/U( i , i ) ;
end
end
end
O primeiro teste retornou os seguintes resultados. A varivel ag = 0 indi
a que o mtodo
onvergiu dentro do nmero de iteraes desejado atingindo a tolern
ia desejada, no
aso, em
10 iteraes.A norma do resduo relativo foi:
kb A xk
= 3.5881e 009
kbk
% ex 10.1
dados1=[ 0 0;1 20;2 60;3 68;4 77;5 110; % Conjunto de pontos a ser interpolado
disp('Cl
ulo que interpola este
onjunto de pontos em x=2.6 e x=4.9, respe
tivamente');
y1 = interp1(dados1(:,1), dados1(:,2), 2.6) % valor interpolado no ponto 2.6
y2 = interp1(dados1(:,1), dados1(:,2), 4.9) % valor interpolado no ponto 4.9
50
CAPTULO 10. AJUSTE DE CURVAS E INTERPOLAO 51
% ex 10.2
velo
idade = [2000,3000,4000,5000,6000;
tempo = [0 1 2 3 4 5;
temperatura = [ 0, 0, 0, 0, 0; 20, 110, 176, 190, 240; 60, 180, 220, 285, 327; 68, 240, 349,
380, 428; 77, 310, 450, 510, 620; 110, 405, 503, 623, 785;
temp = interp2(velo
idade, tempo,temperatura,3800,3.1)
% os prximos passos permitem gra
ar a
urva de interpolao vel = 2000:100:6000; % 40
pontos
t = 0:0.125:5; % 40 pontos
[X,Y = meshgrid(vel,t);
Z = interp2(velo
idade,tempo,temperatura,X,Y);
CAPTULO 10. AJUSTE DE CURVAS E INTERPOLAO 52
mesh(X,Y,Z);
xlabel('E I X O X');
ylabel('E I X O Y');
zlabel('E I X O Z');
% ex 10.3
x = [0 1 2 3 4 5;
y = [0 20 60 68 77 110;
temp1 = spline(x,y,2.6);
temp2 = spline(x,y,[2.6 4.9);
z = [.5 1.5 2.5 3.5 4.5;
temps = spline(x,y,z);
temp1 % resultado
temp2 % resultado
temps % vetor interpolante da lista z
xi = 0:0.2:5; %25 pontos
yi = spline(x,y,xi); % interpolao da lista xi
CAPTULO 10. AJUSTE DE CURVAS E INTERPOLAO 53
% ex 10.4
x = [0 1 2 3 4 5;
y = [0 20 60 68 77 110;
grau = 1; % grau do polinmio a ajustar
oef = polyt(x,y,grau);
ybest = polyval(
oef,x); % para veri
ar a qualidade da aproximao
axis([-1,6,-20,120);
plot(x,ybest,x,y, 'o' );%
ompara gra
amente os valores dados
om os obtidos por ajuste
title ('Ajuste polinomial: grau 1');
CAPTULO 10. AJUSTE DE CURVAS E INTERPOLAO 54
xlabel('X');
ylabel('Y');
grid;
1 2 3 4
5 6 7 8
Depois de lido o arquivo
om o
omando load,
ria-se a varivel matriz
omo sendo uma
matriz 2x4:
load matriz.dat;
matriz
matriz =
1 2 3 4
5 6 7 8
size(matriz) % dimenses da varivel matriz
ans =
2 4
O arquivo no deve
onter letras ou
ara
teres entre aspas. Os nmeros devem estar dis-
postos em forma de matriz. Para salvar as variveis ou dados em geral usa-se o
omando save.
Exemplo:
55
CAPTULO 11. LEITURA E ESCRITA DE ARQUIVOS DE DADOS 56
lear;
x = [0 1 2 3 4 5;
y = sqrt(2)*eye(3);
z = rand(2);
save dados x y z; % salvar os dados x,y e z dentro do arquivo 'dados.mat'
save dados2.txt x y z -as
ii; % salva em formato txt, 8 digitos
save dados3.txt x y z -as
ii -double; % salva em formato txt
om 16 digitos
f = [3,-0.5, 0, 1,-5.2;
Cada
oe
iente deve apare
er em ordem de
res
ente a partir da maior poten
ia no nula
deste polinmio, e quando a poten
ia no existe deve-se preen
her
om zero,
omo o
aso do
termo x2 . Para avaliar este polinmio f usa-se o
omando polyval tanto para valor simples
omo para listas.
% ex 12.1
f = [3,-0.5,0,1,-5.2; x = 1; polyval(f,x) % valor f(1)
x = [0 1 1.1 1.2; % redenio de x
y = polyval(f,x) % lista de valores f(xi)
orrespondente a
ada valor da lista x
g = [1 0 -3 -1 2.4; % polinmio g(x) = x4 3x2 x + 2.4
m =
onv(f,g) % produto dos polinmios f e g
[q,r = de
onv(f,g); % diviso polinomial f/g
rts = roots(f) % razes ou zeros do polinmio f
f = poly(r) %
oe
ientes do polinmio
ujas razes so os elementos de r
f = [1 -2 3;
df = polyder(f) %
oe
ientes do polinmio 2x-2 derivada de f (x) = x2 2x + 3
x = -5:0.1:7;
yf = polyval(f,x) % valores de f relativos a x
ydf = polyval(df,x) % valores da derivada de f em x
plot(x,yf,x,ydf) % gr
o de f e da sua derivada
57
CAPTULO 12. ANLISE POLINOMIAL 58
legend('f','df');
title('Funo e a sua derivada: f = x2-2x+3 ; df = 2x-2');
polyint : integra polinmios analiti
amente, retorna a lista de
oe
ientes da antideri-
vada de um polinmio tal que f(0) = 0. Por exemplo, polyint(f,3)
al
ula antiderivada de
f tal que f(0) = 3.
poly2str :
onverte uma lista em uma seqn
ia de
ara
teres em formato de polinmio.
Por exemplo: poly2str([1 0 2,'s') retorna o texto (string) 's2 + 2'.
Captulo 13
Integrao e Diferen
iao
Existem mtodos que trabalham
om aproximao numri
a e outros
om funes analti
as.
possvel no Matlab trabalhar
om algoritmos numri
os e algumas vezes tambm
om mtodos
simbli
os. No
aso de integrao e diferen
iao existem
omandos para trabalhar
om ambos
os mtodos.
13.1 Integrao
No Matlab existe o
omando int que
al
ula a integral indenida de uma funo analti
a
om respeito a sua varivel simbli
a. Primeiro deve-se denir a varivel independente
omo
sendo simbli
a, veja exemplo a seguir.
ans =
atan ( x )
ans =
o s ( a lp h a u ) / u
59
CAPTULO 13. INTEGRAO E DIFERENCIAO 60
>> i n t ( x1 l o g (1+x1 ) , 0 , 1 ) % i n t e g r a no i n t e r v a l o [ 0 , 1
ans =
1/4
>> i n t ( 4 x t , x , 2 , s i n ( t ) ) % i n t e g r a no i n t e r v a l o [ 2 , s i n ( t )
ans =
2 t ( o s ( t )^2 + 3)
ans =
>> A = [ o s ( x t ) , s i n ( x t ) ; s i n ( x t ) , o s ( x t )% d o i s p a r e s de i n t e g r a i s
A =
[
o s ( t x ) , s i n ( t x )
[ s i n ( t x ) ,
o s ( t x )
A integrao numri
a efetuada
om os
omandos quad, quadl, sendo pre
iso 106 a pre-
iso "default". Utilizam respe
tivamente quadratura de Simpson e Lobatto (adaptativa).Para
espe
i
ar a pre
iso utiliza-se o argumento tolern
ia.
R
f (x)dx
Exemplo:
a = 0;
b = 1;
f = x. 2;
O resultado 0.3333.
f = 'x.*y';
dblquad(f,0,1,0,1)
ans =
0.2500
dblquad(inline('x.*y'),0,1,0,1);
df f (x + x) f (x)
= lim
dx x0 x
CAPTULO 13. INTEGRAO E DIFERENCIAO 62
df f (x) f (x0 )
= lim
dx xx0 x x0
Para trabalhar tanto simbli
a
omo numeri
amente utiliza-se o
omando di.
Exemplos:
>> syms x ; % d e
l a r a x s i m b l i
o
>> d f = d i f f ( ' x^ 2 ' , x ) ; % d e r i v a s i m b o l i
a m e n t e d f
>> d f =2 x ;
>> d i f f ( '
o s ( ax ) ' , x )
ans =
a s i n ( a x )
Observe que a foi tratada
omo
onstante. Para permitir que
os(a*x) seja derivvel
om
respeito a a, deve-se primeiramente de
larar a
omo sendo simbli
o.
>> syms a ;
>> h = '
o s ( a x ) ' ;
>> d f a = d i f f ( h , a )
ans =
x s i n ( a x )
Numeri
amente a diferen
iao
al
ula-se
omo a diferena entre dois pontos adja
entes
quando estes se aproximam. Para tal utiliza-se o
omando di
al
ulando diferenas entre va-
lores adja
entes. O prximo exer
io exempli
a o
l
ulo da derivada numri
a e
ompara-se
om a derivada analti
a.
x = ( 1 : 1 / 1 5 : 1 ) ; % 30 d i v i s e s do i n t e r v a l o [ 1 , 1
f = x .^ 5 3 x . ^4 11 x . ^3 + 27 x . ^ 2 + 10 x 2 4 ;
df_an = 5 x . ^4 12 x . ^3 33 x .^ 2 + 54 x + 1 0 ; % d e r i v a d a a n a l t i
a
d f = d i f f ( f ) . / d i f f ( x ) ; % d e r i v a d a numri
a de f
omo aproximao
% t a n g e n t e a
urva f em p on tos a d j a
e n t e s
xd = x ( 2 : l e n g t h ( x ) ) ; % Dado que o v e t o r d i f e r e n a d f tem um e l e m e n to a
CAPTULO 13. INTEGRAO E DIFERENCIAO 63
% menos e as d im e n s es de x e d f devem
o i n
i d i r
p l o t ( x , f , ' r ' , xd , df , ' b ' ,x , df_an , ' k ')
l e g e n d ( ' f ( x ) ' , ' { d f /dx} numri
o ' , ' { d f /dx } a n a l t i
o ' ) ;
xlabel ( 'x ' ) ;
y l a b e l ( ' f ( x ) e { d f /dx } ' ) ;
t i t l e ( ' Po l i n m i o e sua de ri v ad a ' ) ;
A quarta linha do arquivo a
ima mostra
omo usar o
omando di para
al
ular nume-
ri
amente a derivada. O gr
o mostra as
urvas do polinmio f e as derivadas analti
a e
numri
a. A pre
iso do resultado numri
o depende do nmero de divises
onsiderados ou
de quo prximo esto os pontos, no
aso da primeira gura, foram tomados 30 divises do
intervalo [-1,1. J na outra gura, mostrada a mesma situao anterior, mas agora foram
onsideradas 100 divises no intervalo. Per
ebe-se
laramente a diferena de pre
iso entre os
asos
onsiderados.
Captulo 14
Equaes Diferen
iais Ordinrias
As funes ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb permitem resolver pro-
blemas a valores ini
iais para equaes diferen
iais ordinrias (uma varivel independente) por
vrios mtodos.
Os
omandos ode23 e ode45 so baseados no mtodo de Runge-Kuta. Ambos possuem os
mesmos tipos de argumentos, ode23 usado para equaes de segunda e ter
eira ordem, ode45
utilizado para equaes de quarta e quinta ordem.
O exemplo a seguir apresenta uma equao diferen
ial de primeira ordem
uja soluo ana-
lti
a
onhe
ida. A equao diferen
ial uma de primeira ordem (a derivada de maior ordem
1):
f u n
t i o n dy = g1 ( x , y )
dy = 3 x^ 2
O arquivo
ontendo a resoluo pelo Matlab dado por:
64
CAPTULO 14. EQUAES DIFERENCIAIS ORDINRIAS 65
anl_y = x . ^3 7 . 5 ; % s o l u o a n a l t i
a
p l o t ( x , num_y, ' r : + ' , x , anl_y , ' b ' ) ; % g r f i
o das s o l u e s a n a l t i
a p e l o mtod
t i t l e ( ' S o l u o ODE' ) ;
x l a b e l ( 'X ' ) ;
ylabel ( 'y = f (x ) ');
l e g e n d ( ' Runge Kuta ' , ' S o l u o a n a l t i
a ' ) ;
grid ;
anl_ynum_y % e r r o a b s o l u t o
ometido
No
omando ode23, [2,4 o intervalo onde pro
ura-se a soluo, 0.5 a
ondio ini
ial
no ponto x = 2. A sada do
omando
orresponde a um
onjunto de
oordenadas, os quais
representam os pontos, no exemplo atual (x, numy ), da funo y = f (x) soluo numri
a da
equao diferen
ial. O nmero de pontos a determinar
al
ulado pelo mtodo do Matlab.
Pode ser usado mais um parmetro referente tolern
ia que est rela
ionada
om o tamanho
do passo. A tolern
ia "default" 0.001 para ode23 e 0.000001 para ode45. O erro ponto a ponto
ometido pelas solues analti
a e numri
a,
omo mostrado pela diferena anly numy ,
da ordem 1013 ,
onforme veri
ado pela superposio dos pontos
urva na gura a seguir.
O exemplo anterior tambm pode ser fa
ilmente resolvido atravs do
omando dsolve,
uja
resoluo analti
a e simbli
a:
>> y = d s o l v e ( ' Dy = 3 x ^ 2 ' , ' y ( 2 ) = 0 . 5 ' , ' x ' )
y =
x^3 15/2
Captulo 15
De
omposio e Fatorao de Matrizes
Existem muitos mtodos e t
ni
as numri
as que utilizam de
omposio e fatorao de
matrizes,
omo por exemplo, a resoluo de sistemas lineares. A de
omposio LU serve, por
exemplo, para determinar o determinante de uma matriz grande, ou a matriz inversa.
15.2 De
omposio - QR
Nesta de
omposio Q uma matriz ortonormal e R uma matriz triangular superior. A
propriedade de Q ser ortonormal indi
a que:
QT Q = I
66
CAPTULO 15. DECOMPOSIO E FATORAO DE MATRIZES 67
Isto quer dizer que Q e a sua transposta QT sao inversas. As linhas da matriz Q possuem
a seguinte propriedade: denote por qi a linha i de Q, entao qi qjT = ij , isto , o produto
es
alar de duas linhas distintas nulo(vetores ortogonais) e o produto es
alar de uma linha por
si mesma 1 (vetor de norma 1). O mesmo apli
a-se as
olunas de Q.
Ax = x
Logo a determina
ao destes esta asso
iada a resolu
ao de um sistema linear de equa
oes. A
primeira vista uma solu
ao trivial deste sistema e x = 0, = 0 . Mas podem existir valores nao
nulos que tambem resolvem o sistema. No Matlab os autovalores e autovetoers sao en
ontrados
om os
omandos:
AV =V D
Ou em termos de vetores:
A vi = vi dii , i = 1, 2, ..., n
De outra forma no Matlab A V (:, i) deve ser igual a V (:, i) D(i, i),para i = 1, 2, ..., n .
Captulo 16
Consideraes Finais
Alm do abordado nessa apostila, o Matlab apresenta ainda muitas outras funes, alm de
que para problemas mais espe
os existem vrios toolboxes
om outras ferramentas.
As funes e os mtodos abordados nessa apostila foram es
olhidos para que houvesse a
melhor
ompreenso das ferramentas gr
as, numri
as, analti
as e de implementao de
algoritmos que o Matlab possui, no tempo e espao disposto.
Quem entender o
ontedo presente neste material j possui
apa
idade para trabalhar
om
as prin
ipais ferramentas do Matlab e autonomia su
iente para
ontinuar o estudo a
er
a
deste ambiente.
Para
on
luir, vale a pena lembrar que este estudo pretende apresentar o Matlab ao pes-
quisador
omo uma ferramenta de ajuda
ient
a, e que um estudo apurado depender ne
es-
sariamente da dedi
ao pesquisa na rea de atuao de
ada usurio.
69
Refern
ias Bibliogr
as
[1 C. M. A. A Bravo and E. L. de Albuquerque, Intruduo ao MATLAB , Centro Na
ional de
Pro
essamento de Alto Desempenho em So Paulo, Universidade Estadual de Campinas.
70