
function [int,h] = cavalieri_simpson (f,a,b,m)
%cavalieri_simpson Metodo dei cavalieri_simpson composto
%
% [int,h] = cavalieri_simpson (f,a,b,m);
%
% Dati di ingresso:
% f: funzione integranda
% a: estremo sinistro dell'intervallo di integrazione
% b: estremo destro dell'intervallo di integrazione
% m: numero di sottointervalli
%
% Dati di uscita:
% int: approssimazione dell'integrale definito
% h: passo di integrazione

h=(b-a)/m;             % AMPIEZZA INTERVALLO.
x=a:(h/2):b; x=x';     % NODI INTEGRAZIONE.
w=ones(2*m+1,1);           % PESI INTEGRAZIONE.
w(3:2:2*m-1,1)=2*ones(length(3:2:2*m-1),1);
w(2:2:2*m,1)=4*ones(length(2:2:2*m),1);
w=w*h/6;

h=h/2; % passo di integrazione, visto come distanza tra nodi successivi,
       % che corrisponde all'ampiezza del semiintervallo.
fx=feval(f,x);
int=w'*fx;
