Advertisement
reeps

montecarlo1

Mar 30th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.99 KB | None | 0 0
  1. from math import cos, sqrt
  2. from ROOT import gRandom, TF2
  3.  
  4. ax = 0.01
  5. ay = 0
  6. bx = 1
  7. by = 1
  8. m = 10
  9. N = 10000
  10. n = 1000
  11.  
  12. def f(x, y):
  13.     return 1.0 / (x ** 3 * (y + (cos(x)) ** 2 / 3))
  14. def fdraw(x, p):
  15.     return f(x[0], x[1])
  16. def integrate(f, xlim, ylim):
  17.     xleft, xright = xlim
  18.     yleft, yright = ylim
  19.     x = gRandom.Uniform(xleft, xright)
  20.     y = gRandom.Uniform(yleft, yright)
  21.     return (xright - xleft) * (yright - yleft) * f(x,y)
  22.  
  23. res = []
  24.  
  25. for i in range(0,m):
  26.     cres = []
  27.     for j in range(0, n):
  28.     r = integrate(f, (ax,bx), (ay, by))
  29.     res.append(r)
  30.     cres.append(r)
  31.     avg = sum(res) / len(res)
  32.     cavg = sum(cres) / len(cres)
  33.     var = (sum(r ** 2 for r in res) - avg ** 2) / len(res)
  34.     cvar = (sum(r ** 2 for r in cres) - cavg ** 2) / len(cres)
  35.     print "iteration number", i + 1
  36.     print "cavg", cavg, "crms",  sqrt(cvar / len(cres))
  37.     print "avg", avg, "rms", sqrt(var / len(res))
  38.  
  39.  
  40. t = TF2("f", fdraw, ax, bx, ay, by, 1)
  41. t.Draw("surf")
  42. raw_input()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement