Sharednotebooks / 4.RecursosGraficos.ipynbOpen in CoCalc
%html
<h2 style="color: rgb(51, 102, 255);">1. Resumo do Tutorial</h2>
<br style="font-family: Verdana;">
<span style="font-family: Verdana;">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.<br>
<br>
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.<br>
<br>
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.<br>
</span>
%html
<h2 style="color: rgb(51, 102, 255);">2. Visualização em 2D</h2>
&nbsp;
<h4 style="color: rgb(51, 51, 255);"><span
 style="font-family: Verdana;">Representação Gráfica de
Funções</span></h4>
<span style="font-family: Verdana;">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 <span style="color: rgb(51, 102, 255); font-style: italic;">plot</span>,
que tem duas possíveis sintaxes: plot(f(x),x,a,b) ou plot(f(x),x,a,b).<br>
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:<br>
<br>
<span style="color: rgb(51, 204, 255);">plot_points</span>:
número de pontos usados no traçado (default = 200)<br>
<span style="color: rgb(51, 204, 255);">color</span>:
cor da curva, pode ser dada como um código RGB, uma string tipo 'blue'
ou um código HTML (ex, #aaff0b)<br>
<span style="color: rgb(51, 204, 255);">thickness</span>:
espessura da linha<br>
<span style="color: rgb(51, 204, 255);">linestyle</span>:
estilo da linha (contínua, tracejada, pontilhada, etc)<br>
<span style="color: rgb(51, 204, 255);">aspect_ratio</span>:
define a "deformação" em cada direção<br>
<br>
<br>
O exemplo a seguir mostra o gráfico da função $x\sin{\frac{1}{x}}$<br>
</span>
# Exemplo
plot(x*sin(1/x),-2,2)
%html
<h4 style="color: rgb(51, 51, 255);"><span
 style="font-family: Verdana;">Salvando Gráficos em Arquivos</span></h4>
<span style="font-weight: bold;"></span><span
 style="font-family: Verdana;">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.<br>
<br>
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.<br>
Vejamos um exemplo.<br>
</span><br>
# 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()
%html
<h4 style="color: rgb(51, 51, 255);"><span
 style="font-family: Verdana;">Animação de&nbsp;Gráficos</span></h4>
<span style="font-weight: bold;"></span><span
 style="font-family: Verdana;">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&nbsp;simples no qual é apresentado o gráfico da
função $\sin x$ e de sucessivos polinômios de Taylor que aproximam cada
vez melhor a função dada.<br>
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.<br>
É possível, ainda, fazer pequenos filmes, mas é preciso ter alguns
softwares livres instalados.<br>
</span><br>
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
%html
<h4 style="color: rgb(51, 51, 255);"><span
 style="font-family: Verdana;">Curvas Parametrizadas</span></h4>
<span style="font-weight: bold;"></span><span
 style="font-family: Verdana;"><span
 style="font-weight: bold;"></span>Curvas
Parametrizadas, do tipo $x=f(t),\ y=g(t)$ são traçadas pelo comando <span
 style="font-style: italic; color: rgb(51, 102, 255);">parametric_plot( (f(t),g(t)), (t,a,b) )</span>,
onde [a,b] é o intervalo de valores assumidos pelo parâmetro t.<br>
<br>
Como exemplo, tracemos&nbsp;a curva parametrizada pelas equações:<br>
$$\left\{ \begin{array}{rcl}x(t)&amp;=&amp;\cos{(t)}+\frac{1}{2}\cos{(7t)}+\frac{1}{3}\sin{(17t)}\\y(t)&amp;=&amp;\sin{(t)}+\frac{1}{2}\sin{(7t)}+\frac{1}{3}\cos{(17t)}\\
\end{array}\right.$$<br>
<br>
<br>
</span>

</span>
# 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()
%html
<h4 style="color: rgb(51, 51, 255);"><span
 style="font-family: Verdana;">Curvas Em Coordenadas Polares</span></h4>
<span style="font-weight: bold;"></span><span
 style="font-family: Verdana;"><span
 style="font-weight: bold;"></span>Curvas em
coordenadas polares, do tipo $\rho=f(\theta)$ são traçadas pelo comando
<span style="font-style: italic; color: rgb(51, 102, 255);">polar_plot(
rho(theta), (theta,a,b) )</span>, onde [a,b] é o intervalo de
valores assumidos pelo parâmetro $\theta$.<br>
<br>
Acompanhe o exemplo, no qual se traça a curva: $\rho(\theta)=1+e\cdot \cos{n\theta}$ com $n=20/19$ e $e \in [2,1/3]$<br>
<br>
<br>
</span>
#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()
%html
<h4 style="color: rgb(51, 51, 255);"><span
 style="font-family: Verdana;">Gráficos de Pontos</span></h4>
<span style="font-weight: bold;"></span><span
 style="font-family: Verdana;"><span
 style="font-weight: bold;"></span>Se o que se conhece
é uma lista de pontos (x,y), então utilizam-se as funções <span
 style="font-style: italic;">line(p)</span> para traçar
o gráfico com os pontos interligados por segmentos de reta e <span
 style="font-style: italic;">points(p)</span> para
graficar os pontos isolados.<br>
Em ambos os casos, <span style="font-style: italic;">p</span>
denota uma lista com o formato [ [x1,y1], [x2,y2], [x3,y3], ...,
[xn,yn] ].<br>
</span><span style="font-family: Verdana;"><br>
<br>
<br>
#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()
%html
<h2 style="color: rgb(51, 102, 255);">2. Visualização em 3D</h2>
&nbsp;
<h4 style="color: rgb(51, 51, 255);"><span
 style="font-family: Verdana;">Representação Gráfica de
Funções de Duas Variáveis</span></h4>
<span style="font-family: Verdana;">Para traçar o gráfico
de uma função de 2 variáveis (uma superfície 3D)) temos a função <span
 style="color: rgb(51, 102, 255); font-style: italic;">plot3d(
f(x,y), (x,a,b), (y,c,d) )</span>.<br>
<br>
O exemplo a seguir mostra o gráfico da função $f(x,y)=x^2+2y^2$<br>
</span>
<br>
# 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
%html
<h4 style="color: rgb(51, 51, 255);"><span
 style="font-family: Verdana;">Linhas 3D</span></h4>
<span style="font-weight: bold;"></span><span
 style="font-family: Verdana;"><span
 style="font-weight: bold;"></span>É possível também
traçar linhas em 3D. A seguir, temos um exemplo de curva paramétrica.<br>
</span><span style="font-family: Verdana;"><br>
<br>
<br>
# 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])