\n",
" \n",
"Nunca é demais\n",
"enfatizar a importância dos recursos gráficos para a visualização de\n",
"funções e de dados. Isto facilita perceber a ocorrência de fatos\n",
"matemáticos e sua interpretação e, eventualmente, permite até mesmo\n",
"estabelecer conjeturas, aquilo que vários autores passaram a denominar\n",
"de Matemática Experimental. \n",
" \n",
"Assim como outros softwares numéricos e simbólicos, o Sage possui\n",
"enorme riqueza de recursos gráficos de modo que, em um tutorial como\n",
"este, apenas os aspectos básicos podem ser discutidos. Para conhecer\n",
"toda a diversidade gráfica do Sage, o estudante deve recorrer à\n",
"documentação, a exemplos concretos encontrados na internet e à\n",
"experimentação prática. \n",
" \n",
"A seguir, veremos alguns exemplos de comandos gráficos para situações\n",
"típicas de visualização em 2D e 3D, que serão o ponto de partida para a\n",
"confecção de gráficos mais elaborados. \n",
""
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"%html\n",
"
2. Visualização em 2D
\n",
" \n",
"
Representação Gráfica de\n",
"Funções
\n",
"Para traçar o gráfico\n",
"de uma função (simbólica ou não) em um intervalo [a,b], o Sage fornece\n",
"a função plot,\n",
"que tem duas possíveis sintaxes: plot(f(x),x,a,b) ou plot(f(x),x,a,b). \n",
"Além disso, muitos parâmetros podem ser acrescentados à chamada do\n",
"comando plot com o objetivo de modificar a forma final do gráfico.\n",
"Alguns desses parâmetros mais usuais são: \n",
" \n",
"plot_points:\n",
"número de pontos usados no traçado (default = 200) \n",
"color:\n",
"cor da curva, pode ser dada como um código RGB, uma string tipo 'blue'\n",
"ou um código HTML (ex, #aaff0b) \n",
"thickness:\n",
"espessura da linha \n",
"linestyle:\n",
"estilo da linha (contínua, tracejada, pontilhada, etc) \n",
"aspect_ratio:\n",
"define a \"deformação\" em cada direção \n",
" \n",
" \n",
"O exemplo a seguir mostra o gráfico da função $x\\sin{\\frac{1}{x}}$ \n",
""
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"# Exemplo\n",
"plot(x*sin(1/x),-2,2)"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"%html\n",
"
Salvando Gráficos em Arquivos
\n",
"Um objeto gráfico pode ser\n",
"gravado em arquivo em diferentes formatos (pdf, eps, png, ps, svg). Com\n",
"isso podem ser incorporados a textos escritos em processadores de\n",
"texto, por exemplo no Latex. \n",
" \n",
"Para tanto, primeiro o gráfico deve ser armazenado em uma variável,\n",
"digamos, g; a partir daí, o gráfico pode ser exibido, salvo, etc. \n",
"Vejamos um exemplo. \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"# Exemplo\n",
"g = plot(x*sin(1/x),-2,2) # O gráfico não é exibido, apenas armazenado na variável g\n",
"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!\n",
"g.save('meu_primeiro_grafico.pdf',aspect_ratio=1,xmin=-1,xmax=1)\n",
"# 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."
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"#Exemplo: Mais de uma curva em um mesmo gráfico\n",
"g=plot(x*sin(1/x),-2,2)\n",
"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\n",
"g.show()"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"%html\n",
"
Animação de Gráficos
\n",
"A título de ilustração de\n",
"recursos, o Sage permite criar gráficos animados. Em geral, isso\n",
"envolve escrever um código que é, de fato, um pequeno programa em\n",
"Python. Por isso, dado o caráter introdutório deste tutorial, não\n",
"entraremos em detalhes. Talvez para despertar a curiosidade, vamos\n",
"mostrar um exemplo simples no qual é apresentado o gráfico da\n",
"função $\\sin x$ e de sucessivos polinômios de Taylor que aproximam cada\n",
"vez melhor a função dada. \n",
"A animação pode ser salva em um arquivo tipo gif animado (animated gif)\n",
"e depois ser incorporada a uma página html, por exemplo. \n",
"É possível, ainda, fazer pequenos filmes, mas é preciso ter alguns\n",
"softwares livres instalados. \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"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])\n",
"a.show()\n",
"a.save('animation.gif') # gravando um gif animado"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"%html\n",
"
Curvas Parametrizadas
\n",
"Curvas\n",
"Parametrizadas, do tipo $x=f(t),\\ y=g(t)$ são traçadas pelo comando parametric_plot( (f(t),g(t)), (t,a,b) ),\n",
"onde [a,b] é o intervalo de valores assumidos pelo parâmetro t. \n",
" \n",
"Como exemplo, tracemos a curva parametrizada pelas equações: \n",
"$$\\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)}\\\\\n",
"\\end{array}\\right.$$ \n",
" \n",
" \n",
"\n",
"\n",
""
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"# Exemplo\n",
"t=var('t')\n",
"x=cos(t)+cos(7*t)/2+sin(17*t)/3\n",
"y=sin(t)+sin(7*t)/2+cos(17*t)/3\n",
"#x=cos(t)\n",
"#y=sin(t)\n",
"g=parametric_plot((x,y),(t,0,2*pi))\n",
"g.show()"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"%html\n",
"
Curvas Em Coordenadas Polares
\n",
"Curvas em\n",
"coordenadas polares, do tipo $\\rho=f(\\theta)$ são traçadas pelo comando\n",
"polar_plot(\n",
"rho(theta), (theta,a,b) ), onde [a,b] é o intervalo de\n",
"valores assumidos pelo parâmetro $\\theta$. \n",
" \n",
"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]$ \n",
" \n",
" \n",
""
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"#Exemplo (e=1/3)\n",
"t = var('t'); n = 20/19\n",
"g = polar_plot(1+1/3*cos(n*t),(t,0,n*36*pi),plot_points=5000)\n",
"g.show()"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"%html\n",
"
Gráficos de Pontos
\n",
"Se o que se conhece\n",
"é uma lista de pontos (x,y), então utilizam-se as funções line(p) para traçar\n",
"o gráfico com os pontos interligados por segmentos de reta e points(p) para\n",
"graficar os pontos isolados. \n",
"Em ambos os casos, p\n",
"denota uma lista com o formato [ [x1,y1], [x2,y2], [x3,y3], ...,\n",
"[xn,yn] ]. \n",
" \n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"#Exemplo\n",
"p=[[0,0],[1,1],[2,2],[3,3],[8,8]]\n",
"g1=line(p,color='green')\n",
"#g1.show()\n",
"g1+=points(p,color='red',pointsize=30)\n",
"g1.show()"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"%html\n",
"
2. Visualização em 3D
\n",
" \n",
"
Representação Gráfica de\n",
"Funções de Duas Variáveis
\n",
"Para traçar o gráfico\n",
"de uma função de 2 variáveis (uma superfície 3D)) temos a função plot3d(\n",
"f(x,y), (x,a,b), (y,c,d) ). \n",
" \n",
"O exemplo a seguir mostra o gráfico da função $f(x,y)=x^2+2y^2$ \n",
"\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"# Exemplo\n",
"u,v=var('u','v')\n",
"h=u^2+2*v^2\n",
"f=plot3d(h,(u,-1,1),(v,-1,1))\n",
"show(f,aspect_ratio=[2,2,1]) # Visualizador Padrão\n",
"#show(f,viewer='tachyon') # Visualizador Tachyon"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"collapsed": false
},
"outputs": [
],
"source": [
"%html\n",
"