matlab avan˘cado - mtm.ufsc.brmtm.ufsc.br/~melissa/20112/curso_matlab/aula_01.pdf · matlab...

45
MATLABAvan¸cado Melissa Weber Mendon¸ ca 1 1 Universidade Federal de Santa Catarina 2011.2 M. Weber Mendon¸ca (UFSC) MATLABAvan¸cado 2011.2 1 / 37

Upload: hakhuong

Post on 12-Sep-2018

222 views

Category:

Documents


0 download

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]

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 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

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)

>> hold on

>> mesh(X,Y,1-X-Y)

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