Você é o visitante n°:

contador de visitas

quinta-feira, 21 de abril de 2011

Gnuplot: introdução e comandos básicos.

1.0 INTRODUÇÃO:
          A tecnologia é algo cada vez mais presente em nosso cotidiano e presente em diversas áreas do conhecimento humano, e quando aliada ao processo de ensino e aprendizagem, torna-o mais dinâmico e eficiente, aliando aprendizagem ao entretenimento. E na matemática não poderia ser diferente: diversos programas em diversas áreas nos oferecem outros meios de facilitar a assimilação de conteúdos.
            Todos os estudantes, em algum momento de sua vida estudantil, se deparam com o conceito de função, inicialmente a constante, a de 1° e 2° grau, e mais a frente as funções trigonométricas. É de fato um conceito belíssimo, e o que chama muito mesmo a atenção é o fato de toda função possuir gráfico. E os gráficos possibilitam a todos o entendimento do comportamento da função em diversos aspectos, como por exemplo: domínio, imagem, pontos de máximo e mínimo e etc. E não é só em funções que os gráficos são utilizados: por exemplo, na área de estatística,com seus gráficos de barras, linhas e de setores, e tampouco ficam restritos somente na matemática: encontramos aplicações nas áreas de geografia, economia, biologia, agronomia, enfim! São instrumentos poderosos e que facilitam a visualização de variações de grandezas numéricas e a compreensão das mesmas.
           Quanto ao gráfico de funções, surge uma indagação feita por boa parte dos estudantes: existe um meio computacional de ser gerado gráficos de funções? Sim, existe. E vários softwares fazem isso. Nesse nosso estudo, iremos destacar o software gnuplot* e alguns de seus comandos mais básicos na visualização de gráficos de funções. É um programa de interface simples, trabalhado através de comandos, em língua inglesa, o que a princípio pode dificultar um pouco o aprendizado a primeira vista, mas depois o usuário não sentirá mais dificuldade e ela tende a desaparecer. É importante também destacar que o gnuplot é uma espécie de calculadora científica com capacidade gráfica. O software pode ser baixado através do site: www.gnuplot.info. (*gnuplot se escreve mesmo com 'g' minúsculo, de acordo com seus idealizadores).
             Depois de o usuário baixar o programa, que vem em uma pasta, basta abrir a pasta e clicar no ícone "wgnuplot" :


E em seguida, abre a janela abaixo:

             É nesta tela (chamada prompt) que inserimos os comandos necessários à visualização de gráficos. Além dos comandos, é necessário conhecermos alguns operadores aritméticos úteis:
  • Adição: +
  • Subtração: - 
  • Multiplicação: *
  • Divisão: /
  • Potência: **
  • Resto de uma divisão: %. Exemplo: 
gnuplot> print 95%10
gnuplot> 5
  • Fatorial: !
         Uma observação útil! Ao inserirmos um número, o programa interpreta-o como sendo um número inteiro. Se fôssemos calcular 5/4, do jeito que escrevemos agora, o programa ia dar como resposta o número 1. Isto aconteceu porque 1 é a parte inteira da divisão de 5 por 4. Se quisermos obter 1.25, teremos que digitar 5.0/4 ou 5/4.0 (a presença do '.0' indica ao programa que se trata de um número real, e portanto a resposta será um número real, com suas casas decimais):
gnuplot> 5/4.0
gnuplot> 1.25


           Vamos agora conhecer alguns comandos:
  • PRINT: Mostra na tela valores calculados através do próprio programa. Vejamos, se digitarmos no prompt e em seguida pressionarmos 'enter':

gnuplot> print 5*4 + 10
gnuplot> 30
Uma outra forma de aplicar calculando valores de funções seria:
gnuplot> f(x) = x**2 - 5*x + 6
gnuplot> print f(6)
gnuplot> 12
  • SQRT: Calcula a raiz quadrada de um número. Exemplo:
gnuplot> print sqrt(9)
gnuplot: 3
  • PLOT: Mostra na tela o gráfico de uma função em 2D;
  • SPLOT: Mostra na tela o gráfico de uma função em 3D;
  • SET: Permite exibir no programa funções/reajustes no gráfico a ser exibido. Os principais são:
SET XRANGE: Insere o domínio no eixo x;
SET YRANGE: Insere domínio no eixo y;
SET ZEROAXIS: Exibe os eixos coordenados;
SET TITLE: Insere um título no gráfico;
SET KEY LEFT BOTTOM: Coloca a legenda no canto inferior esquerdo;
SET KEY RIGHT BOTTOM: Coloca a legenda no canto inferior direito;
SET KEY LEFT TOP: Coloca a legenda no canto superior esquerdo;
SET KEY RIGHT TOP: Coloca a legenda no canto superior direito;
SET KEY OUTSIDE: Coloca a legenda fora da área do gráfico;
SET KEY BELLOW: Coloca a legenda fora e abaixo;
SET KEY BOX: Coloca caixa na legenda;
SET XLABEL: Insere um título no eixo x;
SET YLABEL: Insere um título no eixo y;
SET XTICS: Define o tamanho do intervalo no eixo x;
SET YTICS: Define o tamanho do intervalo usado no eixo y;
SET HIDDEN3D: "Esconde" a parte de trás de um gráfico em 3D, dando um efeito
SET SAMPLES: Aumenta/diminui a quantidade de pontos usados para construir um gráfico 2D;
SET ISOSAMPLES: Aumenta/diminui a quantidade de pontos usados para construir um gráfico em 3D;
SET CONTOUR BASE: Exibe as curvas de nível abaixo do gráfico de uma superfície;
SET CONTOUR SURFACE: Exibe as curvas de nível na própria superfície;
SET ARROW FROM 'A' TO 'B' : Desenha um vetor na tela com origem em A e extremidade em B.
           Ainda temos outras opções de comandos combinados com o SET, que veremos ao longo do artigo.
  • UNSET: Desfaz a operação 'set' feira pelo usuário;
  • HELP: Exibe menus de ajuda ao usuário;
  • RESET: Limpa todas as configurações ativadas pelo usuário;
  • EXIT: Sair do programa.

2.0 VISUALIZANDO UM GRÁFICO:

           Vamos ao que nos interessa! Para visualizarmos o gráfico de uma função em 2D, basta utilizarmos 'plot função'. Por exemplo: se quisermos visualizar o gráfico da função f(x) = 2x - 7, basta fazer:

gnuplot> plot 2*x  - 7

            E o resultado:
           Nota: poderíamos também fazer dessa maneira:
gnuplot> f(x) = 2*x - 7
gnuplot: plot f(x)
           Podemos incrementar ainda mais nosso gráfico. Digitemos então o seguinte script:
gnuplot> set zeroaxis .......................................... mostra os eixos coordenados
gnuplot> set grid ................................................. mostra a tela dividida em grade
gnuplot> set title "Função de primeiro grau" ......... define o título do gráfico
gnuplot> set xlabel "Eixo X" .................................nomeia o eixo dos 'x'
gnuplot> set ylabel "Eixo Y" .................................nomeia o eixo dos 'y'
gnuplot> set  xtics 1 ............................................define o tamanho do intervalo usado no eixo 'x'
gnuplot> set ytics 1 .............................................define o tamanho do intervalo no eixo 'y'
gnuplot> plot 2*x - 7
            E o resultado:

              Note que, em meio a essa malha toda, ficou difícil de visualizar os eixos coordenados, mas é possível mudar essa situação aplicando uma cor diferente da malha do plano. Façamos isso: feche o gráfico (mas não o prompt!) e no próprio prompt digite:

gnuplot> set zeroaxis 2
gnuplot> plot 2*x - 7
             Teclando enter em seguida, o gráfico fica com o aspecto abaixo:

       Veja que os eixos coordenados ficaram com a cor verde. Isso aconteceu porque você acrescentou ao lado do comando set zeroaxis o número 2. É ele que indica ao programa a cor que deve ficar os eixos coordenados. Uma maneira de você visualizar todas as opções disponíveis é digitar a palavra test no prompt de comandos e teclar enter. Irá aparecer a tela abaixo:

           Uma melhor olhada no desenho (no canto direito) permite você identificar a cor verde associada ao número 2 que colocamos ao lado do comando. Podemos também mudar o estilo da linha do gráfico! Se você olhar o canto inferior esquerdo da tela "test", aparece várias espessuras de linha (o linewidth). Faça disso: digite plot 2*x - 7 lw 3, e veja o que acontece:
              O comando lw 3 permite que você altere a espessura da linha que desenha o gráfico da função. Veja na tela test que você tem seis opções de espessura de linha (do 1 até o 6).
              Vamos ver então outras opções. Feche o gráfico, e no prompt digite plot 2*x - 7 with boxes, e observe:

              Veja agora o que acontece quando inserimos o comando plot 2*x - 7 with points 3:
             O gráfico deixa de ser desenhado por uma linha e passa a ser desenhado por um conjunto de pontos  (descritos na tela test). E veja agora se digitarmos o comando plot 2*x - 7 with linespoint 7:

           Enfim! Deu para perceber que o programa tem várias opções de incrementar gráficos, mas não é só para isso que ele serve não! Com ele dá para enxergarmos em uma função algo como suas possíveis raízes reais, exatas ou aproximadas, seu valor máximo ou mínimo e ponto de intersecção do gráfico com o eixo das ordenadas (quando houver). Vamos lá! Digite no gnuplot o script abaixo:
