apostila gnuplot

Embed Size (px)

Citation preview

  • Introduc~ao ao aplicativo Gnuplot

    Universidade Federal do ParaInstituto de Cie^ncias Exatas e Naturais

    Faculdade de MatematicaPatricia de Almeida Viana

    Agosto 2011

    Resumo

    Neste trabalho foi feita uma investigac~ao no aplicativo Gnuplot, um software livrede grande potencial que gera gracos em duas e tre^s dimens~oes e e usado em diversasareas cientcas. Pretende-se mostrar de forma clara como comecar a trabalhar comeste aplicativo no Linux. Como fontes de pesquisa foram consultadas o manual doGnuplot e alguns tutoriais disponveis na internet.

    1 Introduc~ao

    O Gnuplot e um programa usado na criac~ao de gracos de func~oes e dados em duasou tre^s dimens~oes. Ele e bastante versatil e possui uma simplicidade capaz de fazer comque atraves da execuc~ao de apenas um comando de arquivo seja possvel plotar diversosgracos. Este aplicativo oferece ainda ferramentas de analise de dados, como ajuste defunc~oes aos dados experimentais. Alem de exibir gracos na tela, possibilita grava-los emdiversos formatos, como postscript, g e diretamente no formato tex. Ele e altamenteportavel, possuindo vers~oes para os sistemas operacionais linux, windows e unix. Iniciemosum estudo do aplicativo no Linux. Uma documentac~ao detalhada pode ser encontradaatraves do help do programa (assim como suas "man pages"), http://www.gnuplot.info/,http://www.duke.edu/ hpgavin/gnuplot.html ou atraves de servicos de busca na internet.

    2 Primeiro Contato

    O primeiro passo e executar o programa Gnuplot, para isso basta digitar o comandognuplot em alguma janela do terminal e pressionar a tecla [enter]. Feito isto, aparecer~ao al-gumas informac~oes na tela, como a vers~ao do programa que esta sendo executado, os nomesdos criadores deste aplicativo bem como um site na internet onde podem ser encontradasmaiores informac~oes a respeito deste software.

    1

  • Figura 1:

    A ultima linha deste terminal deve ser a linha de comando do gnuplot, a qual serautilizada como interface entre o usuario e o programa; esta linha de comando e da seguinteforma:

    gnuplot >

    A partir dessa linha de comando, digitaremos diversas instruc~oes que o Gnuplot exe-cutara gerando o graco desejado.

    E se algum momento desejarmos nalizar este programa e voltar para o terminal, bastadigitar o comando quit (ou simplesmente a letra \q") e, pressionar a tecla [enter].

    3 Sintaxe

    Existe um conjunto de regras que ditam a forma como se escrevem as express~oes. Umadelas e a forma como se escrevem as pote^ncias (x 2) = x2.

    Outra regra importante e que e obrigatorio usar o asteristico (*) em todas as operac~oesde multiplicac~ao, isto quer dizer que n~ao podemos escrever, por exemplo, plot 2x, temosque escrever plot 2 x.

    A divis~ao faz-se com uma barra (/), a soma e a multiplicac~ao fazem-se com os sinais docostume (+ e ).

    Alem de gracos o Gnuplot faz calculos, e e isso que faz o comando print. Porem, uma

    2

  • regra importante no Gnuplot, e que um numero escrito sem casa decimal e interpretadocomo um numero inteiro. Por exemplo, se pedirmos para o Gnuplot calcular a divis~ao 1/2, a sua resposta sera 0. Veja:

    gnuplot> print 1/20Isso ocorreu pois a divis~ao de um numero inteiro por um numero inteiro, e um inteiro.

    Se quisermos obter 0.5 devemos digitar 1.0/2 ou 1/2.0:gnuplot> print 1/2.00.5O que o comando print faz e mostrar valores calculados, ou seja, podemos usa-lo como

    uma 'calculadora', para efetuar as operac~oes fundamentais, fatorial, valores de seno, coseno,tangente, exponencial, o valor de uma func~ao em um ponto, etc.

    4 Comandos para Plotar Gracos em 2D e 3D

    Para plotarmos gracos em duas ou tre^s dimens~oes usamos respectivamente, os coman-dos plot e splot. Estes comandos sozinhos n~ao fazem absolutamente nada; para que elespossam gerar qualquer tipo de graco devemos oferecer a eles algumas informac~oes.

    5 Comando Plot

    O comando \plot" ja mencionado anteriormente, e utilizado para elaborar gracos emduas dimens~oes. Para isso, ele precisa receber informac~oes como: a func~ao ou nome doarquivo que contem o conjunto de dados a serem plotados, se e um histograma, se eledeve utilizar pontos, linhas ou ambos para a representac~ao do graco, tipo de ponto a serutilizado, cor destes pontos ou linhas, etc.

    A entrada basica deste comando e a seguinte:gnuplot > plot with Sendo:< limites >: dene que o graco sera plotado entre dois valores de x e entre dois valores

    de y, ou seja, dominio e imagem, porem se esses limites ou um deles n~ao for especicado oprograma utilizara os que achar conveniente.

    < func~ao ou nome do arquivo >: dene qual ou quais func~oes e/ou conjuntos dedados ser~ao plotados. Para plotar mais de uma func~ao ou conjunto de dados utilizandoapenas um comando plot, basta separar cada func~ao ou conjunto de dados por vrgulas,como no exemplo a seguir:

    gnuplot > plot x**2, G(x), \dados.dat"Neste exemplo sera gerado um graco da func~ao x2 e neste mesmo graco sera plotada

    a func~ao G(x), a qual deve ter sido denida anteriormente e, o graco do conjunto de dadoscontido no arquivo \dados:dat1".

    < estilos >: dene a apare^ncia do graco, ou seja, se este graco sera plotado comouma linha, como pontos, como linha e pontos alem de denir qual sera a cor utilizada. Porexemplo:

    gnuplot > plot x**2 with points 2 2

    3

  • Neste exemplo sera gerado um graco da func~ao x2, sendo que ela sera representada porpontos (with points) na cor numero 2 (with points 2) ou seja, cor ciano e, os pontos ser~aorepresentados pelo sinal de adic~ao (\+") (with points 2 2).

    Existem diversos tipos de pontos e cores, basta mudar o numero de [-1,34] que a cor ouo tipo de ponto mudara.

    6 Comando Splot

    Este comando e extremamente semelhante ao plot, porem usa-se para plotar gracosem tre^s dimens~oes, sendo assim voce^ deve especcar func~oes de tre^s variaveis ou ter umarquivo de dados com tre^s colunas no mnimo.

    O comando splot usa as mesmas opc~oes do comando plot, porem ele trabalha sempreou com func~oes de duas variavies, ou tabelas com no mnimo tre^s colunas.

    7 Comandos basicos

    No Gnuplot podemos denir os tipos de pontos e linhas. Para visualizar as cores, bemcomo os formatos dos pontos, basta ativar na linha de comando, a palavra test, comomostrado abaixo:

    gnuplot > test

    A partir desse comando aparecera a gura 2.

    4

  • Figura 2: Tipos de pontos e cores disponveis no gnuplot

    Outra coisa muito importante que n~ao podemos deixar de falar e sobre o comando help,basta digita-lo na linha de comando do Gnuplot, que ele lhe dara uma ajuda de tudo o queele pode fazer.

    7.1 Outras denic~oes do programa

    No Gnuplot ha uma serie de comandos para complementar informac~oes a respeito dograco de uma func~ao, por exemplo para modicar as escalas de visualizac~ao, realizardesenhos de varios gracos no mesmo sistema de eixos, colocar ttulo em um graco, colocaralgum comentario nos eixos coordenados, entre outros. Passamos ent~ao uma sintaxe destescomandos.

    Ttulo:gnuplot > set title "texto"

    Esta linha de comando da um ttulo ao graco.

    Tipo e Espessura da linha:Atraves da linha de comando, usando apos plot f(x) os seguintes comandos: linestylen altera o estilo da linha, linetype n altera o tipo de linha. e linewidth n altera aespessura da linha.

    5

  • Nomear eixos:gnuplot > set xlabel "Eixo x"

    Esta linha de comando nomeia o eixo x no graco da func~ao.

    gnuplot > set ylabel "Eixo y"

    Esta linha de comando nomeia o eixo y no graco da func~ao.

    gnuplot > set zlabel "Eixo z"

    Esta linha de comando nomeia o eixo z no graco da func~ao. O eixo z so aparecequando estamos trabalhando no R3 , com o comando splot.

    Denir para^metros de escala:gnuplot > set xrange [ninf : nsup]

    Com esta linha de comando podemos determinar o intervalo de variac~ao (domnio)da variavel x no graco. O intervalo deve ser escrito entre colchetes e os numerosseparados por dois pontos [ : ].

    gnuplot > set yrange [ninf : nsup]

    Esta linha de comando dene o intervalo de variac~ao possvel para os valores da func~ao(contradomnio) no caso de func~oes de uma variavel. E no caso de func~oes de duasvariaveis, denira o domnio da variavel y.

    gnuplot > set zrange [ninf : nsup]

    No caso de func~oes de duas variaveis, esta linha de comando dene o contradomnioda func~ao.

    Observac~ao: Uma vez modicada a faixa de variac~ao de uma variavel, esta modicac~aopermanecera valida para todos os gracos feitos posteriormente.

    Denir valores dos eixos:Para denir os valores que aparecer~ao nos eixos podemos usar o comando set xtics,set ytics e set ztics. A sintaxe do comando e:

    gnuplot > set xtics xinicial,incremento,xfinal

    onde xinicial e xnal s~ao opcionais.

    Exemplo:

    gnuplot > set xtics -2,1,3

    No exemplo acima, aparecer~ao os valores -2, -1, 0, 1, 2, 3 no eixo x, caso estes valoresestejam dentro do limite de variac~ao para a variavel x denido no comando set xrange.Os comandos set ytics e set ztics s~ao analogos ao set xtics.

    Mostrar eixos x e y:gnuplot > set zeroaxis

    Com este comando e exibido o sistema de eixos e quando possvel a sua origem,tornando o graco mais completo e facil de entender. E recomendado colocar estecomando logo no incio para que aparecam os eixos em todos os demais gracos.

    6

  • Mostrar grades:gnuplot > set grid

    Mostra as grades nos eixos x e y. Ou ainda, se quizermos desativar a opc~ao gradebasta utilizar o comando unset grid.

    Efeito de Solido:gnuplot > set hidden3d

    O comando acima e utilizado no modo 3D para \esconder\ o que ca "atras" dasuperfcie.

    Resoluc~ao do Graco:Para tracar o graco de uma func~ao, o Gnuplot escolhe alguns pontos e calcula o valorda func~ao nestes pontos. A quantidade padr~ao de pontos escolhidos no eixo x paragracos 2D e 100. No caso de gracos tridimensionais a quantidade padr~ao de pontostambem e de 100, sendo tomados 10 pontos no eixo x e no eixo y. Esta quantidadepode ser alterada atraves dos comandos set samples n para gracos no plano e setisosamples k,m para gracos no espaco, sendo que n e o numero de pontos no eixox e k, m correspondem ao numero de pontos nos eixos x e y, respectivamente.

    Bordas do graco:O comando set border controla a exibic~ao das bordas do graco gerado com oscomandos plot e splot. Para excluir todo o contorno da janela graca utilizamoso comando unset border. Para incluir uma das bordas utilizamos o comando setborder n, sendo n o numero associado a borda desejada. Para colocar duas ou maisbordas somamos os respectivos numeros e utilizamos set border k, onde k e a somados numeros associados as bordas.

    Outra opc~ao e o comando reset, que faz com que todas as modicac~oes de formatac~aosejam canceladas de uma vez so.

    Diretorio: Para navegarmos pelo diretorio:gnuplot > pwd

    Isto dara a sua localizac~ao atual. Se caso quizermos modicar o diretorio basta digitaro comando:

    gnuplot > cd ``novo diretorio''

    Salvando arquivos:Para salrmos um arquivo, devemos direcionar a sada padr~ao para um arquivo, comoo exmplo abaixo:

    O formato postscript "eps", e o formato original do LATEX. Para exportar o gracodo Gnuplot para o LATEXbasta utilizar o comando:

    gnuplot > set terminal postscript eps color

    gnuplot > set output ''arquivo.eps''

    gnuplot > replot

    7

  • Para usarmos ttulos acentuados devemos usar o seguinte comando:set encoding iso 8859 1

    Exemplo: set title "Taxa de transmissn3431 o'Resultando o ttulo \Taxa de transmiss~ao"

    7.2 Modicac~oes na posic~ao das legendas

    Podem ser realizadas atraves dos comandos: set key left bottom, set key rightbottom, set key left top e set key right top.

    -1

    -0.5

    0

    0.5

    1

    0 1 2 3 4 5 6

    Seno

    Figura 3: set key left bottom (Legenda no canto inferior esquerdo)

    -1

    -0.5

    0

    0.5

    1

    0 1 2 3 4 5 6

    Seno

    Figura 4: set key righ bottom (canto inferior direito)

    1O codigo desses acentos pode ser obtido no site http://www.ic.unicamp.br/ stol/EXPORT/www/ISO-8859-1-Encoding.html

    8

  • -1

    -0.5

    0

    0.5

    1

    0 1 2 3 4 5 6

    Seno

    Figura 5: set key left top (canto superior esquerdo)

    -1

    -0.5

    0

    0.5

    1

    0 1 2 3 4 5 6

    Seno

    Figura 6: set key righ top (canto superior direito)

    9

  • Para construir gracos a partir de um conjunto de dados podemos utilizar plot ou splot,dependendo das dimens~oes desejadas.

    gnuplot > plot "dados.txt"

    Ja os gracos 3D (Ver gura 7) s~ao construdos a partir do comando splot. Como, porexemplo:

    logp

    x2 + y2

    gnuplot > splot log(sqrt(x**2+y**2))

    -10-5

    0 5

    10-10

    -5

    0

    5

    10

    0 0.5

    1 1.5

    2 2.5

    3

    log(sqrt(x**2+y**2))

    Figura 7: Graco 3d

    10

  • As vezes e interessante construir gracos mais complexos, usando duas ou mais func~oes,podemos apenas separar as func~oes por vrgulas, pode-se usar ',n'(vrgula e barra invertida)como terminador de linha e denir a func~ao desejada na linha seguinte ou, outra possibil-idade e usar a opc~ao rep (de replot) a cada func~ao adicional, onde s~ao apresentadas asfunc~oes simultaneamente.

    Figura 8 gnuplot > plot sin(x),cos(x)ou apenas usar o comando replotgnuplot > plot sin(x)

    gnuplot > replot cos(x)

    Podemos tambem usar ,n para continuar na outra linhagnuplot > plot sin(x), ncos(x)

    Figura 9

    8>>>>>>>:gnuplot > set grid

    gnuplot > set key boxgnuplot > plot sin(x); n

    cos(x=3); nx14 1

    ou

    8>>>>>>>:gnuplot > set grid

    gnuplot > set key boxgnuplot > plot sin(x)gnuplot > rep cos(x=3)gnuplot > rep x

    14 1

    O comando: set key box inseri uma caixa na legenda.

    -1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    -10 -5 0 5 10

    sin(x)cos(x)

    Figura 8:

    -2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    -10 -5 0 5 10

    sin(x)cos(x/3)

    x/14-1

    Figura 9:

    8 Algumas denic~oes a serem utilizadas com o argu-

    mento with

    Voce^ pode ver que tipos de gracos o Gnuplot pode desenhar. Para especcar o estilode graco temos os comandos: lines, points, linespoints e impulses.

    11

  • -1

    -0.5

    0

    0.5

    1

    0 1 2 3 4 5 6

    Seno

    Figura 10: lines: Utiliza apenas uma linha que liga todos os pontos. Comando: plotsin(x) with lines.

    -1

    -0.5

    0

    0.5

    1

    0 1 2 3 4 5 6

    Seno

    Figura 11: points: utiliza pontos com formatos diferentes como quadrados, sinais de mais,diamantes, asteristicos,... Comando: plot sin(x) with points.

    12

  • -1

    -0.5

    0

    0.5

    1

    0 1 2 3 4 5 6

    Seno

    Figura 12: linespoints: e a combinac~ao dos dois tens anteriores; utiliza uma linha que ligaos pontos e alem disso mostra os pontos como no tem anterior. Comando: plot sin(x)with linespoints.

    -1

    -0.5

    0

    0.5

    1

    0 1 2 3 4 5 6

    Seno

    Figura 13: impulses: O graco aparece \rachurado". Comando: plot sin(x) with im-pulses.

    9 Redirecionamento de Output

    Quando estamos trabalhando com o Gnuplot, a sada padr~ao do graco e para o dis-play, ou seja, ele desenha o graco em um nova janela e a exibe no monitor. Na maiorparte dos casos, desejamos gerar gracos em arquivos que possamos incluir em algum tra-balho, como relatorios. Para isto o Gnuplot permite o redirecionamento de output paraum arquivo, ou seja, permite gerar o graco em um arquivo cujo formato e reconhecido poroutros programas, como o LATEX.

    Para isto, devemos especcar o tipo de terminal que sera utilizado, uma lista podeser obtida a partir do comando dentro do Gnuplot.

    gnuplot > ?term (Figura:14)

    13

  • Figura 14:

    10 Trabalhando a Matematica no Gnuplot

    Vamos tracar o graco da func~ao polinomial 9x3 + x2

    2 7x

    8+ 4. Observe que denimos

    o nome da func~ao no caso, f(x) e em seguida plotamos a mesma pelo seu nome.gnuplot>f(x)= 9*x**3+0.5*x**2-7.0/8.0*x+4gnuplot>plot f(x)

    14

  • -10000

    -8000

    -6000

    -4000

    -2000

    0

    2000

    4000

    6000

    8000

    10000

    -10 -5 0 5 10

    f(x)

    Figura 15: Func~ao Polinomial

    Agora vamos xar o domio [1 : 1]x[1 : 1] e plotar tre^s superfcies sem gradesou marcas, com estilos diferentes. Com os comando set xrange e yrange, podemosdeterminar o intervalo de variac~ao (domnio) das variaveis x e y no graco. O intervalodeve ser escrito entre colchetes e os numeros separados por dois pontos [ : ]. Assim:

    xy; x2 + y3 e x3 + y2:

    gnuplot>set xrange [-1:1]gnuplot>set yrange [-1:1]gnuplot>splot x*y with lines, x**2*y**3 with linespoints, x**3*y*2 with pointsObtemos a gura 16.

    15

  • -1-0.5

    0 0.5

    1-1

    -0.5

    0

    0.5

    1

    -2.5-2

    -1.5-1

    -0.5 0

    0.5 1

    1.5 2

    2.5

    x*yx**2*y**3x**3*y*2

    Figura 16:

    Para tracar o graco de uma func~ao, o Gnuplot escolhe alguns pontos e calcula o valorda func~ao nestes pontos. A quantidade padr~ao de pontos escolhidos no eixo x para gracos2D e 100. No caso de gracos tridimensionais a quantidade padr~ao de pontos tambem ede 100, sendo tomados 10 pontos no eixo x e no eixo y. Esta quantidade pode ser alteradaatraves dos comandos set samples n para gracos no plano e set isosamples k,m paragracos no espaco, sendo que n e o numero de pontos no eixo x e k, m correspondem aonumero de pontos nos eixos x e y,respectivamente.

    Uma vericac~ao matematica, s~ao para obter as curvas de nveis.Para obter as curvas de nvel de z = xy, utilizamos o set contour para curva de nvel

    com altura dada, melhoramos a malha graca com samples e isosamples, para nomear oseixos x, y e z usamos o xlabel, ylabel e zlabel, respectivamente. Observe que aparecer~aosuas repectivas curvas de nvel no plano.

    gnuplot>set contourgnuplot>set samples 20gnuplot>set isosamples 21gnuplot>set title "Curvas de nvel"gnuplot>splot x*y

    16

  • -1-0.5

    0 0.5

    1 -1

    -0.5

    0

    0.5

    1

    -1

    -0.5

    0

    0.5

    1

    Curvas de nivel

    x*y 1 0.5 0

    -0.5

    Figura 17: Curva de nvel z = xy

    Agora as curvas de nvel podem aparecer na superfcie e no plano, fazemos isso comos comandos set contour surface onde aparecera a curva de nvel na superfcie e o setcontour both que mostra a curva de nvel no plano.

    x2 y2

    gnuplot>set contour surfacegnuplot>set contour bothgnuplot>splot x**2-y**2

    -1-0.5

    0 0.5

    1 -1

    -0.5

    0

    0.5

    1

    -1

    -0.5

    0

    0.5

    1

    Curvas de nvel

    x**2-y**2 1 0.5 0

    -0.5

    Figura 18:

    17

  • Uma func~ao denida por partes tem a forma:

    f(x) =

    sen(x) se x < 0;5 x se x > 0:

    onde cada parte e associada a um intervalo. A notac~ao 1/0 usada abaixo representa oinnito no Gnuplot.

    set samples 300

    f(x) = x < 0 ? sin(x) : x > 0 ? 5-x : 1/0plot f(x)

    -5

    -4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    5

    -10 -5 0 5 10

    f(x)

    Figura 19: Func~ao denida por partes.

    18

  • Curvas parametrizadas no espaco tridimensional.

    Para plotar curvas parametrizadas no espaco R3, da forma r(t) = (x(t); y(t); z(t)),usaremos um truque que n~ao esta no Help do Gnuplot, mas que e similar a plotagem deuma superfcie parametrizada. Desse modo, deniremos o padr~ao como:

    gnuplot> set parametricPara plotar a curva helicoidal r(t) = (cos(t); sen(t); t) com t no domnio [0; 4], denire-

    mos esse dominio com set urange, substituirmos o para^metro t pelo para^metro u, que e opadr~ao para plotar superfcies parametrizadas.

    gnuplot>set urange [0:4*pi]gnuplot>splot cos(u), sin(u), u

    -1-0.8

    -0.6-0.4

    -0.2 0

    0.2 0.4

    0.6 0.8

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

    cos(u), sin(u), u

    Figura 20:

    19

  • A express~ao parametrica de um crculo e:x = sen(t)y = cos(t);

    com 0 < t < 2:

    gnuplot > set parametricgnuplot > set xrange [-1:1]gnuplot > set yrange [-1:1]gnuplot > plot [0:2*pi] sin(t),cos(t) linewidth 4

    -1

    -0.5

    0

    0.5

    1

    -1 -0.5 0 0.5 1

    sin(t), cos(t)

    20

  • Exemplo 10.1 Agora observemos r(t) = 1 + cos(t), a chamada cardioide.gnuplot > set parametricgnuplot > r(t) = 1+cos(t)gnuplot > plot [0:2*pi] r(t)*cos(t),r(t)*sin(t)

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    -0.5 0 0.5 1 1.5 2

    r(t)*cos(t), r(t)*sin(t)

    21

  • Derivadas

    Dada uma func~ao f derivavel no ponto a 2 Dom(f ), sabemos que a reta tangente aograco de f no ponto (a; f(a)) tem a seguinte equac~ao:

    y y0 = m(x a)onde y0 = f(a) e m = f(a). Assim, podemos escrever a equac~ao da reta tangente ao

    graco de f no ponto (a; f(a)) da seguinte forma:g(x) = f(a) + f(a):(x a)Usando o Gnuplot para visualizar o graco de uma func~ao e a reta tangente num ponto

    (a; f(a)) pertencente ao graco. Vamos tomar a func~ao f(x) = x2+2x. Ent~ao sua derivadae f 0(x) = 2x+2. Para visualizar a reta tangente ao graco de f no ponto (2; f(2)), passemosao Gnuplot os seguintes comandos:

    gnuplot > resetgnuplot > f(x)=x**2+2*xgnuplot > df(x)=2*x+2gnuplot > g(x)=f(2)+df(2)*(x-2)gnuplot > plot f(x), g(x)

    -80

    -60

    -40

    -20

    0

    20

    40

    60

    80

    100

    120

    -10 -5 0 5 10

    f(x)g(x)

    22

  • Superfcies

    A visualizac~ao de superfcies e analoga a visualizac~ao de curvas planas. Neste caso ocomando basico e splot.

    Na gura 21 e mostrada uma superfcie dada pela func~ao f(x; y) = x+y, que tem comograco um plano. Basta considerar f(x; y) = z, temos:

    x+ y z = 0Para constatar com o Gnuplot, facamos:gnuplot > f(x,y)=x+ygnuplot > splot f(x,y)

    -10-5

    0 5

    10-10

    -5

    0

    5

    10

    -20-15-10-5 0 5

    10 15 20

    f(x,y)

    Figura 21:

    Agora podemos observar outras superfcies com comandos diferentes.

    Exemplo 10.2 (Paraboloide) O graco da func~ao f(x; y) = x2 + y2 o que chamamos deparaboloide. Com o Gnuplot:

    O comando set isosample 20,20 e para melhorar a malha, deixa -la mais fechada. Ja ocomando set hidden3d e para diferenciar as faces da superfcie.

    gnuplot > set isosample 20,20gnuplot > set hidden3dgnuplot > f(x,y)=x**2+y**2gnuplot > splot f(x,y),0

    23

  • f(x,y)0

    -10-5

    0 5

    10-10

    -5

    0

    5

    10

    0

    50

    100

    150

    200

    Figura 22:

    Se considerarmos a func~ao f(x; y) = x2 + (y 5)2 teremos uma pequena modicac~aono ponto mais baixo do paraboloide. Antes, o \bico" do paraboloide era o ponto (0; 0; 0) noplano XY , agora sera o ponto (0; 5; 0).

    gnuplot > f(x,y),5

    f(x,y)5

    -10-5

    0 5

    10-10

    -5

    0

    5

    10

    0 20 40 60 80

    100 120 140 160 180 200

    Figura 23:

    Agora, considerando a func~ao f(x; y) = x2+ y2+50, o bico do paraboloide sera o ponto(0; 0; 50). Basta digitar o comando

    gnuplot > splot f(x,y),50

    24

  • f(x,y)50

    -10-5

    0 5

    10-10

    -5

    0

    5

    10

    0 20 40 60 80

    100 120 140 160 180 200

    Figura 24:

    Exemplo 10.3 (Sela) Considere a func~ao f(x; y) = x2 y2 e passemos ao Gnuplot osseguintes comandos:

    gnuplot > set isosample 20,20gnuplot > set hidden3dgnuplot > f(x,y)=x**2-y**2gnuplot > splot f(x,y)

    f(x,y)

    -10-5

    0 5

    10-10

    -5

    0

    5

    10

    -100-80-60-40-20

    0 20 40 60 80

    100

    Figura 25:

    25

  • Observe que cortes paralelos ao plano XZ nos d~ao parabolas com concavidade para cima,pois isso equivale a y constante em f (x, y), ou seja,

    f(x; y) = f(x; k) = x2 + kCortes paralelos ao plano Y Z nos d~ao parabolas com concavidade para baixo, uma vez

    que nesse caso, x e constante e temos:f(x; y) = f(k; y) = k y2Para ver isso, passe ao Gnuplot os comandos:gnuplot > splot f(x,2)gnuplot > splot f(3,y)

    Exemplo 10.4 (Chapeu de Cowboy) E a apare^ncia do graco da func~ao:

    f(x; y) =sen(

    px2+y2)p

    x2+y2

    Que para o Gnuplot passaremos:gnuplot > set isosample 40,20gnuplot > set hidden3dgnuplot > set zrange[-0.5:1.5]gnuplot > f(x,y)=(sin(sqrt(x**2+y**2)))/(sqrt(x**2+y**2))gnuplot > splot f(x,y)

    f(x,y)

    -10-5

    0 5

    10-10

    -5

    0

    5

    10

    -0.5

    0

    0.5

    1

    1.5

    Figura 26:

    26

  • Exemplo 10.5 (Caixa de ovos) O graco da func~ao f(x; y) = senx+cos x lembra bastanteesse objeto:

    gnuplot > set isosample 60,20gnuplot > set hidden3dgnuplot > set zrange[-2:2]gnuplot > f(x,y)=sin(x)+cos(x)gnuplot > splot f(x,y)

    f(x,y)

    -10-5

    0 5

    10-10

    -5

    0

    5

    10

    -2-1.5

    -1-0.5

    0 0.5

    1 1.5

    2

    Figura 27:

    27

  • 11 Superfcies Parametrizadas

    Esfera Parametrizada

    (cos(u)cos(v); 2sen(u)cos(v); 3sen(v))

    gnuplot>set parametricgnuplot> set zeroaxisgnuplot > set key boxgnuplot > splot cos(u)*cos(v),2*sin(u)*cos(v),3*sin(v)gnuplot > set contour basegnuplot > set grid xtics ytics ztics

    -1-0.8

    -0.6-0.4

    -0.2 0

    0.2 0.4

    0.6 0.8

    1-2-1.5

    -1-0.5

    0 0.5

    1 1.5

    2

    -3-2-1 0 1 2 3

    cos(u)*cos(v), 2*sin(u)*cos(v), 3*sin(v) 2 1 0 -1 -2

    Se quizermos vericar somente as curvas de nvel da superfcie, adicionamos os seguintescomandos:

    gnuplot > unset surface Este comando esconde a superfciegnuplot > set view 0,0 Este comando mostra como queremos visualizar o graco.

    28

  • -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

    -3-2-1 0 1 2 3

    2 1 0 -1 -2

    Cilindro Circular Reto

    Uma observac~ao diferente nesta gura e em relac~ao ao comando unset tics e unsetborder, com estes comando escondemos os eixos e observamos somente a gura..

    (cos(u); sen(u); v)

    gnuplot>set parametricgnuplot>set urange [0:2*pi]gnuplot>set hidden3dgnuplot> unset bordergnuplot> unset ticsgnuplot>set vrange [-4:4]gnuplot>splot cos(u), sin(u), v

    cos(u), sin(u), v

    29

  • Toro Parametrizado

    Uma outra forma de visualizac~ao de gracos e o efeito usado com o with, usamdo ocomando with pm3d, e algo como uma distribuic~ao de densidade da cor, o que signicaque cada pedaco de superfcie colorida e mostrada na parte infeior do graco; e ainda secolocarmos logo apos do plot ou splot junto com a func~ao que queremos plotar o comandotitle 'Nome' isto modicara o que aparece na legenda, ou seja, e uma edic~ao do quequeremos nomear na legenda, observemos o seguinte efeito:

    ((1 0:2cos(v))cos(u); (1 0:2cos(v))sen(u); 0:2sen(v))gnuplot>set parametricgnuplot>splot (1-0.2*cos(v))*cos(u), (1-0.2*cos(v))*sin(u), 0.2*sin(v) with

    pm3d title 'Toro Parametrizado'

    Toro Parametrizado

    30

  • Prisma Hexagonal

    (cos(v)3cos(u)3; sen(v)3cos(u)3; sen(u)3)

    gnuplot>set parametricgnuplot>unset bordergnuplot>unset ticsgnuplot>set isosamples 100,20gnuplot>splot cos(v)**3*cos(u)**3, sin(v)**3*cos(u)**3, sin(u)**3

    Prisma Hexagonal

    cos(v)**3*cos(u)**3, sin(v)**3*cos(u)**3, sin(u)**3

    Figura 28:

    31

  • Helice Parametrizada

    ((1 0:1cos(v))cos(u); (1 0:1cos(v))sen(u); 0:1(sin(v) + u=1:7 10))gnuplot>set parametricgnuplot>set isosamples 100,20gnuplot>set urange [0:10*pi]gnuplot>set vrange [0:2*pi]gnuplot>unset bordergnuplot>unset ticsgnuplot>set hidden3dgnuplot>splot (1-0.1*cos(v))*cos(u),(1-0.1*cos(v))*sin(u),0.1*(sin(v)+u/1.7-10)

    Helice parametrizada

    (1-0.1*cos(v))*cos(u), (1-0.1*cos(v))*sin(u), 0.1*(sin(v)+u/1.7-10)

    Figura 29:

    32

  • Concha Parametrizada

    cos(u):u:

    1 + cos(v)

    2; sen(v)

    u

    2; sen(u):u:

    1 + cos(v)

    2

    gnuplot>set isosamples 40,20gnuplot>set urange [0:2*pi]gnuplot>set vrange [0:2*pi]gnuplot>set zrange [-3:1.5]gnuplot>splot cos(u)*u*(1+cos(v)/2), sin(v)*u/2, sin(u)*u*(1+cos(v)/2)gnuplot> set autoscale z

    Concha Parametrizada

    cos(u)*u*(1+cos(v)/2), sin(v)*u/2, sin(u)*u*(1+cos(v)/2)

    Figura 30:

    33

  • Dois Toros Parametrizados Entrelacados

    (cos(u) + :5cos(u)cos(v); sen(u) + :5sen(u)cos(v); :5sen(v); 1 + cos(u)

    +:5cos(u)cos(v); :5sen(v); sen(u) + :5sen(u)cos(v))

    gnuplot>set urange [-pi:pi]gnuplot>set vrange [-pi:pi]gnuplot>set isosamples 50,20gnuplot>splot cos(u)+.5*cos(u)*cos(v),sin(u)+.5*sin(u)*cos(v),.5*sin(v)

    with lines, 1+cos(u)+.5*cos(u)*cos(v),.5*sin(v),sin(u)+.5*sin(u)*cos(v) with

    lines

    Toros

    cos(u)+.5*cos(u)*cos(v), sin(u)+.5*sin(u)*cos(v), .5*sin(v)1+cos(u)+.5*cos(u)*cos(v), .5*sin(v), sin(u)+.5*sin(u)*cos(v)

    Figura 31:

    34

  • Intersec~ao de Dois Cilindros

    (u;p4 u2; v; u;

    p4 u2; v;

    p4 v2; u; v;

    p4 v2; u; v)

    Comandos:set parametricset hidden3dset isosamples 30,30set urange [-2:2]set vrange [-2:2]set zrange [-2:2]unset ticssplot u, sqrt(4-u**2), v,u, -sqrt(4-u**2), v,sqrt(4-v**2), u, v,-sqrt(4-v**2), u, v

    u, sqrt(4-u**2), vu, -sqrt(4-u**2), vsqrt(4-v**2), u, v

    -sqrt(4-v**2), u, v

    Figura 32:

    12 Editando Arquivos com Comandos do Gnuplot

    Observamos que ate agora, todas as instruc~oes foram feitas diretamente na linha decomando. Para que n~ao seja necessario digitarmos todos os comandos a cada novo graco aser feito, e possvel criarmos um arquivo em um editor de texto, contendo todas as instruc~oespara a construc~ao do graco.

    Depois de criado, o arquivo e lido e interpretado pelo Gnuplot atraves do comando load,cuja sintaxe e dada a seguir:

    gnuplot> load "nome do arquivo".

    35

  • 13 Criar arquivo no bloco de notas

    Apos digitarmos todos os comandos necessarios para tracar o graco desejado, salvamoso arquivo numa pasta de trabalho. Todos os comandos utilizados,podem ser colocados emum mesmo arquivo (exe1.plt) da seguinte maneira:

    ## arquivo exe1.plt# comandos para realizar o graco da func~ao cos(2x)#set title "teste1-cosseno"set xrange [0:2*pi]set yrange [-1.2:1.2]set xlabel "eixo x"set ylabel "eixo y"plot cos(2*x)

    Cosseno

    cos(2x)

    Figura 33: Figura feita com Gnuplot a partir da leitura de dados.

    Observac~ao: Se utilizarmos o sinal # (sustenido) no incio de uma linha do arquivo, oGnuplot n~ao ira ler esta linha, ent~ao usamos # para fazer comentarios.

    14 Visualizando o Modo Multiplot

    O modo multiplot permite a visualizac~ao de varios gracos. Observe este graco e seuscript:

    set multiplot

    set size 1,0.5;

    set origin 0.0,0.5; plot sin(x);

    set origin 0.0,0.0; plot cos(x)

    unset multiplot

    36

  • Figura 34:

    Veja a func~ao de cada comando: Com o comando set multiplot passamos para o modo'multiplot', set origin xa a origem do graco, set size, xa o tamanho do graco eunset multiplot, sai do modo 'multiplot'.

    15 Aplicac~oes Cientcas

    O aplicativo gnuplot e destinado a visualizac~ao de gracos e superfcies, uteis em aplicac~oescientcas nas areas de fsica, estatstica, engenharias (cartograca, meca^nica, eletrica, ...).Vejamos a seguir algumas dessas aplicac~oes.

    Aplicac~ao na Estatstica

    O graco estatstico e uma forma de apresentac~ao dos dados estatisticos, cujo objetivo eo de produzir no investigador ou no publico em geral, uma impress~ao mais rapida e viva dofeno^meno em estudo. Os estatsticos usam o Gnuplot com o objetivo de obter diversicac~oesgracas na forma de linhas, barras...

    Vejamos uma aplicac~ao classica na estatstica, o graco de barras:

    37

  • 0

    50000

    100000

    150000

    200000

    250000

    300000

    1891-1900

    1901-1910

    1911-1920

    1921-1930

    1931-1940

    1941-1950

    1951-1960

    1961-1970

    US immigration from Northern EuropePlot selected data columns as histogram of clustered boxes

    DenmarkNetherlands

    NorwaySweden

    Figura 35:

    Comandos:Para exibir este graco, criamos um arquivo de dados 'immigration.dat', o qual tera

    todas as informac~oes das investiga~oes feita.

    Em seguida passamos os seguintes comandos ao Gnuplot:set title "US immigration from Northern Europe nnPlot selected data columns as his-

    togram of clustered boxes"set auto xset yrange [0:300000]set style data histogramset style histogram cluster gap 1set style ll solid border -1set boxwidth 0.9set xtic rotate by -45set bmargin 10plot 'immigration.dat' using 6:xtic(1) ti col, " u 12 ti col, " u 13 ti col, " u 14 ti col

    38

  • Aplicac~ao na Engenharia Cartograca

    Uma interessante aplicac~ao do Gnuplot e a visualizac~ao de Projec~oes Cartogracas,podendo ser util no aprendizado de Cartograa Matematica, uma vez que o aluno pode escr-ever as equac~oes das projec~oes, modicar o paralelo padr~ao, modicar o ponto de tange^ncia,modicar a escala, calcular o fator de escala, visualizar a projec~ao, dentre outras possibili-dades.

    A seguir observemos algumas guras cartogracas. Estas guras podem ser encontradasna pagina ocial do Gnuplot (www.gnuplot.info/).

    -100

    -80

    -60

    -40

    -20

    0

    20

    40

    60

    80

    100

    -200 -150 -100 -50 0 50 100 150 200

    world.datworld.cor

    Figura 36:

    -1-0.8

    -0.6-0.4

    -0.2 0

    0.2 0.4

    0.6 0.8

    1-1-0.8-0.6-0.4-0.2 0

    0.2 0.4 0.6 0.8 1-1

    -0.5

    0

    0.5

    1

    Versao 3D usando o sistema de coordenadas esfericas

    cos(u)*cos(v), cos(u)*sin(v), sin(u)world.datworld.cor

    Figura 37:

    39

  • -1-0.8

    -0.6-0.4

    -0.2 0

    0.2 0.4

    0.6 0.8

    1-1.2-1-0.8-0.6-0.4-0.2 0

    0.2 0.4 0.6 0.8 1

    -1

    -0.5

    0

    0.5

    1

    3D solid version through hiddenlining

    cos(u)*cos(v), -cos(u)*sin(v), sin(u)world.dat u 1:2:(1.001)

    world.cor

    Figura 38:

    -1-0.5

    0 0.5

    1-1-0.5 0

    0.5 1-100-80-60-40-20

    0 20 40 60 80

    100

    Versao 3D usando sistema de coordenadas cilindricas

    cos(u), sin(u), vworld.datworld.cor

    Figura 39:

    Para produzirmos as guras anteriores, teremos que construir tre^s arquivos: world.dat,world.cor e world.dem, estes arquivos podem ser baixados no site do Gnuplot. A partirdestes arquivos basta digitar na linha de comando do Gnuplot load 'world.dem', arquivode dados ja criado, que visualizaremos tais guras.

    40

  • Considerac~oes Finais

    O Gnuplot foi desenvolvido inicialmente por Thomas Williams e Colin Kelly em 1986com o objetivo de criar um programa que lhes permitisse visualizar gracamente propriedadesdas equac~oes matematicas relacionadas ao feno^meno do eletromagnetismo. Primeiramentefoi denominado de NEWPLOT, mas ao descobrirem que ja existia outro programa com essemesmo nome, mudaram para Gnuplot. O programa destina-se a criac~ao de gracos a partirde func~oes e conjuntos de dados em duas ou tre^s dimens~oes. O Gnuplot e bastante utilizadodevido a sua simplicidade, versatilidade e automatizac~ao das tarefas, o que possibilita tracardiversos gracos a partir da execuc~ao de apenas um arquivo de comandos. Segundo Galo(2003) o aplicativo Gnuplot e destinado a visualizac~ao de gracos e superfcies, uteis emaplicac~oes cientcas nas areas de fsica, matematica, estatstica e engenharias. Este aplica-tivo e de domnio publico e tem vers~oes para uma serie de sistemas operacionais, tais como:Windows, Unix, Linux.

    Refere^ncias

    [1] FONTENELE, F. C. F. GNUPLOT: comandos basicos e aplicac~oes em sala de aula.Monograa do Curso de Matematica, 2007.

    [2] GALO, Mauricio. Instruc~oes iniciais para o uso do Gnuplot. Disponvel no site:www.prudente.unesp.br/dcartog/galo/gnuplot

    [3] Pagina central do Gnuplot: www.gnuplot.info.

    [4] Gnuplot um programa para fazer gracos e alguns calculos: Disponvel no seguintesite: http://t16web.lanl.gov/Kawano/gnuplot/index-e.html.

    41