- robertocolistete.net

Propaganda
IPython Notebook
1 de 2
http://127.0.0.1:8889/5e602348-1849-42ab-88a3-3a90f8e64648/...
Usando SymPy com gráficos embutidos e saída tipografada no IPython
Notebook
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 02/2013.
Para que os gráficos sejam embutidos no IPython notebook, deve-se executar primeiro o comando mágico "%pylab inline" para se ter PyLab (MatPlotLib + NumPy) em
modo interativo e todos os gráficos gerados embutidos em células :
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)'.
Há várias formas de carregar o módulo SymPy (Symbolic Python, um CAS - Computer Algebra System).
Aqui usamos "from import *" que importa todos os objetos de modulo" para o contexto global do Python
In [2]: from sympy import *
Graças ao SymPy, os objetos/variáveis Python podem ter conteúdo simbólico, porém eles precisam ser declarados como simbólicos, p.e., usando "symbols()" para
definir x 0 , v 0 e a :
In [3]: x0, v0, a = symbols('x0 v0 a')
Outra alternativa é usar o submódulo "sympy.abc" que define como símbolos os objetos "a...z" e vários gregos (alpha, beta, etc).
Podemos importar somente aqueles objetos que queremos que sejam simbólicos, p.e., x, y,
zet:
In [4]: from sympy.abc import x, y, z, t, alpha, beta
Um exemplo simples de cálculo simbólico, onde x e y não tem valor definido, e "expand()" é função que expande uma expressão :
In [5]: expand((x**alpha+y**beta)**3)
Out[5]:
x**(3*alpha) + 3*x**(2*alpha)*y**beta + 3*x**alpha*y**(2*beta) + y**(3*beta)
A expressão de cinemática de MRUV em 1 dimensão :
In [6]: x0 + v0*t + a*t**2/2
Out[6]:
a*t**2/2 + t*v0 + x0
Note acima que a saída não é bidimensional (p.e., expoentes não estão na linha de cima), nem tipografada.
Para obtermos saída tipografada e bidimensional, no SymPy 0.7.1 deve-se usar o comando mágico "%load_ext sympyprinting" (que carrega a extensão sympyprinting),
no SymPy 0.7.2 mais recente (10/2012) usa-se "init_printing()" :
In [7]: %load_ext sympyprinting
Os mesmos resultado agora são mostrados tipografados:
In [8]: expand((x**alpha+y**beta)**3)
Out[8]:
x 3α + 3x 2α y β + 3x α y 2β + y 3β
19-04-2013 22:57
IPython Notebook
2 de 2
http://127.0.0.1:8889/5e602348-1849-42ab-88a3-3a90f8e64648/...
In [9]: x0 + v0*t + a*t**2/2
Out[9]:
1 2
at + t v 0 + x 0
2
Vários exemplos usando SymPy, com resultados tipografados :
In [10]: Limit(sin(beta*x)/x,x,0)
Out[10]:
lim(
x→0
sin(βx)
)
x
In [11]: limit(sin(beta*x)/x,x,0)
Out[11]:
β
In [12]: Derivative(x*cos(alpha*x)**3,x)
Out[12]:
∂
(xcos 3 (αx))
∂x
In [13]: diff(x*cos(alpha*x)**2,x)
Out[13]:
−2αx sin(αx) cos(αx) + cos 2 (αx)
In [14]: Integral(sin(alpha*x)**10,x)
Out[14]:
∫ sin 10 (αx) dx
In [15]: expand(integrate(sin(alpha*x)**10,x))
Out[15]:
sin 9 (αx) cos(αx)
63
9 sin 7 (αx) cos(αx)
21 sin 5 (αx) cos(αx)
21 sin 3 (αx) cos(αx)
63 sin(αx) cos(αx)
x−
−
−
−
−
256
10α
80
α
160
α
128
α
256
α
19-04-2013 22:57
Download