% Main script to evaluate the integral
a = 0; % lower limit
b = pi/2; % upper limit
n = 100; % number of intervals

% Call the composite trapezoidal function
I_numeric = composite_trap('f', a, b, n);
disp(['Numerical integral using composite trapezoidal method: ', num2str(I_numeric)]);

% Calculate the analytic value using MATLAB's integral function
analytic_value = integral(@(x) x .* sin(x), a, b);
disp(['Analytic integral: ', num2str(analytic_value)]);

% Calculate the percentage error
percentage_error = abs((I_numeric - analytic_value) / analytic_value) * 100;
disp(['Percentage error: ', num2str(percentage_error), '%']);