Você está na página 1de 45

MATLAB Avancado

Melissa Weber Mendonca1

1 Universidade Federal de Santa Catarina

2011.2

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 1 / 37


MATLAB Basico: Numeros reais

>> a = 1
>> b = 2
>> a + b

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 2 / 37


MATLAB Basico: Numeros reais

>> a = 1
>> b = 2
>> a + b

ans =
3

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 2 / 37


MATLAB Basico: Vetores

>> v = [1,2,3]
>> v = [1 2 3]

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 3 / 37


MATLAB Basico: Vetores

>> v = [1,2,3]
>> v = [1 2 3]
v =
1 2 3

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 3 / 37


MATLAB Basico: Vetores

>> v = [1,2,3]
>> v = [1 2 3]
v =
1 2 3

>> u = [1;2;3]

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 3 / 37


MATLAB Basico: Vetores

>> v = [1,2,3]
>> v = [1 2 3]
v =
1 2 3

>> u = [1;2;3]
u =
1
2
3

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 3 / 37


MATLAB Basico: Vetores

>> v = [1,2,3]
>> v = [1 2 3]
v =
1 2 3

>> u = [1;2;3]
u =
1
2
3
>> v(2)
ans =
2

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 3 / 37


MATLAB Basico: Matrizes

>> A = [1 2 3;4 5 6]

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 4 / 37


MATLAB Basico: Matrizes

>> A = [1 2 3;4 5 6]
A =
1 2 3
4 5 6

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 4 / 37


MATLAB Basico: Matrizes

>> A = [1 2 3;4 5 6]
A =
1 2 3
4 5 6
>> A(2,1)
ans =
4

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 4 / 37


Operacoes basicas

>> 2*a
>> a*b
>> a.*b
>> a/b
>> a./b
>> a^2
>> a.^2
>> a
>> [y] = funcao(x)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 5 / 37


Funcoes basicas

>> eye(n,n)
>> zeros(m,n)
>> ones(m,n)
>> rand(m,n)
>> size(A)
>> inv(A)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 6 / 37


Graficos em 2D
Cada ponto no grafico e dado por uma coordenada (x, y ), onde x e um
numero real e y e um numero real associado a x (como y = f (x)). Mas,
nao podemos representar a reta real (contnua) no MATLAB. Por isso,
precisamos usar um vetor de pontos:
x = (x1 , x2 , . . . , xn )
e fazer o grafico de f apenas nestes pontos; o MATLAB ligara o resto.

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 7 / 37


Plot

O comando para fazer graficos no MATLAB e

plot(x,y)

em que x e um vetor dos pontos onde a funcao sera avaliada, e y e um


vetor tal que yi = f (xi ).
Exemplo: f (x) = x 2 ;

x = (0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0)

y = (0, 0.01, 0.04, 0.09, 0.16, 0.25, 0.36, 0.49, 0.64, 0.81, 1.0)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 8 / 37


Plot

Para criar estes vetores, podemos usar os seguintes comandos:


>> x = 0:0.1:1
>> y = x.^2
>> plot(x,y)

x pode ser um vetor linha ou coluna.

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 9 / 37


Opcoes do comando plot

>> help plot


Exemplos:
>> plot(x,y,r*)
>> plot(x,y,m^)
>> plot(x,y,Linewidth,3)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 10 / 37


Alguns comandos uteis

>> close
>> close all
>> hold on
>> hold off

Exemplo:
>> x = -2:0.1:2
>> y = x.^2;
>> plot(x,y)
>> hold on
>> z = x.^3;
>> plot(x,z,m)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 11 / 37


Ttulo e legendas nos eixos: title e label

>> title(y = f(x))


>> legend(legenda)
>> xlabel(x)
>> ylabel(y)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 12 / 37


Eixos - axis

As vezes, precisamos fixar ou modificar os eixos contra os quais fazemos os


graficos. Para isso, podemos usar

