- robertocolistete.net

Propaganda
IPython Notebook
1 de 9
http://127.0.0.1:8888/382ee715-1541-46b1-8ebe-d2301569e859...
Usando SymPy 0.7.2 para Gráficos de Cônicas e
Quádricas de Geometria Analítica
Disciplina "Introdução à Computação em Física" (ICF) da UFES/Alegre
Curso de Licenciatura em Física - Turma 2012/2
Autoria : Prof. Roberto Colistete Jr., em 04/2013.
Veremos as 4 seções cônicas (circunferência, elipse, parábola e hipérbole) com foco nos gráficos computacionais das
mesmas. As seções cônicas podem ser definidas de várias formas, aqui citaremos somente algumas mais usuais, para
maiores detalhes, consultar livro-texto de "Vetores e Geometria Analítica".
Depois veremos também algumas superfícies quádricas, mais simples de visualizar graficamente.
Carregando PyLab e SymPy 0.7.2 :
In [1]: %pylab inline
Welcome to pylab, a matplotlib-based Python environment [backend:
module://IPython.zmq.pylab.backend_inline].
For more information, type 'help(pylab)'.
Importando SymPy 0.7.2 e checando se é a versão correta. O diretório "sympy" do SymPy 0.7.2 deve estar no mesmo
diretório do IPython Notebook :
In [2]: from sympy import *
In [3]: from sympy import __version__; print __version__
0.7.2
Gráfico Paramétrico :
Carregando a função gráfica "plot_parametric" do SymPy 0.7.2 que usa PyLab de forma fácil :
In [4]: from sympy.plotting import plot_parametric
SymPy sempre exige a definição dos símbolos a serem usados :
25-04-2013 19:22
IPython Notebook
2 de 9
http://127.0.0.1:8888/382ee715-1541-46b1-8ebe-d2301569e859...
In [5]: x, y, a, b, t = symbols("x y a b t")
Circunferência na forma paramétrica, C : [x = cos(t), y = sin(t)] :
In [6]: plot_parametric(cos(t), sin(t), (t,0,2*pi),
title=u"Circunferência paramétrica", xlabel="x", ylabel="y");
Com opções para a circunferência não ficar achatada :
In [7]: plot_parametric(cos(t), sin(t), (t,0,2*pi), xlim=(-1.5,1.5), ylim=(-1.1,1.1),
title=u"Circunferência paramétrica", xlabel="x", ylabel="y");
Gráficos Implícitos :
Carregando a função gráfica "plot_implicit" do SymPy 0.7.2 que usa PyLab de forma fácil para fazer gráficos implícitos :
25-04-2013 19:22
IPython Notebook
3 de 9
http://127.0.0.1:8888/382ee715-1541-46b1-8ebe-d2301569e859...
In [8]: from sympy.plotting import plot_implicit
Circunferência na forma implícita, definida em termos da equação
x 2 + y 2 = R 2 , onde R é o raio :
Circunferência de raio R
= 1 e centrada na origem (0, 0) :
In [9]: plot_implicit(Eq(x**2 + y**2, 1), (x,-1.5,1.5), (y,-1.1,1.1),
title=u'Circunferência', xlabel='x', ylabel='y');
Transformando x
⇒ (x − a) e y ⇒ (y − b), a circunferência tem seu centro transladado para (a, b) :
In [10]: plot_implicit(Eq((x-2)**2 + y**2, 1), (x,0,3.1), (y,-1.1,1.1),
title=u'Circunferência fora da origem', xlabel='x', ylabel='y');
25-04-2013 19:22
IPython Notebook
4 de 9
http://127.0.0.1:8888/382ee715-1541-46b1-8ebe-d2301569e859...
2
Elipse na forma implícita, definida em termos da equação x 2
x2
b2
+
y2
a2
a
+
y2
b2
= 1 onde a é o semi-eixo maior e b é semi-eixo menor :
Elipse centrada na origem (0, 0) com semi-eixo maior vertical a
= 1 ou
= 3 e semi-eixo menor horizontal b = 1 :
In [11]: plot_implicit(Eq(x**2 + y**2/3**2, 1), (x,-3.5,3.5), (y,-3.5,3.5),
title=u'Elipse', xlabel='x', ylabel='y');
Parábola :
Podemos usar "plot" quando a parábola está definida na forma explícita y = ax 2 + bx + c (paralela ao eixo y). Aqui
uma parábola com vértice V na origem, concavidade para cima (a > 0) e eixo vertical :
In [12]: plot(x**2,(x,-3,3),
title=u'Parábola com vértice na origem', xlabel='x', ylabel='y');
Transformando x
⇒ (x − h), a parábola tem seu vértice V transladado para (h, 0). Aqui V = (1, 0) :
25-04-2013 19:22
IPython Notebook
5 de 9
http://127.0.0.1:8888/382ee715-1541-46b1-8ebe-d2301569e859...
In [13]: plot((x-1)**2,(x,-2,4),
title=u'Parábola com vértice em (1,0)', xlabel='x', ylabel='y');
Usando "plot_implicit" para definir a parábola na forma padrão 2p(y − k)
V = (h, k). Aqui o vértice V = (1, −1) e a concavidade é para cima :
= (x − h) 2 com eixo vertical e vértice
In [14]: plot_implicit(Eq((x-1)**2, 4*(y+1)), (x,-2.5,4.5), (y,-1.5,2.5),
title=u'Parábola transladada', xlabel='x', ylabel='y');
Basta mudar o sinal de p para a concavidade da parábola ser para baixo. O vértice
V = (1, 1) :
25-04-2013 19:22
IPython Notebook
6 de 9
http://127.0.0.1:8888/382ee715-1541-46b1-8ebe-d2301569e859...
In [15]: plot_implicit(Eq((x-1)**2, -4*(y-1)), (x,-2.5,4.5), (y,-2.5,1.5),
title=u'Parábola com concavidade para baixo', xlabel='x', ylabel='y');
Hipérbole na forma implícita, definida em termos da equação reduzida
x2
a2
−
y2
b2
= 1 ou
−x 2
b2
+
y2
a2
=1:
Hipérbole com eixo real horizontal, centro na origem (0, 0), a
= b = 1:
In [16]: plot_implicit(Eq(x**2 - y**2, 1), (x,-3.5,3.5), (y,-3.5,3.5),
title=u'Hipérbole com eixo real horizontal', xlabel='x', ylabel='y');
Hipérbole com eixo real vertical, centro na origem (0, 0), a
= 1e b = 2:
25-04-2013 19:22
IPython Notebook
7 de 9
http://127.0.0.1:8888/382ee715-1541-46b1-8ebe-d2301569e859...
In [17]: plot_implicit(Eq(-x**2/2**2 + y**2, 1), (x,-8.5,8.5), (y,-3.5,3.5),
title=u'Hipérbole com eixo real vertical', xlabel='x', ylabel='y');
Plano e Superfícies Quádricas :
Carregando a função gráfica "plot3d" do SymPy 0.7.2 que usa PyLab de forma fácil para criar superfícies de funções de 2
variáveis :
In [18]: from sympy.plotting import plot3d
Porém com "plot3D" somente se pode visualizar planos ou superfícies quádricas definidas com funções explícitas, p. e.,
z = f(x, y) :
Plano definido por z
= ax + by + c :
In [19]: plot3d(x+3*y, (x,-2,2), (y,-2,2), title=u'Plano', xlabel='x', ylabel='y');
25-04-2013 19:22
IPython Notebook
8 de 9
http://127.0.0.1:8888/382ee715-1541-46b1-8ebe-d2301569e859...
Parabolóide Elíptico :
O parabolóide elíptico é definido, p. e., por
y2
x2
+
= cz
a2
b2
ao longo do eixo z. Se a e b são iguais, temos o caso particular de parabolóide circular.
In [20]: plot3d(x**2+y**2/2**2, (x,-2,2), (y,-4,4),
title=u'Parabolóide elíptico', xlabel='x', ylabel='y');
Parabolóide Hiperbólico (figura de sela) :
O parabolóide hiperbólico é definido, p. e., por
−
y2
x2
+
= cz
a2
b2
ao longo do eixo z.
25-04-2013 19:22
IPython Notebook
9 de 9
http://127.0.0.1:8888/382ee715-1541-46b1-8ebe-d2301569e859...
In [21]: plot3d(-x**2+y**2, (x,-2,2), (y,-2,2),
title=u'Parabolóide hiperbólico', xlabel='x', ylabel='y');
25-04-2013 19:22
Download