Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

18
http://www.mathworks.com/ Maria Antónia Forjaz, DMat, UM MatLab Gráficos

Transcript of Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

Page 1: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

http://www.mathworks.com/ Maria Antónia Forjaz, DMat, UM

MatLab

Gráficos

Page 2: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

plot(x,y)

>> x=[1.5 2.2 3.1 4.6 5.7 6.3 9.4];

>> y=[2.3 3.9 4.3 7.2 4.5 3.8 1.1];

>> plot(x,y)

>> plot(x,y,'*')

1 2 3 4 5 6 7 8 9 101

2

3

4

5

6

7

8

1 2 3 4 5 6 7 8 9 101

2

3

4

5

6

7

8

Page 3: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

plot(x,y, string)

>> x=[0 2 5 7 9 11 13 ];

>> y=[2.3 3.9 4.3 7.2 4.5 3.8 1.1];

>> c=[1.5 2.3 3.4 6.7 7.1 9.10 10.4 ];

>> b=[1 3 4 6 8 10 14 ];

>> plot(x,y,'g-',b,c,'r--')

0 2 4 6 8 10 12 141

2

3

4

5

6

7

8

9

10

11

Page 4: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

plot(x,y, string)

>> t = 0:0.05:4*pi;

>> y = sin(t);

>> plot(t,y)

>> plot(t, sin(t), t, cos(t), t, sin(t + pi), t, cos(t + pi))

0 2 4 6 8 10 12 14-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0 2 4 6 8 10 12 14-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 5: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

subplot

>> t = 0:0.05:4*pi;

>> subplot(2,3,1),plot(t,sin(t))

subplot(2,3,2),plot(t,cos(t))

subplot(2,3,3),plot(t,tan(t))

subplot(2,3,4),plot(t,sin(t+pi))

subplot(2,3,5),plot(t,cos(t+pi))

subplot(2,3,6),plot(t,tan(t+pi))

2 linhas e 3 gráficos por linha

0 10 20-1

-0.5

0

0.5

1

0 10 20-1

-0.5

0

0.5

1

0 10 20-400

-200

0

200

400

0 10 20-1

-0.5

0

0.5

1

0 10 20-1

-0.5

0

0.5

1

0 10 20-400

-200

0

200

400

Page 6: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

subplot

>> x = 0:0.1:1;>> subplot(4,3,1),plot(x,x.^2,'.')subplot(4,3,2),plot(x,x.^2,'o')subplot(4,3,3),plot(x,x.^2,'x')subplot(4,3,4),plot(x,x.^2,'+')subplot(4,3,5),plot(x,x.^2,'*')subplot(4,3,6),plot(x,x.^2,'s')subplot(4,3,7),plot(x,x.^2,'d')subplot(4,3,8),plot(x,x.^2,'v')subplot(4,3,9),plot(x,x.^2,'^')subplot(4,3,10),plot(x,x.^2,'<')subplot(4,3,11),plot(x,x.^2,'p')subplot(4,3,12),plot(x,x.^2,'h')

4 linhas e 3 gráficos por linha

0 0.5 10

0.5

1

0 0.5 10

0.5

1

0 0.5 10

0.5

1

0 0.5 10

0.5

1

0 0.5 10

0.5

1

0 0.5 10

0.5

1

0 0.5 10

0.5

1

0 0.5 10

0.5

1

0 0.5 10

0.5

1

0 0.5 10

0.5

1

0 0.5 10

0.5

1

0 0.5 10

0.5

1

Page 7: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

Um círculo

>> t=0:pi/20:2*pi;

>> plot(sin(t),cos(t))

>> axis square

-1 -0.5 0 0.5 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 8: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

fplot(f(x),intervalo de variação)

>> fplot('sin(x)',[-pi,pi])

Produz o gráfico no intervalo [-pi, pi]da função sin(x) correspondente a um certo conjunto de pontos determinadospelo algoritmo e implementados em fplot.

>> [x,y]=fplot('sin(x)',[-pi,pi])Não produz gráfico, mas as coordenadasdos vectores x e y, seleccionadas pelo algoritmo(cujas coordenadas não estão em progressão aritmética,Começando com um passo (xmax-xmin)*TOL, TOL=2e-3,E vão-se ajustando).

-3 -2 -1 0 1 2 3-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 9: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

Mais completo gráfico da função seno

>> fplot(‘sin x’, [-pi pi])

>> title(‘Gráfico da função f(x)=seno(x), -pi<x<pi’)

>> xlabel(‘x’)

>> ylabel(‘f(x)’)

>> grid

Page 10: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

Mais completo gráfico

>> x=[0:0.1:exp(1)*pi];

>> y=exp(-x).*sin(x);

>> plot(x,y,'--b');

>> title('gráfico f(x)=exp(-x)*sin(x)');

>> xlabel('eixo x');

>> ylabel('eixo y');

>> gtext('ponto de máximo local');

0 1 2 3 4 5 6 7 8 9-0.05

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35gráfico f(x)=exp(-x)*sin(x)

eixo x

