import numpy as np # This function provides the midpoint quadrature rule. def Midpoint( a, b, N, f ) : # [a,b] : inteval # N : number of subintervals # f : fonction to integrate using the midpoint rule # size of the subintervals H = (b - a) / N # quadrature nodes x = np.linspace(a+H/2, b-H/2, N) # approximate integral return H * np.sum( f(x) ); # This function provides the trapezoidal quadrature rule. def Trapezoidal( a, b, N, f ) : # [a,b] : inteval # N : number of subintervals # f : fonction to integrate using the trapezoidal rule # size of the subintervals H = (b - a) / N # quadrature nodes x = np.linspace(a, b, N+1) # approximate integral return H/2 * ( f(a) + f(b) ) + H * sum( f(x[1:N]) ); # This function just provides the Simpson quadrature rule. def Simpson( a, b, N, f ) : # [a,b] : inteval # N : number of subintervals # f : fonction to integrate using the Simpson rule # size of the subintervals H = (b - a) / N # points defining intervals x = np.linspace(a, b, N+1) # left quadrature nodes xl = x[0:-1] # right quadrature nodes xr = x[1:] # middle quadrature nodes xm = (xl+xr)/2 # approximate integral return H/6 * sum( f(xl) + 4*f(xm) + f(xr) );