def _init_func(self): self.sys = monte.gsl_monte_function(g, None, 1) self.r = pygsl.rng.mt19937_1999() self.xl = [ 0, ] self.xu = [ 1, ] self.exact = 0.5 self.accepted_error = 0.1
def qint(self): """Evaluates the q integral via Monte Carlo""" self._ncalls = 0 # Integration variables are: z, zs, mu bounds_lo = [ 0, 0, -1] bounds_hi = [ 20, 20, +1] qfunc = gsl_monte_function(self._qint_numerator, None, 3) qnum = vegas.integrate(qfunc, bounds_lo, bounds_hi, 20000, rng) qdenom = np.float64(self.density.fNi) return qnum/qdenom
#!/usr/bin/env python import pygsl._numobj as Numeric import pygsl.monte as monte import pygsl.rng import unittest def g(k, params): return k[0] sys = monte.gsl_monte_function(g, None, 1) r = pygsl.rng.mt19937_1999() xl = [ 0, ] xu = [ 1, ] exact = 0.5 accepted_error = 0.2 s = monte.plain(1) s.init() calls = 100 res, err = s.integrate(sys, xl, xu, calls, r) assert (Numeric.absolute(res - exact) < accepted_error)
exact = 1.3932039296856768591842462603255 calls = 50000 r = pygsl.rng.mt19937_1999() xl = [ 0, 0, 0 ] M_PI = numx.pi xu = [ M_PI, M_PI, M_PI ] A = 1.0 / numx.pi**3 def g(k, params): numx.cos(k,k) return A / (1.0 - numx.multiply.reduce(k)) G = monte.gsl_monte_function(g, None, 3) def display_results (title, result, error): print "%s ==================" % title print "result = % .6f" % result print "sigma = % .6f" % error print "exact = % .6f" % exact t = (result - exact, numx.absolute(result - exact) / error) print "error = % .6f = %.1g sigma" % t def run_plain(): s = monte.plain(3) s.init() res, err = s.integrate(G, xl, xu, calls, r) display_results ("plain", res, err)
r = pygsl.rng.mt19937_1999() xl = [0, 0, 0] M_PI = numx.pi xu = [M_PI, M_PI, M_PI] A = 1.0 / numx.pi ** 3 def g(k, params): numx.cos(k, k) return A / (1.0 - numx.multiply.reduce(k)) G = monte.gsl_monte_function(g, None, 3) def display_results(title, result, error): print "%s ==================" % title print "result = % .6f" % result print "sigma = % .6f" % error print "exact = % .6f" % exact t = (result - exact, numx.absolute(result - exact) / error) print "error = % .6f = %.1g sigma" % t def run_plain(): s = monte.plain(3) s.init() res, err = s.integrate(G, xl, xu, calls, r)
#!/usr/bin/env python import pygsl._numobj as Numeric import pygsl.monte as monte import pygsl.rng import unittest def g(k, params): return k[0] sys = monte.gsl_monte_function(g, None, 1) r = pygsl.rng.mt19937_1999() xl = [ 0, ] xu = [ 1, ] exact = 0.5 accepted_error = 0.2 s = monte.Plain(1) s.init() calls = 100 status, res, err = s.integrate(sys, xl, xu, calls, r) assert(Numeric.absolute(res - exact) < accepted_error)