 |
Uncertainty (error) propogation using a custom Monte Carlo method
Source code name: "errors_mc.py"
Programming language: Python
Topic: Measurements/ErrorPropogation
DMelt Version 1. Last modified: 05/09/2015. License: Pro
https://datamelt.org/code/cache/errors_mc_8364.py
To run this script using the DMelt IDE,
copy the above URL link to the menu [File]→[Read script from URL] of the DMelt IDE.
from java.lang import Math
from jhplot import *
from java.util import Date;
class MyFunc(FNon):
def value(self, x):
y=x[0]*x[0]*Math.sqrt(x[0])*self.p[0]+self.p[1]
if (x[0]<4): y=0
return y
pl = MyFunc("test",1,2)
print "f(2)= ",pl.value([2])
print pl.numberOfParameters()
print pl.dimension()
print pl.parameterNames().tolist()
p0=100
p1=20
p0_err=10
p1_err=2
from cern.jet.random import Normal
from cern.jet.random.engine import MersenneTwister
from hep.aida.ref.histogram import Histogram1D
engine=MersenneTwister(Date())
rd0=Normal(p0, p0_err,engine)
rd1=Normal(p1, p1_err,engine)
xval=10;
pl.setParameter("par0",p0+4*p0_err)
pl.setParameter("par1",p1-4*p1_err)
x1=pl.value([xval])
pl.setParameter("par0",p0+4*p0_err)
pl.setParameter("par1",p1+4*p1_err)
x2=pl.value([xval])
pl.setParameter("par0",p0-4*p0_err)
pl.setParameter("par1",p1-4*p1_err)
x3=pl.value([xval])
pl.setParameter("par0",p0-4*p0_err)
pl.setParameter("par1",p1+4*p1_err)
x4=pl.value([xval])
z=P0D("data")
z.add(x1)
z.add(x2)
z.add(x3)
z.add(x4)
hh=H1D("error",100,z.getMin(),z.getMax())
for i in range(10000):
p0n=rd0.nextDouble()
p1n=rd1.nextDouble()
pl.setParameter("par0",p0n)
pl.setParameter("par1",p1n)
#print pl.parameters()
ff=pl.value([xval])
hh.fill(ff)
all=hh.getStat()
err=all['standardDeviation']
pl.setParameter("par0",p0)
pl.setParameter("par1",p1)
val=pl.value([xval])
print "val=",val," +- ",err
c1=HPlot()
c1.visible()
c1.setAutoRange()
c1.draw(hh)
You see the box below because you did not login.