graficos no MATLAB
Escrito por meleu em 06 Nov 2008- GRÁFICOS BIDIMENSIONAIS
- Introdução
- GRÁFICOS TRIDIMENSIONAIS
1. Apostila que o professor disponibilizou na xerox.
2. http://mat21.etsii.upm.es/ayudainf/aprendainf/Matlab53/matlab53.pdf
GRÁFICOS BIDIMENSIONAIS
O MATLAB disponibiliza diversos comandos para plotar gráficos bidimensionais. Nesta apresentação iremos abordar as funções mais básicas apresentando-as gradativamente, como um tutorial. Para consultas rápidas o mais adequado é usar o próprio help do MATLAB.
Introdução
Antes de começar vamos rapidamente lembrar de alguns conceitos básicos que serão úteis na construção dos gráficos. A maior parte destes conceitos já foram passados pelos outros colegas.
VARIAVEL = [ LIM_INFERIOR : LIM_SUPERIOR ]
exemplo:
» X = [ 1 : 5 ]
X =
1 2 3 4 5
Também podemos definir o incremento que queremos, usando a seguinte sintaxe:
VARIAVEL = [ LIM_INFERIOR : INCREMENTO : LIM_SUPERIOR ]
exemplo:
» X = [ 0 : 0.2 : 1 ]
X =
0 0.2000 0.4000 0.6000 0.8000 1.0000
Por exemplo, imagine uma matriz linha M = [ 1 2 3 4 5 ] e que nós queremos obter uma matriz Q de maneira que cada elemento de Q seja o seu correspondente em M elevado ao quadrado. Ou seja, se temos a matriz
M = [ 1 2 3 4 5 ]
Então queremos que obter a matriz
Q = [ 1 4 9 16 25 ]
Sabemos que o operador para potenciação é o ^ (circunflexo), só que este operador realiza a potenciação de matrizes, e não é isto que nós queremos.
Para montar uma matriz que desejamos devemos usar o operador .^ (ponto-circunflexo), desta maneira:
» Q = M.^2
Q =
1 4 9 16 25
Os operadores precedidos pelo ponto servem também para realizar operações aritméticas entre os elementos que ocupam as mesmas posições em cada matriz (elemento por elemento). Porém este tipo de operação sai do escopo desta apresentação.
Fazendo Gráficos
Vamos montar um vetor linha para usar como exemplo.
Y = [ 5 3 7 -1 ];
Executar plot(Y) produzirá um gráfico cujo eixo das ordenadas terá os elementos de Y, e o eixo das abscissas terá os índices dos elementos de Y. Portanto o gráfico será vários segmentos de reta ligando os pontos (1,5), (2,3), (3,7) e (4,-1).
Execute agora mesmo no MATLAB e confira!
» Y = [ 5 3 7 -1];
» plot(Y)
O tipo de gráfico que vimos é muito deficiente e normalmente não queremos montar algo deste tipo. Vejamos agora algo mais interessante para nós.
Como primeiro exemplo, vejamos o gráfico da função seno no intervalo [-10;10].
Primeiramente devemos definir os valores que queremos nas abscissas e em seguida os valores das ordenadas.
» x = [-10:0.02:10];
» y = sin(x);
Repare que na verdade montamos primeiramente uma matriz x e a seguir montamos uma matriz y que contem os senos dos valores correspondentes da matriz x. Para plotar o gráfico basta fazermos plot(x,y).
Como segundo exemplo agora nós queremos visualizar o gráfico da função (linguagem matemática tradicional)
f(x) = x3 + 10x2 - x - 8
E queremos ver o comportamento desta função para valores de x no intervalo [-20;10].
Como já foi dito, primeiro definimos o intervalo e depois definimos a função. Desta maneira:
» x = [ -20:10 ];
» f = x.^3 + 10*x.^2 - x - 8;
Agora basta executar plot(x,f).
CURIOSIDADE!
Como já foi dito por outros colegas, um vetor linha pode representar um polinômio. Portanto a função
f(x) = x3 + 10x2 - x - 8
Pode ser descrita através do seguinte vetor no MATLAB:
» funcao = [ 1 10 -1 -8]
Desta forma nós podemos plotar um gráfico com o auxílio da função polyval(), desta maneira:
» funcao = [ 1 10 -1 -8]; % vetor linha que representa um polinomio
» x = [ -10:10 ]; % intervalo que queremos analisar
» y = polyval(funcao,x); % y está recebe valores de x aplicados no polinomio
» plot(x,y) % função sendo plotada
A descrição formal da sintaxe que utilizamos no plot() é a seguinte:
plot(valores_das_abscissas, valores_das_ordenadas)
IMPORTANTE: a função plot() pode fazer muito mais do que é descrito aqui! Isto é apenas uma das muitas maneiras de se usar esta função. Lembre-se: isso é só uma pequena introdução.
A função plot que vimos na verdade desenha vetores. Sempre que queremos visualizar a curva de uma função usando plot(), temos antes que montar vetores com os valores que queremos plotar. Isso acaba sendo uma situação inconveniente, pois se quisermos analisar o comportamento de uma função em diferentes intervalos, temos que ficar montando vários vetores antes de plotar.
Para tornar a análise gráfica de funções mais prática, usamos a função fplot(). A sintaxe da função fplot() que iremos utilizar aqui é a seguinte:
fplot(função, limites)
Onde função é uma cadeia de caracteres que descreve uma função usando x como variável (NOTA: função também pode ser um arquivo *.m com alguma função escrita na linguagem do MATLAB, porém esta utilização está fora do escopo desta breve introdução). O argumento limites é um vetor de dois elementos onde o primeiro é o menor valor e o segundo é o maior valor que x assumirá nesta função, ou seja, é a definição do intervalo.
A seguir um pequeno exemplo:
» fplot('5*x.^3 - 4*x^2 +15*x -5', [ -20 20 ])
OBS.: que a função está escrita entre 'aspas simples'. Isso é importante, pois é assim que o MATLAB representa strings (cadeias de caracteres).
GRÁFICOS TRIDIMENSIONAIS
Apesar das funções com duas variáveis muitas vezes parecerem assustadoras, o seus gráficos geralmente são muito agradáveis de se ver. Vamos então dar uma pequena introdução na construção de gráficos 3D.
A função plot3() é bem parecida com a plot() explicada anteriormente. Só que nós vamos usá-la aqui com a seguinte sintaxe:
plot3(valores_do_x, valores_do_y, valores_do_z)
O exemplo a seguir é bem simples e nos dá uma espiral com 3 voltas
» x = [0 : pi/16 : 6*pi];
» plot3(sin(x), cos(x), x)
Para desenharmos uma perspectiva tridimensional usamos a função mesh(). Mas antes disso usamos a função meshgrid(), que tem a seguinte sintaxe:
» [X,Y] = meshgrid(x,y)
O meshgrid() transforma o domínio especificado pelos vetores x e y em matrizes X e Y, que podem ser usadas para avaliação de funções de duas variáveis e superfícies 3D.
Uma vez que as matrizes X e Y estejam formadas basta usar a função de duas variáveis com estas matrizes.
Por exemplo, imagine que queremos analisar a função:
f(x) = x e-x2 - y2
para valores de x e y no intervalo [-2;2]. Para isso devemos executar os seguintes comandos:
» x = [ -2 : 0.2 : 2 ]; % definindo o intervalo
» y = x;
» [X,Y] = meshgrid(x,y); % definindo as matrizes usadas no cálculo
» Z = X .* exp(-X.^2 -Y.^2); % observe que X e Y são maiúsculos
Desta maneira as matrizes X, Y e Z já estão prontas para nos dar o gráfico em 3 dimensões. Para isso basta usarmos a função mesh(), da seguinte maneira:
» mesh(X,Y,Z)