Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso Introdutrio
Sumrio
1. INTRODUO ................................................................................................................ 2
1.1 O que o Matlab? ........................................................................................................ 2
2. INICIANDO ........................................................................................................................ 3
2.1 Variveis ...................................................................................................................... 3
2.1.1 ENTRANDO COM VALORES ................................................................................ 3
2.1.2 VARIVEIS PERMANENTES ................................................................................ 4
2.2 Expresses e Comandos Bsicos ................................................................................ 4
2.2.1 SALVANDO/APAGANDO O WORKSPACE ........................................................... 5
2.2.2 O COMANDO MAIS IMPORTANTE ....................................................................... 5
2.2.3 EXERCCIOS ......................................................................................................... 6
3. FAMILIARIZANDO-SE COM MATRIZES........................................................................... 7
3.1 Manipulao de Matrizes .......................................................................................... 7
3.1.1 ELEMENTOS DE UMA MATRIZ ............................................................................ 7
3.1.2 GERANDO VETORES ........................................................................................... 8
3.1.3 MATRIZES DENTRO DE MATRIZES .................................................................... 9
3.1.4 EXERCCIOS ....................................................................................................... 10
3.2 Operaes Elemento por Elemento .................................................................. 11
3.3 Operadores Lgicos e Relacionais ......................................................................... 12
3.4 Operadores e Manipulao de Matrizes ................................................................. 13
3.4.1 EXERCCIOS ................................................................................................... 13
3.5 Algumas Funes ................................................................................................... 14
4. POLINMIOS.................................................................................................................. 14
4.1 Representando Polinmios no MATLAB..................................................................... 14
4.2 Funes Relacionadas Polinmios.......................................................................... 14
4.2.1 EXERCCIOS ....................................................................................................... 15
5. GRFICOS...................................................................................................................... 15
5.1 Grficos 2-D ............................................................................................................... 15
5.1.2 EXERCCIOS ....................................................................................................... 17
5.2 Grficos 3-D ............................................................................................................... 18
5.2.1 FUNES ELEMENTARES PARA GRFICOS 3-D............................................ 18
5.2.2 MESHGRID.......................................................................................................... 18
5.2.3 MELHORANDO A APARNCIA ........................................................................... 19
5.2.4 EXERCCIOS ....................................................................................................... 20
6. PROGRAMAO............................................................................................................ 20
6.1 Controladores de Fluxo .............................................................................................. 21
6.1.1 FOR ..................................................................................................................... 21
6.1.2 WHILE.................................................................................................................. 21
6.1.3 IF.......................................................................................................................... 22
6.1.4 BREAK, INPUT, PAUSE ...................................................................................... 22
6.2 Arquivos M ................................................................................................................. 23
6.2.1 SCRIPTS.............................................................................................................. 23
6.2.2 ARQUIVOS-FUNO .......................................................................................... 24
6.2.3 FUNES FUNO............................................................................................ 25
6.2.4 EXERCCIOS ....................................................................................................... 26
7. BIBLIOGRAFIA................................................................................................................ 26
8. RESPOSTA DOS EXERCCIOS...................................................................................... 27
1. INTRODUO
Para maiores informaes sobre as ltimas novidades do software, consulte a pgina na internet da MathWorks
Inc. em http://www.mathworks.com
2. INICIANDO
2.1 Variveis
O MATLAB trabalha essencialmente com um tipo de varivel: uma matriz contendo
nmeros, complexos ou no (um escalar uma matriz 1 x 1). Em alguns casos, um
tratamento especial dado a uma matriz 1 x 1 (escalar) ou a matrizes 1 x n ou n x 1
(vetores).
Variveis
Escalares
Vetores
Matrizes
A =
4.7
Vetores Linha
(matrix 1x1)
Numricos
Vetores Coluna
B =
Strings
-7
4.9
7.6
8
Por exemplo, para entrar com a matriz abaixo na memria do computador, e guard-la
na varivel A:
A=
1
4
7
2
5
8
3
6
9
Basta digitar:
A=[1 2 3;4 5 6; 7 8 9]
A =
1
OBS: Para que o computador realize a operao e no mostre a sada, basta terminar
a expresso com ponto-e-vrgula (;). Isto muito til para evitar que o computador fique
mostrando nmeros de clculos intermedirios e para acelerar as operaes.
ans
flops
Contador
de
operaes
matemticas.
Preciso da mquina.
NaN
realmax
inf
Infinito.
realmin
pi
3,14159265358979
why
i, j
Unidade imaginria
version
Tipo de computador.
Resposta sucinta.
Verso do MATLAB.
-99
.0001
9.63973
1.602E-20
6.025E23
3 + 2i
-3.1459i
3E5i
adio
/ e \
subtrao
potenciao
multiplicao
matriz transposta
diviso
O MATLAB possui uma vasta gama de funes matemticas elementares, com seno
(sin), tangente (tan), logaritmo (log10), etc. Por exemplo, para calcular o seno de 5 e
guardar na varivel x:
x=sin(5)
Subtraindo matrizes:
A=[1 2 3;4 5 6;7 8 9];
B=[4 5 6;1 2 3;8 7 6];
C=A'-B
OBS:
X = A/B a soluo de A * X = B
X = B/A a soluo de X * A = B
salva
somente
as
variveis
help who
WHO
Largest component.
2.2.3 EXERCCIOS
Comandos: who, whos, eps, format, quit, save, load, clear, help, lookfor.
Exerccios:
1) Armazene no workspace os seguintes valores:
a = 3.132;
b = -23.004;
A=
c = 5*pi;
0.32
2.5 + pi
1e2
12
51
24
34
87
32
4.65
74
13
-43
d = (3 5.4 7.43)
e = (-2.234 0 pi/2)
-9.81
f=
12e-8
g=
B=
4i
pi*i
e) g c * f
b) c b * (a / b)
f) A * B
c) d e
g) a * A B / c
d) e + 2 * f
h) f * B
e) max(log(g + f + dt))*B
b) tan(c+eps) asin(b)
f) sin(cos(tan(A)))
c) mind(d^2) max(e)
g) inv(A)
d) log(f)
h) inv(At) * cos(B)
para x
b) log(d + 34.0054)
para y
c) log(A)
para Z
d) f * B
para t
Resulta em:
x =
-1.3000
4.3266
7.5000
Elementos individuais de uma matriz podem ser referenciados com seus respectivos
ndices entre parntesis. No exemplo anterior, para referenciar o segundo elemento do vetor x:
x(2)
ans =
4.3266
Analogamente em uma matriz, com linha e coluna determinada tenho um elemento. Seja:
x=[1 2 3;4 5 6;7 8 9]
x =
1
x(2,3)
ans =
6
2.5000
4.0000
5.5000
7.0000
Os dois pontos significam incio : passo : fim. O valor de passo pode ser qualquer
nmero real ( 0). A notao ( : ) muito til para gerar tabelas e plotar grficos, como
veremos adiante.
x=0:0.2:3;
y=exp(-x) + sin(x);
z=[x'y']
z =
0
1.0000
0.2000
1.0174
0.4000
1.0597
0.6000
1.1135
0.8000
1.1667
1.0000
1.2094
1.2000
1.2332
1.4000
1.2320
1.6000
1.2015
1.8000
1.1391
2.0000
1.0446
2.2000
0.9193
0.7662
2.6000
0.5898
2.8000
0.3958
3.0
0.1909
13
32
A=
10
11
12
14
83
23
Pegar
os elementos da 2a linha e 3a e 4a
colunas:
10
11
12
14
83
23
A(2,[3 4])
ans =
7
10
A=
10
11
12
14
83
23
10
11
ans =
10
11
10
11
12
3.1.4 EXERCCIOS
1) Sejam as matrizes abaixo:
A=
10
11
12
14
83
23
B=
7.4
pi
-4.01
0.1
10
11
e) c = A([1:4],2)
b) c = A[1 2 3]
f) c = A(2,:)
c) c = A([ 1 2 3],4)
g) c = A(:,:)
d) c = A(1:3,4)
h) c = A(2:4,[1 3 4])
36
42
66
81
96
102
126
150
16
25
36
49
64
81
Pode-se perceber que no segundo caso p que ocorreu foi: elemento a11 * b11, a12 * b12, a21
* b21. Diferente do primeiro caso, onde ocorreu uma multiplicao de duas matrizes 3 x 3.
As operaes elemento por elemento so:
Smbolo
Operao
.*
multiplicao
./ ou .\
diviso
.^
potenciao
12
Operador
<
menor que
<=
>
maior que
>=
==
igual
~=
no igual
x>4
ans =
Operador
&
ou
no
Existem ainda algumas funes que so teis com os operadores lgicos, com any ou
all. Por exemplo:
x = [1 2 3 4 5 6]
x =
1
13
any(x>5)
ans =
1
all(x>5)
ans =
0
3.4.1 EXERCCIOS
Comandos: any, all.
Exerccios:
1) Seja o vetor x = 1:10. Verifique as afirmativas:
a) (x.^2) == ( x.*x)
b) any((x.^3)>(3*x))
c) all((x./(x+1))>((x+1)./(x+1.5)))
d) A = [1 2 3; 4 5 6; 7 8 9];
A^2 == A.^2
14
b) elementos diferentes de 3 e 5
c) elementos iguais a 2 5 8 9
rem.
exp
poly
polinmio caracterstico
log
logaritmo natural
det
determinante
log10
logaritmo base 10
abs
mdulo
find
ndice de matriz
sqrt
raiz quadrada
max
mximo valor
real
min
mnimo valor
imag
mean
mdia aritmtica
conj
std
desvio padro
round
arredondar
4. POLINMIOS
4.1 Representando Polinmios no MATLAB
O MATLAB representa polinmios como vetores de uma linha, contendo os
coeficientes ordenados em ordem decrescente. Por exemplo, o polinmio:
x3 6x2 72x 27
representado da forma
p=[1 -6 -72 -27]
p =
1
-6
-72
-27
razes do polinmio
deconv
diviso
polyval
polyder
derivadas
conv
multiplicao
polyfit
melhor curva
15
1.2000
2.0000
1.6000
3.0000
2.3000
4.0000
2.8000
5.0000
3.9000
6.0000
4.5000
7.0000
5.6000
faj=polyfit(x,y,1);
faj=polyval(faj,x);
plot(x,y,'+blue',x,faj,'black')
4.2.1 EXERCCIOS
1) Sejam os polinmios p = x4 3x2 +5x 30 e q = 2x4 7x3 +2x 15. Calcule:
a) p x q
e) 1 derivada de p
b) p q
f) 1 derivada de p no ponto x =3
c) p(2)
g) 1 derivada de p q
d) razes q
5. GRFICOS
O MATLAB proporciona tcnicas sofisticadas para visualizao de dados. Ele trabalha
essencialmente com objetos grficos, tais como linhas e superfcies, cuja aparncia pode
ser controlada atravs de propriedades de objeto. Entretanto, como o MATLAB possui
uma vasta gama de funes para grficos que automatizam essas propriedades, na maioria
das vezes no ser necessrio lidar com estes objetos.
16
y=x
x=[0 1 2 3 4 5];
y=x.^2;
plot(x,y)
16
25
plot(x,y)
x=[0:5];
plot(x,x.^2)
O MATLAB criar uma janela com a figura do grfico ( vide figura 1). Na verdade, a
funo plot recebe um nmero varivel de argumentos. Sua forma mais geral
plot(x1,y1,jeito1,x2,y2,jeito2,,xn,yn,jeiton). Ou seja, voc pode traar mais de uma curva no
mesmo grfico. O argumento jeito representa as vrias opes para o grfico, que pode ser
qualquer um dos seguintes strings2:
amarelo
branco
cruz
roxo
preto
slida
azul claro
--
tracejada
estrela
vermelho
ponto
pontilhada
verde
crculo
-.
trao ponto
azul
25
20
15
10
0
0
0.5
1.5
2.5
3.5
4.5
Um string uma seqncia de caracteres que o MATLAB interpreta como um texto. Os strings so
17
title
ttulo do grfico
xlabel
nome do eixo x
text
ylabel
nome do eixo y
gtext
grid
semilogx
grfico mono-log em x
semilogy
grfico mono-log em y
loglog
grfico di-log
axis
grfico f(x)=exp(-x)*sin(x)
0.35
x=[0:0.1:exp(1)*pi];
y=exp(-x).*sin(x);
0.25
plot(x,y,'--b');
0.2
xlabel('eixo x');
ylabel('eixo y');
gtext('ponto de mximo local');
eixo y
title('grfico f(x)=exp(-x)*sin(x)');
0.15
0.1
0.05
-0.05
0
eixo x
5.1.2 EXERCCIOS
Comandos: plot, title, xlabel, ylabel, axis, gtext, grid, semilogx, loglog
Exerccios:
c) y = cos(ex), x [0;20]
b) y = sin(x)*cos(x), x [-2;]
18
Curvas
plot3
Plota curvas em 3D
contour
Curvas de nvel
Superfcies
superfcies 3D
Por exemplo:
t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t);
40
30
20
10
0
1
0.5
1
0.5
0
0
-0.5
-0.5
-1
-1
5.2.2 MESHGRID
O MATLAB define uma superfcie do tipo mesh (rede) pelas coordenadas Z sobre um
plano x-y. Superfcies tipo mesh so teis para visualizar matrizes demasiadamente grandes
para serem mostradas na forma numrica, ou para plotar funes de duas variveis.
O primeiro passo para plotar uma funo de 2 variveis z=f(x,y) gerar matrizes X e Y
contendo linhas e colunas repetidas, respectivamente, para funcionarem como o domnio da
funo. A funo meshgrid transforma o domnio especificado por dois vetores x y em duas
matrizes X e Y. Essas matrizes ento so usadas para avaliar a funo de 2 variveis. Por
exemplo, seja a funo:
19
plot3(sin(t),cos(t),t);
[X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);
r= sqrt(X.^2+Y.^2)+eps;
Z=sin(r)./r;
mesh(X,Y,Z)
20
possvel ainda mudar o mapa de cores dos grficos. Para tal, utilize a funo
colormap.
subplot(221)
mesh(X,Y,Z)
title('Sombrero')
subplot(222)
plot3(sin(t),cos(t),t);
title('Hlice')
subplot(223)
mesh(a,b,c)
title('Esfera')
subplot(224)
mesh(X,Y,3*sqrt(X.^2+Y.^2))
Figura 4 - Grfico usando comando subplot
title('Cone')
5.2.4 EXERCCIOS
Comandos: plot3, mesh, contour, surf, meshgrid, view, subplot, colormap
c) f(x,y) = x y , x, y [0;1]
6. PROGRAMAO
Arquivos
Scripts
Funes
matrizes extensas
comandos freqentemente digitados
Funes Funo
21
6.1.1 FOR
O lao for permite um comando, ou grupo de comandos, repetir-se um nmero
determinado de vezes. A forma geral de um lao for :
for varivel = expresso
comandos
end
Por exemplo,
for i = 1:10
v(i)=3*i;
end
12
15
18
21
24
27
30
6.1.2 WHILE
O lao while permite que o comando seja repetido um nmero indefinido de vezes,
enquanto uma condio lgica seja satisfeita. A forma geral do lao while :
while (expresso verdadeira)
comandos
end
Assim, como no caso de for, while precisa de um end para indicar o fim do lao. O
exemplo abaixo calcula o fatorial de n enquanto n! < 10100.
n=1;
22
while prod(1:n)<1.e100
n=n+1;
end
n
n =
70
6.1.3 IF
O comando if estabelece caminhos alternativos para a fluncia do programa. Sua
forma geral :
if condio verdadeira
comandos
elseif condio 2 verdadeira
comandos
else
comandos
end
A primeira condio sempre escrita com if, a ltima com else, e todas as
intermedirias com elseif.
a=round(10*rand(1));
if a>5
b=3*a;
elseif a<5;
b=a/3;
else
b=a;
end
23
6.2 Arquivos M
Quando uma linha de comandos digitada no MATLAB, ele imediatamente processa e
devolve o resultado. Porm, possvel executar seqncias de comandos, que podem ser
guardados em arquivos. Arquivos que contm comandos do MATLAB so chamados
arquivos M porque possuem extenso .m.
6.2.1 SCRIPTS
Os arquivos script automatizam uma seqncia de comandos. Quando um script
chamado, o MATLAB simplesmente executa os comandos contidos no arquivo. Scripts so
teis para entrar com matrizes muito extensas (pois erros de digitao podem ser facilmente
corrigidos) e comandos que seriam digitados freqentemente.
O exemplo abaixo foi escrito do editor de texto Notepad, e calcula os primeiros
nmeros de Fibonacci, mostrando o resultado em um grfico.
% Arquivo M que calcula os primeiros
% nmeros de Fibonacci
f = [1 1];
i=1;
while f(i) + f(i+1) < 1000
f(i+2) = f(i) + f(i+1)
i=i+1;
end
plot(f)
24
Estando este arquivo salvo em um dos diretrios path do MATLAB com uma extenso
.m, toda vez que seu nome for digitado, todas as linhas de comandos acima sero
executadas.
OBS: Para saber o path do MATLAB, use o comando path. Com este comando
possvel inclusive alterar o path original. Lembre-se de salvar o arquivo com uma extenso
.m, com a opo salvar como tipo: todos os arquivos (*.*).
6.2.2 ARQUIVOS-FUNO
Uma funo difere de um script j que argumentos podem ser passados para a
funo, e as variveis criadas e manipuladas na funo so locais para a mesma.
Na primeira linha de um arquivo funo dever aparecer a palavra function, definir o
nome da funo.
function y = escal(a,b)
% ESCAL Produto escalar de dois vetores
%
% ESCAL retorna um vetor que o resultado do produto
% escalar de dois vetores.
% Os dois vetores devem ser do mesmo tamanho
if size(a) ~= size(b)
error(Erro: vetores no tem mesmo tamanho);
end
y=sum(a.*b);
Salve este texto como um arquivo escal.m no path do MATLAB. Crie dois vetores de
mesmo tamanho e chame a funo escal. A resposta ser o produto escalar de dois vetores.
25
digitar lookfor prximo, o MATLAB ir procurar todas as funes que contenham esta
palavra, e mostrar suas 2as linhas.
fzero
quad
integrao numrica
fmin/fmins
criar um vetor t do tamanho desejado, criar um vetor v = sin(t).* t.^2 +8*t +1, e
usar a funo plot com v e t;
26
t2=fzero('velocid',10)
t2 =
10.3261
6.2.4 EXERCCIOS
1) Crie scripts para as seqncias de comandos
a) item 5.1.1
c) item 6.2.1
b) item 5.2.2
entre 0 e 1
b) f(x) = x2 6x +7
entre 3 e 3
7. BIBLIOGRAFIA
27
a)
0.0301 + 0.0301i
1)
b)
1.5708 3.8283i
f=[-9.81;0;1]
c)
min(d.^2)-max(e)
f =
7.4292
-9.8100
d) 2.2834 + 3.1416i
- Inf
1.0000
e) 1.0e+002 *
g =
0.0959+0.1571i
0.6523+1.0681i
1.6690+2.7332i
0.6139+1.0053i
0.0892+0.1461i
1.4196+2.3248i
0.2494+0.4084i
-0.8249-1.3509i
0.0000
0 + 4.0000i
0 + 3.1416i
0.8108
0.6696
0.7396
0.3906
0.7205
A =
0.7830
0.5804
-0.5095
0.1739
0.0113
-0.0201
0.3200
f)
5.6416
2.0000
100.0000
4.0000
12.0000
0.7723
0.0035
-0.0661
9.0000
51.0000
24.0000
-1.7064
-0.0116
0.1897
h) -1.0128
-1.7442
-0.7156
-0.0055
-0.0203
0.0006
0.1288
0.1933
0.0825
g)
-0.5450
B =
5.0000
34.0000
87.0000
32.0000
4.6500
74.0000
13.0000
-43.0000
4)
a)
x = 10.2609
2)
b)
y = 3.6111
a) 19.8720
c)
Z =
b) 12.5760
3.6739
3.7241
-1.1394
1.7302
0.6931
4.6052
1.3863
2.4849
d) 24.8540
2.1972
3.9318
3.1781
d)
t=f*B
3.5708
e) 1.0e+002 *
5) save exerc1.mat x Z B
1.5410
6) load exerc1.mat
0 + 0.0400i
7) clear Z
-0.1571 + 0.0314i
3.1.4
1) a) c=A(3,2)
b) c=B(2,2)
f) 1.0e+003 *
0.0631
0.3593
0.6280
3.5746
8.4800
d = 0
1.6770
0.8552
3.5250
15.5050
0.7254
d) d=B(:,3)
g)
311.1628
28.1880
12.2320
158.9044
e) A(1,:)=[B(2,:),0]
32.8730
f) A(2,:)=A(4,:)
77.9055
3)
c=2
c) d=A(1,[1 2 3]) d = 1 2 3
0.1821
0.6893
c=10
2)
a)
x=0:1:15
b)
x=-3.4:0.32:8
28
c)
x=10:-1.23:1
y=polyder([1 0 5 2]);
d)
x=0:10*pi:15^2
y=polyval(y,x);
plot(y)
3)
a)
vlido
b)
di-log
c)
vlido
d)
vlido
e)
vlido
5.2.4
f)
vlido
1) a)
g)
x=[-5:0.5:5];
h)
vlido
y=x;
ao
grfico
basta
[x,y]=meshgrid(x,y);
4) t=A([1 2],[2 3])
z=x.^2 + y.^2;
t=B(1,:)
mesh(z)
3.4.1
b)
a)
1 1 1 1 1 1 1 1 1 1
x=[-0.5:0.1:0.5];
b)
y=x;
c)
[x,y]=meshgrid(x,y);
z=sqrt(1 - x.^2 - y.^2);
d)
0
mesh(z)
c)
x=[0:0.1:1];
y=x;
2)
a)
t=x(x>5)
[x,y]=meshgrid(x,y);
b)
z=x.*y;
c)
mesh(z)
d)
t=x(rem(x,3)==1)
4.2.1
d)
1)
x=[-10:0.5:10];
y=x;
a) conv(p,q)
2
-7
-6
33 -110
204
55
-135
450
[x,y]=meshgrid(x,y);
b) deconv(p,q)
z=atan(x.^2 + y.^2);
0.5000
mesh(z)
d)
polyval(p,2)
e)
-16
x=[-10:0.5:10];
e) roots(q)
y=[-10:0.5:10];
3.5850
[x,y]=meshgrid(x,y);
0.5709 + 1.1745i
z=(x+y)./(x-y);
0.5709 - 1.1745i
mesh(z)
-1.2268
f)
f) polyval(polyder(q),3)
x=[-10:0.5:10];
g) polyder(deconv(p,q))
y=[-10:0.5:10];
[x,y]=meshgrid(x,y);
5.1.2
1) a)
b)
d)
z=(x.*y)./(x.^2-y.^2);
x=[-20:20];
mesh(z)
y=x.^3-5*x+2;
g)
plot(x,y)
x=[-pi:0.1:pi];
x=[-2*pi:0.1pi];
y=x;
y=sin(x).*cos(x)
[x,y]=meshgrid(x,y);
plot(x,y)
z=sin(x/2).*cos(y/3);
x=0:0.1:10;
mesh(z)
usar
os
comandos
29
quad('sin',0,1)
6.2.4
1) a)
b)
ans =
y=x.^2;
b)
plot(x,y)
!notepad poli.m
end
function y=poly(x)
x=[-10:0.5:10];
y=x.^2-6*x+7
y=[-10:0.5:10];
quad('poli',-3,3)
[x,y]=meshgrid(x,y);
ans =
z=x.^2 + y.^2;
mesh(z)
end
c) % Arquivo M que calcula os primeiros
% nmeros de Fibonacci
f=[1 1];
i=1;
while (f(i) + f(i+1))<1000
f(i+2)=f(i) + f(i+1);
i=i+1;
end
plot(f)
d)
2) a)
funciotn y=media(x)
y-sum(x)/length(x)
b)
function y=produto(a,b)
y=a*b
c)
function y = teste(x)
if rem(x,2)==0
disp(O nmero par)
else
disp(O nmero impar)
end
if abs(x)~=x
disp(O nmero negativo)
else
disp(O nmero positivo)
end
d) function y=pressao(t,v,a,b)
y=(8.31*t)./(v-b)-a./v.^2;
3)
clear
clc
v=[1:0.3:10];
a=input(a=);
b=input(b=);
t=input(t=);
plot(v,pressao(t,v,a,b))
end
5) a)
0.4597
x=0:5;
60