>> axis
>> axis([x0 x1 y0 y1])
>> axis auto
>> axis equal
>> axis tight
>> axis off

Exemplos: f (x) = sin (x)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 13 / 37


grid

>> t = 0:0.1:4;
>> plot(t,exp(t))
>> grid on
>> grid minor
>> grid off

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 14 / 37


Retas: line

>> line([1 0],[0 0])


>> line([0 0],[0 1])
>> line([x0 x1],[y0 y1])

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 15 / 37


Exemplos

1
1 Fazer o grafico de f (x) = com os eixos x e y desenhados.
x
2 Fazer o grafico do crculo x 2 + y 2 = 4
3 Fazer o grafico do triangulo de vertices (1, 1), (2, 1) e (1.5, 2).

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 16 / 37


fill
>> fill(x,y,x)
Exemplo: repetir os seguintes graficos:

triangulo preenchido.m
M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 17 / 37
fill
>> fill(x,y,x)
Exemplo: repetir os seguintes graficos:

quadrados.m
M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 17 / 37
fill
>> fill(x,y,x)
Exemplo: repetir os seguintes graficos:

smiley.m
M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 17 / 37
Subgraficos: subplot

>> subplot(2,1,1), plot(x1,y1)


>> subplot(2,1,2), plot(x2,y2)
Os graficos ficam nesta posicao:

1 2 3 4
5 6 7 8

Exemplo: Fazer em uma mesma janela os graficos das funcoes seno,


cosseno, tangente e cotangente, incluindo os eixos coordenados, ttulos
para cada grafico e cores diferentes para cada funcao trigonometrica.
(Dica: pode-se escrever tudo isso em um script!)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 18 / 37


Curvas no espaco: plot3

Se quisermos desenhar um conjunto de pontos ou uma curva


parametrizada no espaco, podemos usar o comando plot3. O comando

>> plot3(X,Y,Z)

desenha a curva determinada pelos pontos (X , Y , Z ) no espaco.

>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> xlabel(sin(t))
>> ylabel(cos(t))
>> zlabel(t)
>> axis square

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 19 / 37


Pontos no espaco: plot3

Tambem podemos usar a funcao plot3 para observar a distribuicao de


pontos no espaco.

Exemplo:
>> x = rand(100,1);
>> y = rand(100,1);
>> z = rand(100,1);
>> plot3(x,y,z)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 20 / 37


Graficos em 3D

Queremos desenhar o grafico de uma funcao de duas variaveis, ou seja,

z = f (x, y )

O resultado sera uma superfcie no espaco 3D, com coordenadas

(x, y , z)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 21 / 37


Criador de malha: meshgrid

Ao inves de criarmos um intervalo de pontos onde o grafico sera


desenhado, precisamos de uma malha, ou seja, da interseccao de dois
intervalos, um definido no eixo x e outro definido no eixo y , para
desenharmos uma funcao z = f (x, y ). Para isto, usamos a funcao
meshgrid.

>> [X,Y] = meshgrid(x,y)

cria matrizes X e Y prontas para serem usadas pelos comandos de criacao


de graficos em 3D.

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 22 / 37


meshgrid

>> x = [x1 x2 x3];


>> y = [y1 y2 y3 y4];
>> [X,Y] = meshgrid(x,y)

x1 x2 x3 y1 y1 y1
x1 x2 x3
y2 y2 y 2
X =
x1 eY =
x2 x3 y 3 y3 y 3
x1 x2 x3 y4 y4 y4
Para o MATLAB:
(x1, y 1) (x2, y 1) (x3, y 1)
(x1, y 2) (x2, y 2) (x3, y 2)
(x1, y 3) (x2, y 3) (x3, y 3)
(x1, y 4) (x2, y 4) (x3, y 4)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 23 / 37


meshgrid

>> x = -1:0.1:1
>> [X,Y] = meshgrid(x)

cria uma malha em [1, 1] [1, 1] com espacamento de 0.1 unidades