eixo

y

ponto de máximo local

Page 11: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

>>fplot('(x+1).*(x-sqrt(2))./(x-sqrt(2))',[-2,2])

O gráfico é (claro!) o da recta y=x-1Não sendo 2 uma das abcissas dos

pontos do gráfico, fplot não detecta a descontinuidade.

Usando a função

>> f=inline('(x+1).*(x-sqrt(2))./(x-sqrt(2))')

>> x=0:sqrt(2)/20:2 ; plot(x,f(x))Warning: Divide by zero. (erro no cálculo de f( 2) , origina divisão por zero!)

Em qualquer caso, com mais ou menos pontos estamos a representar uma curva contínua por um conjunto discreto de pontos.

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2-1

-0.5

0

0.5

1

1.5

2

2.5

3

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 21

1.2

1.4

1.6

1.8

2

2.2

2.4

2.6

2.8

3

Page 12: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

f(x) = |x|x, x0

1 , x=0

>> f=inline('abs(x)^x')

>> fplot(f,[-10,10]).

Na vizinhança de zero é difícil analisar

o comportamento da função, sendo o gráfico inútil!

Como os valores de f, para x próximo de 0, são muito grandes,

vem que para x<8 os pontos aparecem sobre a recta horizontal y=0

(ordens de grandeza muito diferentes).

SOLUÇÂO: Usar escala logarítmica

Como se notou, o nº de pontos tem que ser suficientemente grande para que os pontos angulosos da função não sejam perceptíveis no gráfico.Mesmo que esse problema seja resolvido, não é certo que possamos, por observação do gráfico, obter uma ideia correcta do comportamento da função.

-10 -8 -6 -4 -2 0 2 4 6 8 100

1

2

3

4

5

6

7

8

9

10x 10

9

Page 13: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

Escala Logarítmica

-10 -8 -6 -4 -2 0 2 4 6 8 1010

-10

10-5

100

105

1010

f(x) = |x|x, x0 1 , x=0

>> f=inline('abs(x)^x')>> [x,y]=fplot(f,[-10,10]);semilogy(x,y)

Este gráfico também não é muito inútil, mesmo tentando obter a derivada de f(x) em x=0 (nesta escala o gráfico de 10x é a recta y=x.

SOLUÇÂO: Usar intervalos , de pequena amplitudo, centrados na origem

>> fplot(f,[-1,1]) -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

0.7

0.8

0.9

1

1.1

1.2

1.3

1.4

1.5

Page 14: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

Mais exemplos

>> p=inline('x^9-18*x^8+144*x^7-672*x^6+2016*x^5-4032*x^4+5376*x^3-4608*x^2+2304*x-512')

>> subplot(2,1,1), fplot(p,[0,4]), subplot(2,1,2), fplot(p,[1.99,2.01])

0 0.5 1 1.5 2 2.5 3 3.5 4-1000

-500

0

500

1000

1.99 1.992 1.994 1.996 1.998 2 2.002 2.004 2.006 2.008 2.01-4

-2

0

2

4x 10

-11

O Gráfico de cima, numa amplitude maior, dá uma melhor ideia do comportamento da função na vizinhança de 2.

Page 15: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

Mais funções no MatLab

>> polar(theta,rho)Produz uma curva em coordenadas polares de ângulo thet, em radianos, e raio polar rho.

>> t=0:pi/2:2*pi; polar(t,5*t)

10

20

30

40

30

210

60

240

90

270

120

300

150

330

180 0

Uma linha poligonal que se aproxima de uma espiral.Uma vez mais, o problema do nº de pontos insuficientes!

10

20

30

40

30

210

60

240

90

270

120

300

150

330

180 0

t=0:pi/16:2*pi; polar(t,5*t)

Page 16: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

Mais funções no MatLab

>> t=0:pi/50:10*pi; plot3(sin(t),cos(t),t)

>> axis square, grid on

Produz uma hélice

-1-0.5

00.5

1

-1

-0.5

0

0.5

10

10

20

30

40

Page 17: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

Um gráfico 3D

>> x=[-5, 5];

>> y=x;

>> [x,y]=meshgrid(x,y);

>> z=x.^2+y.^2;

>> mesh(z)

>> x=[-0.5:0.1: 0.5];

>> y=x;

>> [x,y]=meshgrid(x,y);

>> z=sqrt(1-x.^2+y.^2);

>> mesh(z)

11.2

1.41.6

1.82

1

1.5

249

49.5

50

50.5

51

0

5

10

15

0

5

10

150.8

0.9

1

1.1

1.2

Page 18: Http:// Maria Antónia Forjaz, DMat, UM MatLab Gráficos.

Mais gráfico 3D

>> n = 30;

>> m = 30;

>> for i = 1:m

>> for j = 1:n

>> a(i,j) = sqrt(i+j);

>> end

>> end

>> b = [a+0.5 a-0.5;

>>(a.^2)/5 ((a-0.1).^2)/2];

>> mesh(b)0

20

40

60

0

20

40

600

5

10

15

20

25

30