Author: Lawrence Agbezuge (2018), Private consultant.
Use a combination of the trapezoidal rule and Gauss quadrature to integrate
f(x) in the interval x=[a,b].
The data for f(x) is provided in tabular or array form as (x,y), and it does not
have to be equally spaced in x.
Between successive data points, a 3-point Gauss quadrature is used.
This makes it possible to obtain reasonably accurate results for the integral
for f(x) when data points are not equally spaced in x.
z = gTrapz(x,y)
(x,y) tabulated data for f(x)
z (the required approximate integral)
Example: Copy and paste the following code to the command window.
f=@(x) x.*cos(x) + (x.^2).*sin(x);
x = [a:pi/20:0.2*pi (0.2*pi+pi/50):pi/50:0.8*pi (0.8*pi+pi/20):pi/20:b]; y=f(x);
plot(x,y,'kd-'); xlabel('x'); ylabel('f(x)'); grid
Iapprox = gTrapz(x,y) % obtained by gTrapz
Imatlab = integral(f,a,b) % obtained by Matlab's integral (quad) function
Lawrence Agbezuge (2019). Integrated trapezoidal and Gauss quadrature (https://www.mathworks.com/matlabcentral/fileexchange/72521-integrated-trapezoidal-and-gauss-quadrature), MATLAB Central File Exchange. Retrieved .