http://www-personal.umich.edu/~mejn/computational-physics/
O primeiro passo é aprender a programar em python
Python é uma linguagem de alto nível, poderosa e muito abrangente
vamos nos limitar aos aspectos de computação em física
modulos de python muito específicos, mesmo para física não serão abordados
existe vasta documentação online
um programa em python é como outro qualquer, uma lista de instruções
precisamos saber como e onde passar essas instruções
python pode ser obtido de várias formas, basta um Google para verificar
linux em geral já vem com uma versão básica instalada
duas vertentes principais 2.7 e 3.0
funciona com um conjunto de módulos. Muitos módulos existem: Scipy, Astropy, Pandas etc
Existem repositórios que facilitam manter versões atualizadas
Neste curso vamos usar o Anaconda: https://www.continuum.io/downloads
Ele contém todos os principais pacotes científicos do python
é recomendável que se deixe esta instalação como a distribuição principal de python em sua máquina, especialmente em linux
ambiente onde faremos boa parte da escrita e execução dos programas
aqui usaremos o Spyder: https://github.com/spyder-ide/spyder
este ambiente é instalado automaticamente com o anaconda
Para testar rapidamente o Spyder digite o seguinte:
In [1]:
print "Hello World!"
In [2]:
x=1
# vendo os valores de x
print (x)
print x
x
Out[2]:
note que o ambinete salva um arquivo com terminação .py que é o padrão da linguagem python
um programa .py pode ser executado em linha de comando. Por exemplo, caso voce tenha um programa chamado teste.py na linha de comando basta fazer "python teste.py" e ele será executado
In [3]:
%%latex
$c = \sqrt{a^2 + b^2}$
In [5]:
#esse comando inclui os plots na pagina do notebook
%matplotlib inline
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 3*np.pi, 500)
plt.plot(x, np.sin(x**2))
plt.title('Um grafico simples')
plt.show()
In [7]:
from matplotlib.pyplot import figure, show, legend, ylabel
# cria uma figura
fig1 = figure()
# adiciona um plano e plota os dados
ax1 = fig1.add_subplot(111)
line1, = ax1.plot([1,3,4,5,2], 'o-',label='line1')
ylabel("Dados eixo Y (esquerda)")
#agora, o segundo plano que compartilha o eixo x com a anterior
ax2 = fig1.add_subplot(111, sharex=ax1, frameon=False)
line2, = ax2.plot([10,40,20,30,50], 'xr-',label='line2')
ax2.yaxis.tick_right()
ax2.yaxis.set_label_position("right")
ylabel("Dados eixo Y (direita)")
# for the legend, remember that we used two different axes so, we need
# to build the legend manually
legend([line1, (line2, line2)], ["A", "B"])
show()
In [7]:
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2 # 0 to 15 point radiuses
plt.scatter(x, y, s=area, alpha=0.5, c=area)
plt.title('Um grafico XY simples')
plt.show()
In [8]:
from IPython.display import YouTubeVideo
YouTubeVideo("oYTs9HwFGbY")
Out[8]:
In [1]:
import numpy as np
from mayavi import mlab
x, y, z = np.ogrid[-10:10:50j, -10:10:50j, -10:10:50j]
s = np.sin(x*y*z)/(x*y*z)
src = mlab.pipeline.scalar_field(s)
mlab.pipeline.iso_surface(src, contours=[s.min()+0.1*s.ptp(), ], opacity=0.3)
mlab.pipeline.iso_surface(src, contours=[s.max()-0.1*s.ptp(), ],)
mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(s),
plane_orientation='x_axes',
slice_index=20)
mlab.show()
In [ ]: