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