from numpy import * def midpoint(f, a, b, n): """ f - function a - start point of interval b - end point of interval n - number of subintervals """ h = (b-a)/n; s = 0; for i in range(1,n+1): xi_12 = a + (i-0.5)*h; s += f(xi_12); s = s*h; return s; if __name__ == "__main__": # Ex 12.2.4 s = midpoint(exp, a=0, b=1, n=10); n = int(1/sqrt(24*1e-10/exp(1)))+1; s = midpoint(exp, 0,1,n); print("Midpoint: %g" % (s)); print("Exact: %g" % (exp(1)-1));