Cookbook¶
Tell probfit to use my analytical integral¶
probfit checks for a method integrate(bound, nint, *arg)
.
If such method is available it calls that method to compute definite integral.
If not it falls back to simpson3/8 integration (cubic approximation).
from probfit import integrate1d
def line(x, m, c):
return m*x+c
# compute integral of line from x=(0,1) using 10 intevals with m=1. and c=2.
# all probfit internal use this
# no integrate method available probfit use simpson3/8
print integrate1d(line, (0,1), 10, (1.,2.) )
# Let us illustrate the point by forcing it to have integral that's off by
# factor of two
def wrong_line_integral(bound, nint, m, c):
a, b = bound
return 2*(m*(b**2/2.-a**2/2.)+c*(b-a)) # I know this is wrong
line.integrate = wrong_line_integral
# line.integrate = lambda bound, nint, m, c: blah blah # this works too
# yes off by factor of two
print integrate1d(line, (0,1), 10, (1.,2.))