entre os pontos.

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 24 / 37


Superfcies

Para desenharmos uma superfcie dada por

z = f (x, y )

com (x, y ) [x0 , y0 ] [x1 , y1 ], usamos o comando surf(X,Y,Z).

>> x = x0:deltax:x1;
>> y = y0:deltay:y1;
>> [X,Y] = meshgrid(x,y);
>> Z = f(X,Y)
>> surf(X,Y,Z)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 25 / 37


Superfcies: exemplo

>> x = -1:0.1:1;
>> [X,Y] = meshgrid(x);
>> Z = X.^2+Y.^2
>> surf(X,Y,Z)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 26 / 37


Superfcies: exemplo

Fazer o grafico da sela de macaco

f (x, y ) = x 3 4xy 2

em [2, 2] [3, 4].

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 27 / 37


Superfcies: exemplo

Fazer o grafico da sela de macaco

f (x, y ) = x 3 4xy 2

em [2, 2] [3, 4].

>> x = -2:0.1:2;
>> y = -3:0.1:4;
>> [X,Y] = meshgrid(x,y);
>> Z = X.^3-4*X.*Y.^2
>> surf(X,Y,Z)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 27 / 37


Superfcies: exemplo

Fazer o grafico da sela de macaco

f (x, y ) = x 3 4xy 2

em [2, 2] [3, 4].

>> x = -2:0.1:2;
>> y = -3:0.1:4;
>> [X,Y] = meshgrid(x,y);
>> Z = X.^3-4*X.*Y.^2
>> surf(X,Y,Z)
>> title(Sela de macaco)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 27 / 37


Superfcies: exemplo

Fazer o grafico da sela de macaco

f (x, y ) = x 3 4xy 2

em [2, 2] [3, 4].

>> x = -2:0.1:2;
>> y = -3:0.1:4;
>> [X,Y] = meshgrid(x,y);
>> Z = X.^3-4*X.*Y.^2
>> surf(X,Y,Z)
>> title(Sela de macaco)
>> axis([-10 10 -8 8])

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 27 / 37


Superfcies vazadas: mesh

Para desenharmos apenas as linhas que ligam os pontos representados em


uma superfcie dada por
z = f (x, y )
com (x, y ) [x0 , y0 ] [x1 , y1 ], usamos o comando mesh(X,Y,Z).

>> x = x0:deltax:x1;
>> y = y0:deltay:y1;
>> [X,Y] = meshgrid(x,y);
>> Z = f(X,Y)
>> mesh(X,Y,Z)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 28 / 37


mesh: exemplo

Fazer o grafico da superfcie


p
f (x, y ) = x2 + y2

usando o comando mesh.

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 29 / 37


mesh: exemplo

Fazer o grafico da superfcie


p
f (x, y ) = x2 + y2

usando o comando mesh.


>> x = -2:0.1:2;
>> [X,Y] = meshgrid(x);
>> mesh(X,Y,sqrt(X.^2+Y.^2))

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 29 / 37


Superfcies: exemplo

Verificar a interseccao da paraboloide

f (x, y ) = x 2 + y 2

com o plano dado pela equacao

x +y +z =1

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 30 / 37


Superfcies: exemplo

Verificar a interseccao da paraboloide

f (x, y ) = x 2 + y 2

com o plano dado pela equacao

x +y +z =1

>> x = -2:0.1:2;
>> [X,Y] = meshgrid(x);
>> surf(X,Y,X.^2+Y.^2)
>> mesh(X,Y,1-X-Y)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 30 / 37


Superfcies: exemplo

Verificar a interseccao da paraboloide

f (x, y ) = x 2 + y 2

com o plano dado pela equacao

x +y +z =1

>> x = -2:0.1:2;
>> [X,Y] = meshgrid(x);
>> surf(X,Y,X.^2+Y.^2)
>> hold on
>> mesh(X,Y,1-X-Y)

M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 30 / 37

Você também pode gostar