Sharednotebooks / 4.RecursosGraficos.sagewsOpen in CoCalc
Author: Sergio Luis Lopes Verardi

1. Resumo do Tutorial


Nunca é demais enfatizar a importância dos recursos gráficos para a visualização de funções e de dados. Isto facilita perceber a ocorrência de fatos matemáticos e sua interpretação e, eventualmente, permite até mesmo estabelecer conjeturas, aquilo que vários autores passaram a denominar de Matemática Experimental.

Assim como outros softwares numéricos e simbólicos, o Sage possui enorme riqueza de recursos gráficos de modo que, em um tutorial como este, apenas os aspectos básicos podem ser discutidos. Para conhecer toda a diversidade gráfica do Sage, o estudante deve recorrer à documentação, a exemplos concretos encontrados na internet e à experimentação prática.

A seguir, veremos alguns exemplos de comandos gráficos para situações típicas de visualização em 2D e 3D, que serão o ponto de partida para a confecção de gráficos mais elaborados.

2. Visualização em 2D

 

Representação Gráfica de Funções

Para traçar o gráfico de uma função (simbólica ou não) em um intervalo [a,b], o Sage fornece a função plot, que tem duas possíveis sintaxes: plot(f(x),x,a,b) ou plot(f(x),x,a,b).
Além disso, muitos parâmetros podem ser acrescentados à chamada do comando plot com o objetivo de modificar a forma final do gráfico. Alguns desses parâmetros mais usuais são:

plot_points: número de pontos usados no traçado (default = 200)
color: cor da curva, pode ser dada como um código RGB, uma string tipo 'blue' ou um código HTML (ex, #aaff0b)
thickness: espessura da linha
linestyle: estilo da linha (contínua, tracejada, pontilhada, etc)
aspect_ratio: define a "deformação" em cada direção


O exemplo a seguir mostra o gráfico da função xsin1xx\sin{\frac{1}{x}}
# Exemplo plot(x*sin(1/x),-2,2)

Salvando Gráficos em Arquivos

Um objeto gráfico pode ser gravado em arquivo em diferentes formatos (pdf, eps, png, ps, svg). Com isso podem ser incorporados a textos escritos em processadores de texto, por exemplo no Latex.

Para tanto, primeiro o gráfico deve ser armazenado em uma variável, digamos, g; a partir daí, o gráfico pode ser exibido, salvo, etc.
Vejamos um exemplo.

# Exemplo g = plot(x*sin(1/x),-2,2) # O gráfico não é exibido, apenas armazenado na variável g g.show(xmin=-1,xmax=1) # Agora o gráfico é exibido, mas OBSERVE que o intervalo de exibição foi alterado em relação ao plot original; mais um recurso! g.save('meu_primeiro_grafico.pdf',aspect_ratio=1,xmin=-1,xmax=1) # Pode-se verificar na lista de arquivos do Sage, que o gráfico foi salvo, de fato, no arquivo meu_primeiro_grafico.pdf; agora, pode-se fazer o download do arquivo e utilizá-lo para outras finalidades.
#Exemplo: Mais de uma curva em um mesmo gráfico g=plot(x*sin(1/x),-2,2) g += plot(sin(x),-2,2,color='red') #OBSERVE a operação += que acrescenta a segunda curva à variável que contém os objetos gráficos g.show()

Animação de Gráficos

A título de ilustração de recursos, o Sage permite criar gráficos animados. Em geral, isso envolve escrever um código que é, de fato, um pequeno programa em Python. Por isso, dado o caráter introdutório deste tutorial, não entraremos em detalhes. Talvez para despertar a curiosidade, vamos mostrar um exemplo simples no qual é apresentado o gráfico da função sinx\sin x e de sucessivos polinômios de Taylor que aproximam cada vez melhor a função dada.
A animação pode ser salva em um arquivo tipo gif animado (animated gif) e depois ser incorporada a uma página html, por exemplo.
É possível, ainda, fazer pequenos filmes, mas é preciso ter alguns softwares livres instalados.

a = animate([[sin(x), taylor(sin(x), x, 0, 2*k+1)] for k in range(0, 14)], xmin=-14, xmax=14, ymin=-3, ymax=3, figsize=[8, 4]) a.show() a.save('animation.gif') # gravando um gif animado

Curvas Parametrizadas

Curvas Parametrizadas, do tipo x=f(t), y=g(t)x=f(t),\ y=g(t) são traçadas pelo comando parametric_plot( (f(t),g(t)), (t,a,b) ), onde [a,b] é o intervalo de valores assumidos pelo parâmetro t.

Como exemplo, tracemos a curva parametrizada pelas equações:
{x(t)=cos(t)+12cos(7t)+13sin(17t)y(t)=sin(t)+12sin(7t)+13cos(17t)\left\{ \begin{array}{rcl}x(t)&=&\cos{(t)}+\frac{1}{2}\cos{(7t)}+\frac{1}{3}\sin{(17t)}\\y(t)&=&\sin{(t)}+\frac{1}{2}\sin{(7t)}+\frac{1}{3}\cos{(17t)}\\ \end{array}\right.


# Exemplo t=var('t') x=cos(t)+cos(7*t)/2+sin(17*t)/3 y=sin(t)+sin(7*t)/2+cos(17*t)/3 #x=cos(t) #y=sin(t) g=parametric_plot((x,y),(t,0,2*pi)) g.show()

Curvas Em Coordenadas Polares

Curvas em coordenadas polares, do tipo ρ=f(θ)\rho=f(\theta) são traçadas pelo comando polar_plot( rho(theta), (theta,a,b) ), onde [a,b] é o intervalo de valores assumidos pelo parâmetro θ\theta.

Acompanhe o exemplo, no qual se traça a curva: ρ(θ)=1+ecosnθ\rho(\theta)=1+e\cdot \cos{n\theta} com n=20/19n=20/19 e e[2,1/3]e \in [2,1/3]


#Exemplo (e=1/3) t = var('t'); n = 20/19 g = polar_plot(1+1/3*cos(n*t),(t,0,n*36*pi),plot_points=5000) g.show()

Gráficos de Pontos

Se o que se conhece é uma lista de pontos (x,y), então utilizam-se as funções line(p) para traçar o gráfico com os pontos interligados por segmentos de reta e points(p) para graficar os pontos isolados.
Em ambos os casos, p denota uma lista com o formato [ [x1,y1], [x2,y2], [x3,y3], ..., [xn,yn] ].



#Exemplo p=[[0,0],[1,1],[2,2],[3,3],[8,8]] g1=line(p,color='green') #g1.show() g1+=points(p,color='red',pointsize=30) g1.show()

2. Visualização em 3D

 

Representação Gráfica de Funções de Duas Variáveis

Para traçar o gráfico de uma função de 2 variáveis (uma superfície 3D)) temos a função plot3d( f(x,y), (x,a,b), (y,c,d) ).

O exemplo a seguir mostra o gráfico da função f(x,y)=x2+2y2f(x,y)=x^2+2y^2

# Exemplo u,v=var('u','v') h=u^2+2*v^2 f=plot3d(h,(u,-1,1),(v,-1,1)) show(f,aspect_ratio=[2,2,1]) # Visualizador Padrão #show(f,viewer='tachyon') # Visualizador Tachyon
3D rendering not yet implemented

Linhas 3D

É possível também traçar linhas em 3D. A seguir, temos um exemplo de curva paramétrica.



# Exemplo #ts = [(0, 0, 0), (1, 0, 0), (1, 1, 0), (1, 1, 1), (2, 1, 1), (2, 2, 1), (2, 2, 2), (3, 2, 2)] L = line3d([(cos(i),sin(i),i) for i in srange(0,10,.01)],color='red') show(L,aspect_ratio=[6,6,1])
3D rendering not yet implemented
329b7c75-e0c6-4763-b506-0f67def34b58