Sharednotebooks / 4.RecursosGraficos.ipynbOpen in CoCalc
Author: Sergio Luis Lopes Verardi
In [ ]:
%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>
In [ ]:
%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>
In [ ]:
# Exemplo plot(x*sin(1/x),-2,2)
In [ ]:
%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>
In [ ]:
# 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.
In [ ]:
#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()
In [ ]:
%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>
In [ ]:
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
In [ ]:
%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>
In [ ]:
# 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()
In [ ]:
%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>
In [ ]:
#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()
In [ ]:
%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>
In [ ]:
#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()
In [ ]:
%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>
In [ ]:
# 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
In [ ]:
%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>
In [ ]:
# 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])
In [ ]:
In [ ]: