graficos no MATLAB
FONTES DE PESQUISA:
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)
10 comentários:
Hola my first post whoopee...[url=http://www.designsonline.co.uk/].[/url]
Hello, as you may already noted I'm recent here.
In first steps it's very good if somebody supports you, so hope to meet friendly and helpful people here. Let me know if I can help you.
Thanks and good luck everyone! ;)
hi everybody
great forum lots of lovely people just what i need
hopefully this is just what im looking for looks like i have a lot to read and then a lot to wright
olá, tenho uma duvida a fazer, so que preciso mostrar o grafico.
se poderias, por favor, entre em contato comigo.
patrick.pp@hotmail.com
desde já agradeço.
hello
just signed up and wanted to say hello while I read through the posts
hopefully this is just what im looking for, looks like i have a lot to read.
Yo Brothers
Looks 4 sure like www.blogger.com justmight be a considerable forum for me
I am happy to have stumbled upon it.
I thought you might like this : It IS as bad as you think, and they ARE out to get you. :
Lol!
Anybody like Horse riding
Looking forward to a good long sojourn here!
Idaho,Payette
Just bring about this forum via google. To death to fasten you. I came here to learn your language . thanks all.
Hello there,
This is a inquiry for the webmaster/admin here at mdicas.blogspot.com.
May I use some of the information from your post right above if I give a backlink back to your site?
Thanks,
Peter
Hi there,
I have a question for the webmaster/admin here at mdicas.blogspot.com.
Can I use part of the information from your blog post right above if I give a backlink back to this website?
Thanks,
Harry
Hello there,
I have a inquiry for the webmaster/admin here at mdicas.blogspot.com.
May I use some of the information from this blog post above if I provide a link back to this site?
Thanks,
Oliver
Postar um comentário