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.