Resolver problemas da Física
Resolver problemas da Física
Utilizando métodos Computacionais
Conceitos
Conceitos
Conceitos
Conceitos
Conceitos
Conceitos
EDVAC, 1945
Conceitos
Conceitos
Conceitos
Conceitos
Conceitos
Conceitos
Conceitos
Conceitos
Conceitos
CERN, LHC
Conceitos
CERN, LHC Servers
Atualidades
Atualidades
Atualidades
Atualidades
Atualidades
Atualidades
Atualidades
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")
Atualidades
Atualidades
Atualidades
Atualidades
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
Atualidades
Atualidades
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()
Atualidades
Ferramentas
Ferramentas
Ferramentas
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
Educação
Educação
Educação
Educação
Educação
Educação
Educação