| Hosted by CoCalc | Download

Gráficos bidimensionais

Pontos

Usamos o seguinte comando para criar o gráfico do ponto (1,2) no plano:

point((1,2))

Podemos criar um ponto e armazená-lo em uma variável sem exibir o gráfico:

P = point((1,2))

Para exibir o gráfico, usamos os comandos P.show() ou show(P):

P.show()

Textos

Para adicionar texto a um gráfico, usamos o comando

text("Texto no ponto (2,1)", (2,1))

Segmentos de retas

O comando a seguir cria o gráfico do segmento AB em que A = (1,1) e B = (3,2):

line([(1,1), (3,2)])

Alternativamente, vamos criar o gráfico do segmento AB em que A = (-2,-1) e B = (5,3) usando uma parametrização do segmento.

Primeiramente, definimos a variável t (o parâmetro), depois as funções x(t) e y(t), e por fim criamos o gráfico usando o comando parametric_plot() (note que variamos t de 0 a 1):

t = var('t') x(t) = (1-t)*(-2) + t*(5) y(t) = (1-t)*(-1) + t*(3) parametric_plot([x(t), y(t)], (t, 0, 1))

Para representar mais de um segmento no mesmo gráfico, procedemos da seguinte forma (opcionalmente, vamos especificar uma cor diferente para cada segmento):

t = var('t') a = parametric_plot([(1-t)*(-2) + t*(5), (1-t)*(-1) + t*(3)], (t, 0, 1)) b = parametric_plot([(1-t)*(1) + t*(3), (1-t)*(3) + t*(-1)], (t, 0, 1), color='red') p = a + b p.show()

Podemos combinar os comandos acima e adicionar legendas aos eixos:

t = var('t') a = parametric_plot([(1-t)*(-2) + t*(5), (1-t)*(3) + t*(-2)], (t, 0, 1), color='red') b = line([(-1,-1), (3,3)], color='green') c = point((3,1)) d = text("(3,1)", (3,1.3)) p = a + b + c + d p.show(axes_labels=['$x$', '$y$'])

Para alterar os intervalos de x e y exibidos no gráfico, podemos especificar os parâmetros xmin, xmax, ymin e ymax. Por exemplo, vamos modificar o gráfico anterior.

p.show(axes_labels=['$x$', '$y$'], xmin=-6, xmax=8, ymin=-4, ymax=5)

Retas

Reta AB

Em um gráfico bidimensional, retas são sempre finitas e portanto se confundem com segmentos. Para criar retas que passam por dois pontos dados, usamos os mesmos comandos que usamos para criar segmentos: line() e parametric_plot().

Para criar retas que preenchem todo o gráfico (ou seja, chegam à fronteira do gráfico), sugerimos usar uma parametrização e variar o parâmetro t em um intervalo suficientemente grande:

t = var('t') parametric_plot([(1-t)*(-2) + t*(4), (1-t)*(1) + t*(3)], (t, -3, 3), axes_labels=['$x$', '$y$'])

Reta y = ax + b

Para criar o gráfico de uma reta na forma y = ax + b, vamos fazer o gráfico de y como função de x.

Primeiramente, definimos a variável x, depois a função y(x), e por fim fazemos o gráfico de y em função de x com o comando plot() (variando x em um intervalo):

x = var('x') y(x) = 2*x + 1 plot(y(x), (x, -3, 3))

Equivalentemente, podemos usar os seguintes comandos (observe a sintaxe alternativa no comando plot()):

x = var('x') a = 2 b = 1 y(x) = a*x + b p = plot(y, (-3, 3), color='purple', legend_label='$y = 2x + 1$') p.show(axes_labels=['$x$', '$y$'])

No parâmetro axes_labels=['$x$', '$y$'], o delimitador $ especifica que o código seja interpretado em LaTeX. Substitua esse comando por axes_labels=['x', 'y'] e observe a diferença.

Reta ax + by = c

Para fazer o gráfico de uma reta na forma ax + by = c, vamos usar o comando implicit_plot().

Esse comando recebe uma função f(x,y) e faz o gráfico da curva f(x,y) = 0 na região especificada pelos intervalos de x e y.

x, y = var('x y') implicit_plot(2*x + 3*y - 1, (x, -2, 2), (y, -2, 2))

Circunferências

O comando a seguir cria o gráfico da circunferência de centro em (0,0) e raio 1:

circle((0,0), 1)

Uma outra forma de fazer o gráfico dessa circunferência é usando o comando implicit_plot():

x, y = var('x y') f(x,y) = x^2 + y^2 - 1 implicit_plot(f(x,y), (x, -1, 1), (y, -1, 1))

A seguir, um exemplo combinando os comandos acima:

x, y = var('x y') a = implicit_plot(x^2 + y^2 - 1, (x, -1, 1), (y, -1, 1), color='green') b = circle((1,1), 2, color='red') c = point((1,1)) d = text("(1,1)", (1,1.3)) p = a + b + c + d p.show(axes_labels=['$x$', '$y$'])

Mais um exemplo:

a = point((1,1)) b = text("(1,1)", (1,1.2)) c = circle((1,1), 2, color='red', legend_label='$(x-1)^2+(y-1)^2=4$') d = line([(-2,3), (5,0)], color='green', legend_label='$\mathrm{reta} \ \mathrm{por} \ (-2,3) \ \mathrm{e} \ (5,0)$') p = a + b + c + d p.show(axes_labels=['$x$', '$y$'])

Para salvar a figura em um arquivo, usamos o comando

p.save('figura.png')

Gráficos de funções

Para criar um gráfico da função sin(x)\sin(x) com xx variando de π/2-\pi/2 a π/2\pi/2, vamos usar o comando plot():

x = var('x') f(x) = sin(x) plot(f(x), (x, -pi/2, pi/2), axes_labels=['$x$', '$\sin(x)$'])

Podemos criar os gráficos de duas funções nos mesmos eixos adicionando os gráficos de cada uma delas:

x = var('x') f(x) = sin(x) g(x) = cos(x) a = plot(f(x), (x, -pi/2, pi/2), color='black') b = plot(g(x), (x, -pi/2, pi/2), color='red') p = a + b p.show()

A seguir, um outro exemplo, usando mais opções. Observe a especificação do parâmetro aspect_ratio = 1 e compare o gráfico abaixo com o gráfico acima.

x = var('x') f(x) = sin(x) g(x) = cos(x) a = plot(f(x), (x, -pi/2, pi/2), color='black', linestyle='--', thickness=3, legend_label='$\sin(x)$') b = plot(g(x), (x, -pi/2, pi/2), color='red', legend_label='$\cos(x)$') p = a + b p.show(axes_labels=['$x$', '$y$'], aspect_ratio=1)

Às vezes, o gráfico obtido não é exatamente o que esperávamos. Veja o seguinte exemplo:

x = var('x') f(x) = (x^3 + x^2 + x)/(x^2 - x - 2) p = plot(f(x), (x, -5, 5)) p.show()

As assíntotas verticais dessa função racional fazem a função plot() ajustar o aspect_ratio do gráfico e com isso exibir valores muito grandes de f(x) para x próximo de -1 e 2. Isso torna difícil visualizar os detalhes do gráfico.

Para contornar esse problema, vamos ajustar os limites verticais e horizontais do gráfico:

p.show(xmin=-2, xmax=4, ymin=-20, ymax=20)

Para ler a documentação sobre uma função do sagemath, usamos o comando help(). Por exemplo, o seguinte comando exibe a documentação da função line():

help(line)
Help on function line in module sage.plot.line: line(points, **kwds) Returns either a 2-dimensional or 3-dimensional line depending on value of points. INPUT: - ``points`` - either a single point (as a tuple), a list of points, a single complex number, or a list of complex numbers. For information regarding additional arguments, see either line2d? or line3d?. EXAMPLES:: sage: line([(0,0), (1,1)]) Graphics object consisting of 1 graphics primitive :: sage: line([(0,0,1), (1,1,1)]) Graphics3d Object

Alternativamente, pare ler essa documentação poderíamos usar o comando line?

Para traduzir a documentação, copie a saída do comando help() (usando o mouse e o CTRL-C) e cole em http://translate.google.com.