Sharednotebooks / 4.RecursosGraficos.sagewsOpen in CoCalc

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