matlab avan˘cado - mtm.ufsc.brmtm.ufsc.br/~melissa/20112/curso_matlab/aula_01.pdf · matlab...
TRANSCRIPT
MATLAB Avancado
Melissa Weber Mendonca1
1Universidade 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]
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 2DCada ponto no grafico e dado por uma coordenada (x , y), onde x e umnumero real e y e um numero real associado a x (como y = f (x)). Mas,nao podemos representar a reta real (contınua) 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 umvetor tal que yi = f (xi ).Exemplo: f (x) = x2;
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
Tıtulo 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 osgraficos. 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 Fazer o grafico de f (x) =1
xcom os eixos x e y desenhados.
2 Fazer o grafico do cırculo x2 + 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 45 6 7 8
Exemplo: Fazer em uma mesma janela os graficos das funcoes seno,cosseno, tangente e cotangente, incluindo os eixos coordenados, tıtulospara 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 curvaparametrizada 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 depontos 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 superfıcie 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 seradesenhado, precisamos de uma malha, ou seja, da interseccao de doisintervalos, um definido no eixo x e outro definido no eixo y , paradesenharmos uma funcao z = f (x , y). Para isto, usamos a funcaomeshgrid.
>> [X,Y] = meshgrid(x,y)
cria matrizes X e Y prontas para serem usadas pelos comandos de criacaode 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)
X =
x1 x2 x3x1 x2 x3x1 x2 x3x1 x2 x3
e Y =
y1 y1 y1y2 y2 y2y3 y3 y3y4 y4 y4
Para o MATLAB:
(x1, y1) (x2, y1) (x3, y1)(x1, y2) (x2, y2) (x3, y2)(x1, y3) (x2, y3) (x3, y3)(x1, y4) (x2, y4) (x3, y4)
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 unidadesentre os pontos.
M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 24 / 37
Superfıcies
Para desenharmos uma superfıcie 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
Superfıcies: 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
Superfıcies: exemplo
Fazer o grafico da sela de macaco
f (x , y) = x3 − 4xy 2
em [−2, 2]× [−3, 4].
M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 27 / 37
Superfıcies: exemplo
Fazer o grafico da sela de macaco
f (x , y) = x3 − 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
Superfıcies: exemplo
Fazer o grafico da sela de macaco
f (x , y) = x3 − 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
Superfıcies: exemplo
Fazer o grafico da sela de macaco
f (x , y) = x3 − 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
Superfıcies “vazadas”: mesh
Para desenharmos apenas as linhas que ligam os pontos representados emuma superfıcie 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 superfıcie
f (x , y) =√
x2 + y 2
usando o comando mesh.
M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 29 / 37
mesh: exemplo
Fazer o grafico da superfıcie
f (x , y) =√
x2 + y 2
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
Superfıcies: exemplo
Verificar a interseccao da paraboloide
f (x , y) = x2 + y 2
com o plano dado pela equacao
x + y + z = 1
M. Weber Mendonca (UFSC) MATLAB Avancado 2011.2 30 / 37
Superfıcies: exemplo
Verificar a interseccao da paraboloide
f (x , y) = x2 + 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