Escolar Documentos
Profissional Documentos
Cultura Documentos
O que o MATLAB?
MATLAB um "software" interativo de alta performance voltado para o clculo
numrico. O MATLAB integra anlise numrica, clculo com matrizes, processamento
de sinais e construo de grficos em ambiente fcil de usar onde problemas e solues
so expressos somente como eles so escritos matematicamente, ao contrrio da
programao tradicional.
O MATLAB um sistema interativo cujo elemento bsico de informao uma matriz
que no requer dimensionamento. Esse sistema permite a resoluo de muitos
problemas numricos em apenas uma frao do tempo que se gastaria para escrever um
programa semelhante em linguagem Fortran, Basic ou C. Alm disso, as solues dos
problemas so expressas no MATLAB quase exatamente como elas so escritas
matematicamente.
Carregando o MATLAB
No Gerenciador de Programas do Microsoft Windows deve-se abrir o grupo de
programas do MATLAB for Windows, que contm o cone do aplicativo MATLAB. Um
duplo clique no cone MATLAB carrega o aplicativo MATLAB.
Quando o MATLAB carregado, duas janelas so exibidas: a Janela de Comando
(Command Windows) e Janela Grfica (Graphic Windows). A Janela de Comando
ativada quando se inicializa o MATLAB, e o "prompt" padro (>>) exibido na tela.
A partir desse ponto, o MATLAB espera as instrues do usurio. Para entrar com uma
matriz pequena, por exemplo usa-se
>> A = [1 2 3; 4 5 6; 7 8 9]
colocando colchetes em volta dos dados e separando as linhas por ponto e vrgula..
Quando se pressiona a tecla <enter> o MATLAB responde com
A=
1
4
7
2
5
8
3
6
9
Ctrl
Ctrl
Home
End
Del
Backspace
1 INTRODUO
O MATLAB trabalha essencialmente com um tipo de objeto, uma matriz numrica
retangular podendo conter elementos complexos (deve-se lembrar que um escalar uma
matriz de dimenso l x l e que um vetor uma matriz que possui somente uma linha ou
uma coluna).
2
5
8
3
6
9
>>
7 8 9]
[1 2 3
456
7 8 9]
1.4142
23.0400
Um elemento individual da matriz pode ser reverenciado com ndice entre parnteses.
Continuando o exemplo,
>> x(6) = abs(x(l))
produz:
x=
-1.3000
1.4142
23.0400
1.3000
que resulta em
A=
1
4
7
10
2
5
8
11
3
6
9
13
Note que o vetor r no foi listado porque ao seu final foi acrescentado ";".
Pequenas, matrizes podem ser extradas de grandes matrizes usando ";". Por exemplo,
>> A = A(1:3,:);
seleciona as trs primeiras linhas e todas as colunas da matriz A atual, modificando-a
para sua forma original.
ans
Name
A
ans
r
s
Size
Efements
Bytes
Density
Complex
3 by 3
72
Full
No
1 by 1
Full
No
1 by 3
24
Full
No
1 by 1
Full
No
1 by 6
48
Full
No
0.00001
-99
9.637458638
6.06375e23
1.602E-20
exponenciao
diviso a direita
diviso a esquerda
multiplicao
adio
subtrao
Deve-se notar que existem dois smbolos para diviso: as expresses 1/4 e 4\1 possuem
o mesmo valor numrico, isto , 0,25. Parnteses so usados em sua forma padro para
alterar o mesmo a precedncia usual dos operadores aritmticos.
1.6 Nmeros e Matrizes Complexas
Nmeros complexos so permitidos em todas operaes e funes no MATLAB. Os
nmeros complexos so introduzidos usando-se as funes especiais i e j. Por exemplo
>> z= 3 + 4*i
ou
>> z= 3 +4*j
Outro exemplo
>> w= r * exp(i*theta)
As seguintes declaraes mostram dois caminhos convenientes para se introduzir
matrizes complexas no MATLAB:
>> A= [1 2; 3 4]+i*[5 6;7 8]
e
>> A= [1+5*i 2+6*i; 3+7*i 4+8*i]
que produzem o mesmo resultado.
Se i ou j forem usados como variveis, de forma que tenham seus valores originais
modificados, uma nova unidade complexa dever ser criada e utilizada de maneira
usual:
>> ii = sqrt(-1);
>> z = 3 + 4*ii
x=
-1
1.3333 0.0000
format short e
1.3333e+000 1.2345e-006
format long
1.33333333333333 0.000000123450000
format long e
1.333333333333333e+000 1.234500000000000e-006
format hex
3ff5555555555555 3eb4b6231abfd271
format rat
4/3 1/810045
format bank
1.33 0.00
format +
++
Com o formato short e long, se o maior elemento da matriz maior que 1000 ou menor
que 0.001, um fator de escala comum aplicado para que a matriz completa seja
mostrada. Por exemplo,
>> x = 1.e20*x
resultado da multiplicao ser mostrado na tela.
X=
l.0e+20 *
1.3333 0.0000
2.1 Transposta
O caracter apstrofo, " ' " , indica a transposta de uma matriz. A declarao
>> A = [1 2 3; 4 5 6; 7 8 0]
>> B = A'
que resulta em
A=
B=
1
4
7
1
2
3
2
5
8
4
5
6
3
6
0
7
8
0
e
>> x = [-1 O 2]'
produz
x=
-1
0
2
Se Z uma matriz complexa, Z ser o conjugado complexo composto. Para obter
simplesmente a transposta de Z deve-se usar Z., como mostra o exemplo
>> Z = [1 2; 3 4] + [5 6; 7 8]*i
>> Z1 = Z
>> Z2 = Z.
que resulta em
Z=
1.0000 + 5.0000i
6.0000 + 7.0000i
2.0000 + 6.0000i
4.0000 + 8.0000i
1.0000 - 5.0000i
2.0000 - 6.0000i
3.0000 - 7.0000i
4.0000 - 8.0000i
1.0000 + 5.0000i
2.0000 + 6.0000i
3.0000 + 7.0000i
4.0000 + 8.0000i
Z1 =
Z2 =
6
10
14
10
14
0
2.3 Multiplicao
A multiplicao de matrizes indicada por "*". A multiplicao x*y definida somente
se a segunda dimenso de x for igual primeira dimenso de y. A multiplicao
>> x'* y
aceitvel, e resulta em
ans =
4
evidente que o resultado da multiplicao y'*x ser o mesmo. Existem dois outros
produtos que so transpostos um do outro.
>> x*y
ans =
2
0
-4
l
0
-2
-l
0
2
>> y*x
ans =
2
1
-1
0
0
0
-4
-2
2
O produto de uma matriz por um vetor um caso especial do produto entre matrizes.
Por exemplo A e X,
>> b = A'x
que resulta em
b=
5
8
-7
Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.
>> pi*x
ans =
-3.1416
0
6.2832
2.4 Diviso
Existem dois smbolos para diviso de matrizes no MATLAB "\" e "/". Se A uma
matriz quadrada no singular, ento A\B e B/A correspondem respectivamente
multiplicao esquerda e direita da matriz B pela inversa da matriz A, ou inv(A)*B e
B*inv(A)N, mas o resultado obtido diretamente. Em geral,
2.5 Exponenciao
A expresso A^p eleva A p-sima potncia e definida se A matriz quadrada e p um
escalar. Se p um inteiro maior do que um, a exponenciao computada como
mltiplas multiplicaes. Por exemplo,
>> A^3
ans =
279
684
738
360
873
900
306
684
441
10
18
2.5000
2.0000
3.3 Exponenciao
A exponenciao de conjuntos indicada por ".^". A seguir so mostrados alguns
exemplos usando os vetores x e y. A expresso
>> z = x .^ y
resulta em
z=
l 32
729
z=
2
16
32
64
<
menor
<=
>
>=
==
~=
menor ou igual
maior
maior ou igual
igual
diferente
0.7854
1.5708
2.3562
3.1416
0.2000
0.4000
0.6000
0.8000
1.0000
A=
1
4
7
2
5
8
a declarao
>> A(3,3) = A(1,3) + A(3,l)
resulta em
3
6
9
A=
1
4
7
2
5
8
3
6
10
99
80
81
87
93
24
15
16
12
18
11
17
88
19
25
76
82
13
94
100
18
14
20
21
12
83
89
95
96
77
15
16
22
13
19
90
91
97
78
84
67
73
54
60
61
42
48
29
35
36
74
55
56
62
68
49
30
31
37
43
51
57
63
69
75
26
32
38
44
50
ento
>> A(1:5,3)
ans =
11
17
88
19
25
especifica uma submatriz 5x1, ou vetor coluna, que consiste dos cinco primeiros
elementos da terceira coluna da matriz A. Analogamente,
>> A(1:5,7:10)
ans =
74
55
56
62
68
51
57
63
69
75
58
64
70
71
52
40
41
47
28
34
uma submatriz 5x4, consiste das primeiras cinco linhas e as ltimas quatro colunas.
Utilizando os dois pontos no lugar de um subscrito denota-se todos elementos da linha
ou coluna. Por exemplo,
58
64
70
71
52
33
39
45
46
27
40
41
47
28
34
65
66
72
53
59
>> A(1:2:5,:)
ans =
92
14
86
99
81
93
11
88
25
18
2
12
15
22
19
67
54
61
74
56
68
51
63
75
58
70
52
40
47
34
uma submatriz 3x10 que consiste da primeira, terceira e quinta linhas e todas colunas
da matriz A.
Muitos efeitos sofisticados so obtidos usando submatrizes em ambos os lados das
declaraes. Por exemplo, sendo B uma matriz 10x10 unitria,
>> B = ones (10)
B=
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
a declarao,
>> B(1:2:7,6:l0) = A(S:-1:2,1:5)
produz
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
86
1
85
1
14
1
98
1
1
1
93
1
87
1
81
1
80
1
1
1
25
1
19
1
88
1
17
1
1
1
12
1
21
1
20
1
14
1
1
1
5 FUNES
Uma classe de comandos do MATLAB no trabalha com matrizes numricas, mas com
funes matemticas. Esses comandos incluem:
19
1
13
1
22
1
16
1
1
1
Integrao numrica;
Equaes no-lineares e otimizao;
Soluo de equaes diferenciais.
quad8
fmins
fzero
ode23p
ode45
Considere a equao diferencial de segunda ordem chamada de Equao de Van der Pol
x + (x2 - 1) . x + x = 0
Pode-se rescrever esta equao como um sistema acoplado de equaes diferenciais de
primeira ordem
x1 = x1 . (1-x22) - x2
x2 = x1
O primeiro passo para simular esse sistema criar um arquivo ".m" contendo essas
equaes diferenciais. Por exemplo, o arquivo volpol.m:
function xdot=volpol(t,x)
xdot=[0 0]
xdot(l)=x(l).*(1- x(2).^2) - x(2);
xdot(2)=x(l);
Para simular a equao diferencial no intervalo 0 t 20, utiliza-se o comando ode23
>> t0 = 0; tf = 20;
>> x0 = [0 0.25];
>> [t,x] = ode23('volpol', t0, tf, x0);
>> plot(t,x)
6 GRFICOS
A construo de grficos no MATLAB mais uma das facilidades do sistema. Atravs
de comandos simples pode-se obter grficos bidimensionais ou tridimensionais com
qualquer tipo de escala e coordenada. Existe no MATLAB uma vasta biblioteca de
comandos grficos.
Plotar linear.
loglog
semilogx
Plotar em semilog.
semilogy
Plotar em semilog.
fill
polar
bar
Grfico de barras.
stem
Seqncia discreta.
stairs
Plotar em degrau.
errorbar
Plotar erro.
hist
Plotar histograma.
rose
compass
feather
fplot
Plotar funo.
comet
>> t = 0:0.05:4*pi;
>> y = sin(t);
>> plot(t,y)
resulta em
O MATLAB pode tambm plotar mltiplas linhas e apenas um grfico. Existem duas
maneiras, a primeira usado apenas dois argumentos, como em plot(X,Y), onde X e/ou
Y so matrizes. Ento:
A segunda, e mais fcil, maneira de plotar grficos com mltiplas linhas usando o
comando plot com mltiplos argumentos. Por exemplo:
>> plot(t, sin(t), t, cos(t), t, sin(t + pi), t, cos(t + pi))
TIPO DE LINHA
_
_______________
--
--------------------
-.
-.-.-.-.-.-.-.-.-.-.-.-.
..............................
TIPO DE PONTO
.
.......................
********
++++++++++
xx x x x x x x
CORES
y
amarelo
lils
azul claro
vermelho
verde
azul escuro
branco
preto
fill3
comet3
contour
contour3
clabel
quiver
Plotar gradiente.
mesh
meshc
Combinao mesh/contour.
surf
surfc
Combinao surf/contour.
surfil
slice
cylinder
Gerar cilindro.
sphere
Gerar esfera.
Ttulo do grfico.
xlabel
Ttulo do eixo-X.
ylabel
Ttulo do eixo-Y.
zlabel
Ttulo do eixo-Z.
text
gtext
grid
Linhas de grade.
Por exemplo:
>> fplot(sin, [-pi pi])
>> title(Grfico da funo f(x)=seno(x), -pi<x<pi)
>> xlabel(x)
>> ylabel(f(x))
>> grid
7 CONTROLE DE FLUXO
Os comandos que controlam o fluxo especificam a ordem em que a computao feita.
No MATLAB estes comandos so semelhantes aos usados na linguagem C, mas com
uma estrutura diferente.
7.1 Lao for
A primeira parte (i=1) realizada uma vez, antes do lao ser inicializado.
A segunda parte o teste ou condio que controla o lao, (i<=5).
Esta condio avaliada; se verdadeira, o corpo do lao (X(i)=i^2) executado.
1:8
for j= 1:8,
A(i,j)= i+j;
B(i,j)= i-j;
end
end
C=A +B;
end
if x = = p,
clc
break
end
if x = = q,
clc
break
end
end
end
8 ARQUIVOS ".m"
Os comandos do MATLAB so normalmente digitados na Janela de Comando, onde
uma nica linha de comando introduzida e processada imediatamente. O MATLAB
tambm capaz de executar seqncias de comandos armazenadas em arquivos.
Os arquivos que contm as declaraes do MATLAB so chamadas arquivos ".m", e
consistem de uma seqncias de comandos normais do MATLAB, possibilitando incluir
outros arquivos ".m" escritos no formato texto (ASCII).
Para editar um arquivo texto na Janela de Comando do MATLAB selecione New MFile para criar 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.
Existem alguns comandos e declaraes especiais para serem usados nos arquivos, por
exemplo
%Plota uma funo y=ax^2 + bx + c no intervalo -5<x<5
clear
aux=s;
while aux= = s,
clc
a=input(a =);
b=input(b =);
c=input(c =);
x=-5:0.1:5;
y=a*x.^2+b*x+c;
plot(y)
figure(1)
pause
clc
close
aux=input(Plotar outro ? (s/n) = => ,s);
end
O caracter % usado para inserir um comentrio no texto, o comando clear apaga todos
os dados da memria, o comando input usado quando se deseja entrar com um dado a
partir da Janela de Comando, pause provoca uma pausa na execuo do arquivo at que
qualquer tecla seja digitada, clc limpa a Janela de Comando, figure(1) mostra a Janela
Grfica nmero 1 e close fecha todas as Janelas Grficas.
dir
delete
exclui arquivo
type
what
Uma nova janela aberta, o Notepad carregado, podendo ser utilizado da maneira
usual.
Pode-se usar, tambm, qualquer comando implcito do DOS, por exemplo: copy, fomat,
ren, mkdjr, rmdir, ...
save X
save arql X Y Z
Os dados obtidos por outros programas podem ser importados pelo MATLAB, desde
que estes dados sejam gravados em disco no formato apropriado. Se os dados so
armazenados no formato ASCII, e no caso de matrizes, com colunas separadas por
espaos e cada linha da matriz em uma linha do texto, o comando load pode ser usado.
Por exemplo suponha que um programa em linguagem C, depois de executado, monta o
arquivo "teste.sai" (mostrado abaixo) que contm uma matriz.
1.0000
4.0000
7.0000
2.0000
5.0000
8.0000
3.0000
6.0000
9.0000
Executando o comando:
>> load teste.sai
o MATLAB importa a matriz, que passa a se chamar teste:
>> teste
teste =
1
4
7
2
5
8
3
6
9
load
save X
load x
save arq1 X Y Z
load arq1
load arq2.sai
load arq3.sai
Deve-se ressaltar que o comando save, quando usado para exportar os dados do
MATLAB em formato texto, exporta apenas um bloco contendo todas as variveis. E
quando importamos estes comandos atravs do comando load, apenas uma varivel com
nome do arquivo importada. Por exemplo
>> X=rand(3,3)
X=
0.2190
0.0470
0.6789
0.6793
0.9347
0.3835
0.5194
0.8310
0.0346
0.0077
0.3835
0.0668
0.4175
0.6868
0.5890
0.6793
0.9347
0.3835
0.5194
0.8310
0.0346
>> Y = rand(3,3)
Y=
0.0535
0.5297
0.6711
>> save arq2.sai X Y -ascii
>> clear
>> load arq2.sai
>> arq2
arq2 =
0.2190
0.0470
0.6789
0.0535
0.5297
0.6711
0.0077
0.3834
0.0668
0.4175
0.6868
0.5890
10 LISTA DE EXERCCIOS
Calcule a raiz da equao f(x)=x3-9x+3 pelo Mtodo da Bissecao (ref.[6] pg.34)
1 - no intervalo I=[0,1] com =10-3 e nmero mximo igual a 15.
Calcule as razes da equao f(x) =x3-9x+3 pelo Mtodo de Newton-Raphson (ref.
2 - [6] pg.57) nos intervalos I1=(-4,-3), I2=(0,1) e I3=(2,3) com =10-3 e com nmero
mximo de iteraes igual a a 10.
Resolva o sistema linear abaixo usando o Mtodo de Eliminao de Gauss (ref.[6]
3 - pg.96) e compare com o resultado obtido pelo MATLAB.
clear
who
b = l + 2 + 3 + 4 + ...
5+6-7
x=1:2:9
x = (0.8 : 0.2 : 1.4);
y = sin(x)
help sin
dir
a = 2^3
a = 4/3
format long
a = 4/3
format short
clear
a=[1 2 3 ; 4 5 6 ; 7 8 9];
b = a
c=a+b
c=a-b
a(l,:) = [-1 -2 -3]
c = a(:,2)
c = a(2:3, 2:3)
x = [- 1 0 2];
y = [-2 -1 1];
x*y
c=x+2
a = [1 0 2; 0 3 4 ; 5 6 0];
size(a)
b = inv(a);
c = b*a
c = b/a
c = b\a
clear a b x y
whos
help diary
help sqrt
% Trabalhando com nmeros complexos
i = sqrt(-1)
a = [1 2;3 4] + i*[5 6;7 8]
realz = real(z)
imagz = imag(z)
modz = abs(z)
fasez = angle (z)
% Multiplicao de polinmios
% x3 = (x^2 + 3x + 2).(x^2 - 2x + 1)
x3 = conv([1 2 3],[1 -2 1]) % Como ele faz isto?
help save
help load
a = [1 2 3 4 5 6 7 8];
b = a*2;
c = a - 1;
save arquivo 1 a b c
dir
clear
whos
load arquivo 1
whos
% Em que arquivo esto gravados os vetores a, b e c?
clear
% RECURSOS GRFICOS
y = [0 2 5 4 1 0];
plot(y)
help pi
t = 0:.4:4*pi
y = sin(t)
z = cos(t);
plot(t, y, ., t, z "-.")
title(Funes)
xlabel("t")
ylabel("Seno e Cosseno")
text(3, 0.5, Seno)
% Aps o prximo comando, selecione a posio que deseja colocar o texto Cosseno
com
% o mouse
gtext(Cosseno)
t = (-1:.1:1);
x = t.^2;
xr = x+0.2(rand(size(x))-.5);
figure(1); plot(t, xr, g*)
p = polyfit(t, xr, 2)
xa = po1yval(p, t);
figure(l); plot(t, xr, g*, t, xa)
% Aps a prxima instruo, clique em dois pontos do grfico, e os valores
% das coordenadas sero retornados em [x,y]
[x, y] = ginput(2)
(a.^2)/5 ((a-0.1).^2)/2];
mesh(b)
pessoas ao lado, a sua esquerda e direita. Passa-se as 8 somas para voc, que estava fora
da reunio. Como voc descobre o nmero que cada pessoa escolheu ? Utilize o
MATLAB.
REFERNCIAS BIBLIOGRFICAS
[1] MATLAB for Windows Users Guide, The Math Works Inc., 1991.
[2] Dongarra J.J., Moler C.B., Bunch, J.R, Stewart, G.W., LINPACK User's Guide,
Society for Industrial and Applied Mathematics, Philadelphia, 1979.
[3] Smith, B.T., Boyle, J.M., Dongarra, J.J., Garbow, B.S., Ikebe, Y., Klema, V.C.,
Moler, C.B., Matriz Eigensystem Routines - EISPACK Guide, Lecture Notes in
Computer Science, volume 6, second edition, Springer-Verlag, 1976.
[4] Garbow, B.S., Boyle, J.M., Dongarra, J.J., Moler, C.B., Matriz Eigensystem
Roulines EISPACK Gide Extension, Lecture Notes in Computer Science, volume
51, Springer-Verlag, 1977.
[5] Golub, G.H., Van Loan, C.F., Matriz Computations, Johns Hopkins University
Press, 1983.
[6] Ruggiero, M.A.G., Lopes, V.L.R., Clculo Numricos - Aspectos Tericos e
Computacionais, Ed. MacGraw-HiII, So Paulo, 1988.
[7] Kreith, F., Princpios da Transmisso de Calor, Ed. Edgard Blcher Ltda., So
Paulo, 1977.
[8] Curso de MATLAB for Windows, Departamento de Engenharia Mecnica, UNESP,
Campus de Ilha Solteira.