Física Computacional
O que é Física Computacional?
Física + Computação
Física + Computação
Resolver problemas da Física
Física + Computação
Resolver problemas da Física
Utilizando métodos Computacionais
Física Computacional
Conceitos
Física Computacional
Conceitos
Ciência
Física Computacional
Conceitos
Ciência
Tecnologia
Física Computacional
Conceitos
Ciência
Tecnologia
Ferramentas
Física Computacional
Conceitos
Ciência
Tecnologia
Ferramentas
Física Computacional
Conceitos
EDVAC, 1945
Física Computacional
Conceitos
Realização de muitos cálculos por segundo
Física Computacional
Conceitos
Porém, atualmente é possível realizar quadrilhões de operações por segundo
Física Computacional
Conceitos
Paralelamente. (Grid Computing)
Física Computacional
Conceitos
Com isso, criam-se novas possibilidades:
Física Computacional
Conceitos
Com isso, criam-se novas possibilidades:
Simulação de fenômenos subatômicos, metereológicos, galáticos
Física Computacional
Conceitos
Com isso, criam-se novas possibilidades:
Simulação de fenômenos subatômicos, metereológicos, galáticos
Para criar essas simulações são necessários conhecimentos em Física e em Computação
Física Computacional
Conceitos
Com isso, criam-se novas possibilidades:
Simulação de fenômenos subatômicos, metereológicos, galáticos
O conhecimento em Computação é utilizado como ferramenta para os avanços tanto em Física teórica como experimental, ao mesmo tempo em que conceitos da Física são aplicados à Teoria da computação.
Física Computacional
Conceitos
Com isso, criam-se novas possibilidades:
Simulação de fenômenos subatômicos, metereológicos, galáticos
Ciência
Tecnologia
Ferramentas
Física Computacional
Conceitos
CERN, LHC
Física Computacional
Conceitos
CERN, LHC Servers
Física Computacional
Atualidades
Hoje a Física Computacional não se resume a apenas métodos computacionais para cálculos físicos
Física Computacional
Atualidades
A Física Computacional também faz uso de métodos Computacionais para criação de novas teorias e tecnologias
Física Computacional
Atualidades
Exemplos de novos métodos Computacionais na Física:
Física Computacional
Atualidades
Exemplos de novos métodos Computacionais na Física:
Reconhecimento de padrões para auxílio na formulação de novas Hipóteses
Física Computacional
Atualidades
Exemplos de novos métodos Computacionais na Física:
Visão Computacional
Física Computacional
Atualidades
Além dos antigos (porém ainda usados) métodos:
Física Computacional
Atualidades
Além dos antigos (porém ainda usados) métodos:
class ode():
def __init__(self, f, jac=None):
self.stiff = 0
self.f = f
self.jac = jac
self.f_params = ()
self.jac_params = ()
self._y = []
@property
def y(self):
return self._y
def set_initial_value(self, y, t=0.0):
"""Set initial conditions y(t) = y."""
if isscalar(y):
y = [y]
n_prev = len(self._y)
if not n_prev:
self.set_integrator('') # find first available integrator
self._y = asarray(y, self._integrator.scalar)
self.t = t
self._integrator.reset(len(self._y), self.jac is not None)
return self
def set_integrator(self, name, **integrator_params):
integrator = find_integrator(name)
if integrator is None:
# FIXME: this really should be raise an exception. Will that break
# any code?
warnings.warn('No integrator name match with %r or is not '
'available.' % name)
else:
self._integrator = integrator(**integrator_params)
if not len(self._y):
self.t = 0.0
self._y = array([0.0], self._integrator.scalar)
self._integrator.reset(len(self._y), self.jac is not None)
return self
def integrate(self, t, step=0, relax=0):
"""Find y=y(t), set y as an initial condition, and return y."""
if step and self._integrator.supports_step:
mth = self._integrator.step
elif relax and self._integrator.supports_run_relax:
mth = self._integrator.run_relax
else:
mth = self._integrator.run
try:
self._y, self.t = mth(self.f, self.jac or (lambda: None),
self._y, self.t, t,
self.f_params, self.jac_params)
except SystemError:
# f2py issue with tuple returns, see ticket 1187.
raise ValueError('Function to integrate must not return a tuple.')
return self._y
def successful(self):
"""Check if integration was successful."""
try:
self._integrator
except AttributeError:
self.set_integrator('')
return self._integrator.success == 1
def set_f_params(self, *args):
"""Set extra parameters for user-supplied function f."""
self.f_params = args
return self
def set_jac_params(self, *args):
"""Set extra parameters for user-supplied function jac."""
self.jac_params = args
return self
def set_solout(self, solout):
if self._integrator.supports_solout:
self._integrator.set_solout(solout)
else:
raise ValueError("selected integrator does not support solout,"
+ " choose another one")
Equações Diferenciais Ordinárias
Física Computacional
Atualidades
Além dos antigos (porém ainda usados) métodos:
Transformada de Fourier
Física Computacional
Atualidades
Além dos antigos (porém ainda usados) métodos:
Transformada de Fourier (ex: .WAVE, .MP3)
Física Computacional
Atualidades
Além dos antigos (porém ainda usados) métodos:
Transformada de Fourier (ex: .WAVE, .MP3)
Física Computacional
Atualidades
Além dos antigos (porém ainda usados) métodos:
Transformada de Fourier (ex: .WAVE, .MP3)
def _raw_fft(a, n=None, axis=-1, init_function=fftpack.cffti,
work_function=fftpack.cfftf, fft_cache = _fft_cache ):
a = asarray(a)
if n is None:
n = a.shape[axis]
if n < 1:
raise ValueError("Invalid number of FFT data points (%d) specified." % n)
try:
wsave = fft_cache.setdefault(n, []).pop()
except (IndexError):
wsave = init_function(n)
if a.shape[axis] != n:
s = list(a.shape)
if s[axis] > n:
index = [slice(None)]*len(s)
index[axis] = slice(0, n)
a = a[index]
else:
index = [slice(None)]*len(s)
index[axis] = slice(0, s[axis])
s[axis] = n
z = zeros(s, a.dtype.char)
z[index] = a
a = z
if axis != -1:
a = swapaxes(a, axis, -1)
r = work_function(a, wsave)
if axis != -1:
r = swapaxes(r, axis, -1)
fft_cache[n].append(wsave)
return r
Física Computacional
Atualidades
Além dos antigos (porém ainda usados) métodos:
Redes Neurais Artificiais (ML/AI problem)
Física Computacional
Atualidades
Além dos antigos (porém ainda usados) métodos:
Redes Neurais Artificiais (ML/AI problem)
import math
from numpy import random, array
from random import choice
import matplotlib.pyplot as plt
class Perceptron():
"""
this is the thereshold to activate the unit
"""
def activation(self,x):
return 1/(1 + math.exp(-x))
def linear_combination(self, X):
total = 0
for i in xrange(len(self.weights)):
total += self.weights[i] * X[i]
return total
def unit_output(self, X):
return self.activation(self.linear_combination(X))
def train(self, training_data, epochs):
self.learning_rate = 0.5
self.errors = []
# initializing weights
self.weights = random.rand(len(training_data[1][0]))
for i in xrange(epochs):
X, y = choice(training_data)
# > calculate output with current weight
output = self.unit_output(X)
# > calculate error rate (t - o)
error_rate = y - output
self.errors.append(error_rate)
print 'the X: ', X
print 'output: ',output
print 'correct target: ', y
# > apply learning rule which will update weights
self.weights += self.learning_rate * error_rate * X
def predict(self,X):
y = self.unit_output(X)
return y
training_data = [
(array([0,0,1]), 0),
(array([0,1,1]), 0),
(array([1,0,1]), 0),
(array([1,1,1]), 1),
]
p = Perceptron()
p.train(training_data, 2000)
print p.predict([1,0,1])
plt.plot(p.errors)
plt.ylabel('errors')
plt.xlabel('epochs')
plt.show()
Física Computacional
Atualidades
Além dos antigos (porém ainda usados) métodos:
Redes Neurais Artificiais (ML/AI problem)
Física Computacional
Ferramentas
Hoje em dia há diversas ferramentas de alta performance para lidar com o processamento de alto nível da Física Computacional
Física Computacional
Ferramentas
Linguagens
Física Computacional
Ferramentas
Linguagens
Ops/Structures
-
Antigamente vista como uma linguagem "lenta"
-
O Global Interpreter Lock(GiL) causa a lentidão
-
hoje em dia há soluções para contornar o GiL e aumentar a performance do Python, utilizando paralelismo e concorrência
-
Velocidade de desenvolvimento incomparável
-
Framework do Python para Computação Científica
-
Performance excelente, pois faz chamadas diretas para funções em C e Fortran
-
Utilizado, principalmente, para distribuição de computações
-
Melhor ferramenta, atualmente, para computação distribuída. Está sendo usado pela NASA, Facebook, Twitter, Netflix e mais
-
Utilizado, principalmente, para distribuição de computações
-
Melhor ferramenta, atualmente, para computação distribuída. Está sendo usado pela NASA, Facebook, Twitter, Netflix e mais
points = spark.textFile(...).map(parsePoint).cache()
w = numpy.random.ranf(size = D) # current separating plane
for i in range(ITERATIONS):
gradient = points.map(
lambda p: (1 / (1 + exp(-p.y*(w.dot(p.x)))) - 1) * p.y * p.x
).reduce(lambda a, b: a + b)
w -= gradient
print "Final separating plane: %s" % w
-
Utilizado, principalmente, para distribuição de computações
-
Melhor ferramenta, atualmente, para computação distribuída. Está sendo usado pela NASA, Facebook, Twitter, Netflix e mais
Física Computacional
Educação
Muitas Universidades já disponibilizam graduação em Física Computacional
Física Computacional
Educação
Muitas Universidades já disponibilizam graduação em Física Computacional
O curso aborda Física, Matemática, Linguística, Computação e Neurociência
Física Computacional
Educação
Muitas Universidades já disponibilizam graduação em Física Computacional
O Profissional pode trabalhar em modelagem computacional, criação de simulações, predições, implementação de novas tecnologias e muito mais.
Física Computacional
Educação
Os profissionais da Física computacional, por possuírem uma formação de natureza interdisciplinar, muitas vezes participam de pesquisas envolvendo outras áreas do conhecimento além da Física e da Ciência da computação
Física Computacional
Educação
Alguns exemplos de áreas nas quais os Físicos Computacionais podem trabalhar:
Atuação em universidades e institutos de pesquisa científica básica ou aplicada nas áreas de física ou multidisciplinares
Física Computacional
Educação
Alguns exemplos de áreas nas quais os Físicos Computacionais podem trabalhar:
Atuação na indústria automobilística, aeronáutica e naval. A simulação computacional pode ajudar no desenvolvimento de veículos de melhor performance aerodinâmica, enérgica e ecológica
Física Computacional
Educação
Alguns exemplos de áreas nas quais os Físicos Computacionais podem trabalhar:
Atuação em empresas fabricantes de softwares e games. O conhecimento em Física pode levar um bom Engenheiro de Software a produzir softwares que simulem fenômenos físicos ou produzir games mais próximos da realidade.
Obrigado!
Universidade Salvador
Ciência da Computação
Física Aplicada à Computação
Membros: Lucas Santos, Rodrigo Araújo, Igor Cordeiro, Rafael de Andrade
Fontes
-
http://www.infoescola.com/fisica/fisica-computacional/
-
http://cursos.ifsc.usp.br/index-fc-curso.php
-
http://paginas.fe.up.pt/~mei04021/geb/geb_visao_geral.php
-
http://tecnoblog.net/56910/
-
http://g1.globo.com/tecnologia/noticia/2010/11/supercomputador-instalado-no-brasil-e-o-29-mais-poderoso-do-mundo.html
-
http://www.icex.uff.br/icex/?page_id=62
Física Computacional
By Rodrigo Araújo
Física Computacional
- 1,945