gnuplot> reset
gnuplot> set zeroaxis 2
gnuplot> set grid
gnuplot> set xtics 1
gnuplot> set ytics 1
gnuplot> set title "Função de segundo grau"
gnuplot> set xlabel "Eixo X"
gnuplot> set ylabel "Eixo Y"
gnuplot> f(x) = x**2 - 5*x + 6 
gnuplot> plot f(x)

              Deu para perceber que, do jeito que está aí fica um pouco confuso de entender o comportamento dessa função. Isso porque o programa ajusta o gráfico de acordo com o tamanho de sua tela, o que é conhecido por default. Por isso, vamos aprender a restringi-la a um domínio específico. Para isso, feche o gráfico e digite no script os seguintes comandos:
gnuplot> set xrange [-1:5]
gnuplot> set yrange [-1:7]
              Explicando: o comando set xrange [-1:5] permite que você veja a função no eixo x somente no intervalo [-1:5], assim como o comando set yrange [-1:7] restringe a visualização do eixo das ordenadas ao intervalo [-1:7]. E bom saber que esses comandos podem ser abreviados respectivamente para set xr e set yr. Tecle enter e veja o que acontece:

              Observando o desenho, você percebe que:
i) O gráfico é uma parábola com concavidade voltada para cima (a = 1 > 0);
ii) As raízes da função são os números 2 e 3 (ponto onde o gráfico corta o eixo x: f(x) = 0);
iii) O gráfico intercepta o eixo y no ponto y = 6 (é só fazer x = 0);
iv) A função tem um ponto mínimo, e ele está entre 2 e 3 (Faça as contas! Você descobre que o ponto mínimo é Yv = -0.25 e isso acontece quando Xv = 2,5).
            Viu só? Vejamos outro exemplo. No mesmo script anterior, digite:
gnuplot> set title "Sistema de equações"
gnuplot> f(x) = x - 1
gnuplot: g(x) = (13 - 3*x)/2.0
gnuplot> plot f(x), g(x)
            Teclando enter:
             Vemos então que as duas funções se cruzaram no ponto P(3,2). Fazendo as contas, é só resolver a igualdade f(x) = g(x).
              Ao trabalharmos com outros tipos de função, é necessário conhecermos a notação utilizada no programa:
PRINCIPAIS FUNÇÕES ELEMENTARES:
sin(x) .................................. seno de x
cos(x) ..................................cosseno de x
tan(x) ...................................tangente de x
asin(x) .................................arco-seno de x
acos(x) ................................arco-cosseno de x
atan(x) .................................arco-tangente de x
sinh(x) ..................................seno hiperbólico de x
cosh(x) .................................cosseno hiperbólico de x
tanh(x) ..................................tangente hiperbólica de x
sqrt(x) ..................................raiz quadrada de x
log(x) ...................................logaritmo de x na base e (e = 2,781828 ... )
log10(x) ...............................logaritmo decimal de x
exp(x) ..................................exponencial de x
abs(x) ..................................valor absoluto(módulo) de x

3.0  OUTROS EXEMPLOS DE GRÁFICOS EM 2D:

3.1 GRÁFICO DA FUNÇÃO SENO:
3.2  GRÁFICO DA FUNÇÃO LOGARITMO DECIMAL:

3.3 GRÁFICO DA FUNÇÃO INVERSA (f(x) = 1/x):
3.4 GRÁFICO DA FUNÇÃO COSSENO HIPERBÓLICO DE X:
3.5 GRÁFICO DA FUNÇÃO F(X) = X*SIN(X):
3.6 GRÁFICO DA FUNÇÃO F(X) = ABS(-x**2 + 4):
3.7  MODELO MATEMÁTICO DE UM AMORTECEDOR SIMPLES:

Um comentário:

Anônimo disse...

Vc saberia como eu inplemento um programa em c++ como o Gnuplot? Até consigo gerar o gráfico com a função system(), mas o gráfico fecha rapidamente para o fazer o ciclo do programa com o while{ }.
Obrigado.